Mercurial > flash_v2
changeset 353:9c7f9b4dfb2f
* include/flash_am29xxxxx_parts.inl:
* cdl/flash_amd_am29xxxxx.cdl: Add support for AM29DL640D.
* include/flash_am29xxxxx.inl: Add support for triple byte part id
numbers, such as those used by the AM29DL640D. Allow for parts
with up to 5 banks, rather than two -- also to support AM29DL640D
parts.
| author | jlarmour |
|---|---|
| date | Tue, 01 Oct 2002 00:47:22 +0000 |
| parents | 1f5fe8f482d9 |
| children | 9997c1a0b0ba |
| files | packages/devs/flash/amd/am29xxxxx/current/ChangeLog packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl |
| diffstat | 4 files changed, 95 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/devs/flash/amd/am29xxxxx/current/ChangeLog +++ b/packages/devs/flash/amd/am29xxxxx/current/ChangeLog @@ -1,3 +1,13 @@ +2002-09-26 Ian Campbell <icampbell@arcomcontrols.com> + + * include/flash_am29xxxxx_parts.inl: + * cdl/flash_amd_am29xxxxx.cdl: Add support for AM29DL640D. + + * include/flash_am29xxxxx.inl: Add support for triple byte part id + numbers, such as those used by the AM29DL640D. Allow for parts + with up to 5 banks, rather than two -- also to support AM29DL640D + parts. + 2002-07-29 Gary Thomas <gary@chez-thomas.org> 2002-07-29 Motoya Kurotsu <kurotsu@allied-telesis.co.jp>
--- a/packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl +++ b/packages/devs/flash/amd/am29xxxxx/current/cdl/flash_amd_am29xxxxx.cdl @@ -137,6 +137,16 @@ cdl_package CYGPKG_DEVS_FLASH_AMD_AM29XX part in the family." } + cdl_option CYGHWR_DEVS_FLASH_AMD_AM29DL640D { + display "AMD AM29DL640D flash memory support" + default_value 0 + implements CYGINT_DEVS_FLASH_AMD_VARIANTS + description " + When this option is enabled, the AMD flash driver will be + able to recognize and handle the AM29DL640D + part in the family." + } + cdl_option CYGHWR_DEVS_FLASH_AMD_AM29F800 { display "AMD AM29F800 flash memory support" default_value 0
--- a/packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl +++ b/packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl @@ -92,12 +92,16 @@ # define FLASH_Setup_Addr2 (0x2AA) # define FLASH_VendorID_Addr (0) # define FLASH_DeviceID_Addr (1) +# define FLASH_DeviceID_Addr2 (0x0e) +# define FLASH_DeviceID_Addr3 (0x0f) # define FLASH_WP_Addr (2) #else # define FLASH_Setup_Addr1 (0xAAA) # define FLASH_Setup_Addr2 (0x555) # define FLASH_VendorID_Addr (0) # define FLASH_DeviceID_Addr (2) +# define FLASH_DeviceID_Addr2 (0x1c) +# define FLASH_DeviceID_Addr3 (0x1e) # define FLASH_WP_Addr (4) #endif #define FLASH_Setup_Code1 FLASHWORD( 0xAA ) @@ -127,7 +131,10 @@ //---------------------------------------------------------------------------- // Information about supported devices typedef struct flash_dev_info { + cyg_bool long_device_id; flash_data_t device_id; + flash_data_t device_id2; + flash_data_t device_id3; cyg_uint32 block_size; cyg_int32 block_count; cyg_uint32 base_mask; @@ -135,7 +142,7 @@ typedef struct flash_dev_info { cyg_bool bootblock; cyg_uint32 bootblocks[12]; // 0 is bootblock offset, 1-11 sub-sector sizes (or 0) cyg_bool banked; - cyg_uint32 banks[2]; // bank offets, highest to lowest (lowest should be 0) + cyg_uint32 banks[5]; // bank offets, highest to lowest (lowest should be 0) // (only one entry for now, increase to support devices // with more banks). } flash_dev_info_t; @@ -194,6 +201,9 @@ static void id[0] = *(FLASH_P2V(ROM+FLASH_VendorID_Addr)); // Part number id[1] = *(FLASH_P2V(ROM+FLASH_DeviceID_Addr)); + id[2] = *(FLASH_P2V(ROM+FLASH_DeviceID_Addr2)); + id[3] = *(FLASH_P2V(ROM+FLASH_DeviceID_Addr3)); + *(FLASH_P2V(ROM)) = FLASH_Reset; @@ -222,7 +232,7 @@ flash_query(void* data) int flash_hwr_init(void) { - flash_data_t id[2]; + flash_data_t id[4]; int i; CYGHWR_FLASH_AM29XXXXX_PLF_INIT(); @@ -232,7 +242,11 @@ flash_hwr_init(void) // Look through table for device data flash_dev_info = supported_devices; for (i = 0; i < NUM_DEVICES; i++) { - if (flash_dev_info->device_id == id[1]) + if (!flash_dev_info->long_device_id && flash_dev_info->device_id == id[1]) + break; + else if ( flash_dev_info->long_device_id && flash_dev_info->device_id == id[1] + && flash_dev_info->device_id2 == id[2] + && flash_dev_info->device_id3 == id[3] ) break; flash_dev_info++; }
--- a/packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl +++ b/packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl @@ -225,6 +225,35 @@ } }, #endif +#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL640D +{ // AM29DL640D + long_device_id: true, + device_id : FLASHWORD(0x7e), + device_id2 : FLASHWORD(0x02), + device_id3 : FLASHWORD(0x01), + block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE, + block_count: 142, + device_size: 0x0800000 * CYGNUM_FLASH_INTERLEAVE, + base_mask : ~(0x8000000 * CYGNUM_FLASH_INTERLEAVE - 1), + bootblocks : { 0x07F0000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0x0002000 * CYGNUM_FLASH_INTERLEAVE, + 0 + }, + banked : true, + banks : { 0x0700000 * CYGNUM_FLASH_INTERLEAVE, + 0x0400000 * CYGNUM_FLASH_INTERLEAVE, + 0x0100000 * CYGNUM_FLASH_INTERLEAVE, + 0 + } + } +#endif #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F800 { // AM29F800-T device_id : FLASHWORD(0xd6), @@ -507,6 +536,35 @@ } }, #endif +#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL640D +{ // AM29DL640D + long_device_id: true, + device_id : FLASHWORD(0x227e), + device_id2 : FLASHWORD(0x2202), + device_id3 : FLASHWORD(0x2201), + block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE, + block_count: 142, + device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE, + base_mask : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1), + bootblocks : { 0x7F0000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0x2000 * CYGNUM_FLASH_INTERLEAVE, + 0 + }, + banked : true, + banks : { 0x700000 * CYGNUM_FLASH_INTERLEAVE, + 0x400000 * CYGNUM_FLASH_INTERLEAVE, + 0x100000 * CYGNUM_FLASH_INTERLEAVE, + 0 + } + } +#endif #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F800 { // AM29F800-T device_id : FLASHWORD(0x22d6),
