From 9b16cb4ce4975745794c94b5d7e8ec975e515aca Mon Sep 17 00:00:00 2001 From: Oliver Schinagl Date: Wed, 24 Nov 2004 15:33:33 +0000 Subject: smart media init function is now macro proc. we now load all data in 4 stages into RAM. we hardcore init various arrays for skindata. --- Graphic_Equalizer/src/smartmedia.hcc | 93 ++++++++++++++++++++++++++++-------- 1 file changed, 72 insertions(+), 21 deletions(-) diff --git a/Graphic_Equalizer/src/smartmedia.hcc b/Graphic_Equalizer/src/smartmedia.hcc index 5e7e250..9cbc986 100644 --- a/Graphic_Equalizer/src/smartmedia.hcc +++ b/Graphic_Equalizer/src/smartmedia.hcc @@ -29,7 +29,8 @@ #include "debug.hch" #endif - +#include "eventhandler_shared.hch" +#include "display.hch" /* FIXME: temporary include, needs to be moved to 'init' */ /*! \fn void smartmedia_init(void); * \brief We here initialize the Smart Media card and verify wether the @@ -40,16 +41,17 @@ * \return We return 0 on success, 1 on error. * \retval unsigned 1 */ -unsigned 1 smartmedia_init(void) { - unsigned 1 retval; - +macro proc smartmedia_init(result) { /* * Firstly we enable both the CPLD and the SmartMedia. */ RC200CPLDEnable(); - RC200SmartMediaInit(&retval); + RC200SmartMediaInit(&result); - return retval; + if (result) { + RC200SmartMediaReset(&result); + RC200SmartMediaInit(&result); + } } /* --- smartmedia_init() --- */ @@ -62,7 +64,7 @@ unsigned 1 smartmedia_init(void) { * \return void * \retval void */ -macro proc smartmedia_loaddata(RAM_BANK0) { +macro proc smartmedia_loaddata(skindata, RAM_BANK0) { /* * Setup RAM Handle, and determin maximum Data and Address widths */ @@ -73,6 +75,7 @@ macro proc smartmedia_loaddata(RAM_BANK0) { unsigned 27 smartmedia_address, smartmedia_address_mask; unsigned AW address; unsigned 8 mask, r, g, b; + unsigned 3 stage; unsigned 1 result; #if HAVE_DEBUG @@ -88,18 +91,28 @@ macro proc smartmedia_loaddata(RAM_BANK0) { */ smartmedia_address = SMARTMEDIA_ADDRESS_SKIN_START; smartmedia_address_mask = SMARTMEDIA_ADDRESS_SKINMASK_START; + stage = STAGE_LOAD_SKIN; /* * We start with the address of the skin, and do the loop until we have * done the end of the help. */ - for (address = ADDRESS_SKIN_START; address != (ADDRESS_SKIN_END +1); address++) { + for (address = ADDRESS_SKIN_START; address != (ADDRESS_PRESET_RESET_END +1); address++) { /* * Once we are done with the loading of our skin, we need to * change the smartmedia start addresses. */ - if (address == ADDRESS_SKIN_END) { + if (ADDRESS_HELP_START == address) { smartmedia_address = SMARTMEDIA_ADDRESS_HELP_START; smartmedia_address_mask = SMARTMEDIA_ADDRESS_HELPMASK_START; + stage = STAGE_LOAD_HELP; + } + if (ADDRESS_GRAPHMASK_START == address) { + smartmedia_address_mask = SMARTMEDIA_ADDRESS_GRAPHMASK_START; + stage = STAGE_LOAD_GRAPH; + } + if (ADDRESS_PRESET_DEMO_START == address) { + smartmedia_address_mask = SMARTMEDIA_ADDRESS_PRESET_DEMO_START; + stage = STAGE_LOAD_PRESET; } /* @@ -126,21 +139,37 @@ macro proc smartmedia_loaddata(RAM_BANK0) { * VERY slow and must be changed. */ #if !USE_MASK_ONLY - RC200SmartMediaSetAddress(READ, smartmedia_address); - RC200SmartMediaRead(&r, TRUE); - RC200SmartMediaOperationEnd(&result); - RC200SmartMediaSetAddress(READ, (smartmedia_address +1)); - RC200SmartMediaRead(&g, TRUE); - RC200SmartMediaOperationEnd(&result); - RC200SmartMediaSetAddress(READ, (smartmedia_address +2)); - RC200SmartMediaRead(&b, TRUE); - RC200SmartMediaOperationEnd(&result); + if ((STAGE_LOAD_SKIN == stage) || (STAGE_LOAD_HELP == stage)) { + RC200SmartMediaSetAddress(READ, smartmedia_address); + RC200SmartMediaRead(&r, TRUE); + RC200SmartMediaOperationEnd(&result); + RC200SmartMediaSetAddress(READ, (smartmedia_address +1)); + RC200SmartMediaRead(&g, TRUE); + RC200SmartMediaOperationEnd(&result); + RC200SmartMediaSetAddress(READ, (smartmedia_address +2)); + RC200SmartMediaRead(&b, TRUE); + RC200SmartMediaOperationEnd(&result); + } #endif RC200SmartMediaSetAddress(READ, smartmedia_address_mask); RC200SmartMediaRead(&mask, TRUE); RC200SmartMediaOperationEnd(&result); - data = 0 @ mask @ r @ g @ b; + switch (stage) { + case STAGE_LOAD_SKIN: + data = 0 @ mask @ r @ g @ b; + break; + case STAGE_LOAD_HELP: + data = 0 @ mask @ r @ g @ b; + break; + case STAGE_LOAD_GRAPH: + data = (unsigned DW)(0 @ mask) << 24; + break; + case STAGE_LOAD_PRESET: + data = 0 @ mask; + break; + } + #else data = 0x0000ff00; #endif @@ -153,10 +182,10 @@ macro proc smartmedia_loaddata(RAM_BANK0) { /* * Print some nice stats about data loading. */ - if (!address[11:0]) { + if (!(address <- 11)) { print_cr(); print_hex_value(0 @ (address \\ 12)); - print_string(" / 00000096 | data: "); + print_string(" / 000000AF | data: "); print_hex_value(data <- 32); } #endif @@ -167,4 +196,26 @@ macro proc smartmedia_loaddata(RAM_BANK0) { smartmedia_address += 3; smartmedia_address_mask++; } + + /* + * This block needs to probably move up into the fore loop where we + * calculate these settings later. + */ + skindata.area_spectrum_top = 200; + skindata.area_spectrum_bottom = 335; + skindata.area_spectrum_left = 77; + skindata.area_spectrum_right = 575; + skindata.area_waveform_top = 46; + skindata.area_waveform_bottom = 118; + skindata.area_waveform_left = 76; + skindata.area_waveform_right = 413; + skindata.area_volume_top = 112; + skindata.area_volume_bottom = 66; + skindata.area_volume_left = 439; + skindata.area_volume_right = 455; + skindata.color_area_volume = PIXEL_VOLUME; + skindata.color_area_waveform = PIXEL_WAVEFORM; +// skindata.color_area_spectrum_top = PIXEL_SPECTRUM; +// skindata.color_area_spectrum_bottom = PIXEL_SPECTRUM; + skindata.color_equalizer = PIXEL_EQUALIZER; } /* --- smartmedia_loaddata() --- */ -- cgit v0.12