diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/SOURCES | 5 | ||||
-rw-r--r-- | firmware/target/arm/ata-nand-telechips.c | 56 |
2 files changed, 16 insertions, 45 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES index 99e880c19a..e6ff82d4a9 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES | |||
@@ -975,6 +975,7 @@ target/arm/pnx0101/pcm-pnx0101.c | |||
975 | 975 | ||
976 | #ifdef LOGIK_DAX | 976 | #ifdef LOGIK_DAX |
977 | #ifndef SIMULATOR | 977 | #ifndef SIMULATOR |
978 | drivers/nand_id.c | ||
978 | target/arm/ata-nand-telechips.c | 979 | target/arm/ata-nand-telechips.c |
979 | target/arm/tcc77x/adc-tcc77x.c | 980 | target/arm/tcc77x/adc-tcc77x.c |
980 | target/arm/tcc77x/kernel-tcc77x.c | 981 | target/arm/tcc77x/kernel-tcc77x.c |
@@ -994,6 +995,7 @@ target/arm/tcc77x/pcm-tcc77x.c | |||
994 | 995 | ||
995 | #ifdef SANSA_M200 | 996 | #ifdef SANSA_M200 |
996 | #ifndef SIMULATOR | 997 | #ifndef SIMULATOR |
998 | drivers/nand_id.c | ||
997 | target/arm/ata-nand-telechips.c | 999 | target/arm/ata-nand-telechips.c |
998 | target/arm/tcc77x/adc-tcc77x.c | 1000 | target/arm/tcc77x/adc-tcc77x.c |
999 | target/arm/tcc77x/kernel-tcc77x.c | 1001 | target/arm/tcc77x/kernel-tcc77x.c |
@@ -1013,6 +1015,7 @@ target/arm/tcc77x/pcm-tcc77x.c | |||
1013 | 1015 | ||
1014 | #ifdef SANSA_C100 | 1016 | #ifdef SANSA_C100 |
1015 | #ifndef SIMULATOR | 1017 | #ifndef SIMULATOR |
1018 | drivers/nand_id.c | ||
1016 | target/arm/ata-nand-telechips.c | 1019 | target/arm/ata-nand-telechips.c |
1017 | target/arm/tcc77x/adc-tcc77x.c | 1020 | target/arm/tcc77x/adc-tcc77x.c |
1018 | target/arm/tcc77x/kernel-tcc77x.c | 1021 | target/arm/tcc77x/kernel-tcc77x.c |
@@ -1032,6 +1035,7 @@ target/arm/tcc77x/pcm-tcc77x.c | |||
1032 | 1035 | ||
1033 | #ifdef IAUDIO_7 | 1036 | #ifdef IAUDIO_7 |
1034 | #ifndef SIMULATOR | 1037 | #ifndef SIMULATOR |
1038 | drivers/nand_id.c | ||
1035 | target/arm/ata-nand-telechips.c | 1039 | target/arm/ata-nand-telechips.c |
1036 | target/arm/tcc77x/adc-tcc77x.c | 1040 | target/arm/tcc77x/adc-tcc77x.c |
1037 | target/arm/tcc77x/system-tcc77x.c | 1041 | target/arm/tcc77x/system-tcc77x.c |
@@ -1042,6 +1046,7 @@ target/arm/tcc77x/iaudio7/power-iaudio7.c | |||
1042 | 1046 | ||
1043 | #ifdef COWON_D2 | 1047 | #ifdef COWON_D2 |
1044 | #ifndef SIMULATOR | 1048 | #ifndef SIMULATOR |
1049 | drivers/nand_id.c | ||
1045 | drivers/pcf50606.c | 1050 | drivers/pcf50606.c |
1046 | target/arm/lcd-as-memframe.S | 1051 | target/arm/lcd-as-memframe.S |
1047 | target/arm/ata-nand-telechips.c | 1052 | target/arm/ata-nand-telechips.c |
diff --git a/firmware/target/arm/ata-nand-telechips.c b/firmware/target/arm/ata-nand-telechips.c index fc4418cc44..b6ecab6091 100644 --- a/firmware/target/arm/ata-nand-telechips.c +++ b/firmware/target/arm/ata-nand-telechips.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <string.h> | 24 | #include <string.h> |
25 | #include "led.h" | 25 | #include "led.h" |
26 | #include "panic.h" | 26 | #include "panic.h" |
27 | #include "nand_id.h" | ||
27 | 28 | ||
28 | /* The NAND driver is currently work-in-progress and as such contains | 29 | /* The NAND driver is currently work-in-progress and as such contains |
29 | some dead code and debug stuff, such as the next few lines. */ | 30 | some dead code and debug stuff, such as the next few lines. */ |
@@ -378,57 +379,22 @@ static void nand_get_chip_info(void) | |||
378 | 379 | ||
379 | manuf_id = id_buf[0]; | 380 | manuf_id = id_buf[0]; |
380 | 381 | ||
381 | switch (manuf_id) | 382 | /* Identify the chip geometry */ |
382 | { | 383 | struct nand_info* nand_data = nand_identify(id_buf); |
383 | case 0xEC: /* SAMSUNG */ | ||
384 | |||
385 | switch(id_buf[1]) /* Chip Id */ | ||
386 | { | ||
387 | case 0xD3: /* K9K8G08UOM */ | ||
388 | 384 | ||
389 | page_size = 2048; | 385 | if (nand_data == NULL) |
390 | spare_size = 64; | ||
391 | pages_per_block = 64; | ||
392 | blocks_per_bank = 8192; | ||
393 | col_cycles = 2; | ||
394 | row_cycles = 3; | ||
395 | |||
396 | found = true; | ||
397 | break; | ||
398 | |||
399 | case 0xD5: /* K9LAG08UOM */ | ||
400 | |||
401 | page_size = 2048; | ||
402 | spare_size = 64; | ||
403 | pages_per_block = 128; | ||
404 | blocks_per_bank = 8192; | ||
405 | col_cycles = 2; | ||
406 | row_cycles = 3; | ||
407 | |||
408 | found = true; | ||
409 | break; | ||
410 | |||
411 | case 0xD7: /* K9LBG08UOM */ | ||
412 | |||
413 | page_size = 4096; | ||
414 | spare_size = 128; | ||
415 | pages_per_block = 128; | ||
416 | blocks_per_bank = 8192; | ||
417 | col_cycles = 2; | ||
418 | row_cycles = 3; | ||
419 | |||
420 | found = true; | ||
421 | break; | ||
422 | } | ||
423 | break; | ||
424 | } | ||
425 | |||
426 | if (!found) | ||
427 | { | 386 | { |
428 | panicf("Unknown NAND: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", | 387 | panicf("Unknown NAND: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", |
429 | id_buf[0],id_buf[1],id_buf[2],id_buf[3],id_buf[4]); | 388 | id_buf[0],id_buf[1],id_buf[2],id_buf[3],id_buf[4]); |
430 | } | 389 | } |
431 | 390 | ||
391 | page_size = nand_data->page_size; | ||
392 | spare_size = nand_data->spare_size; | ||
393 | pages_per_block = nand_data->pages_per_block; | ||
394 | blocks_per_bank = nand_data->blocks_per_bank; | ||
395 | col_cycles = nand_data->col_cycles; | ||
396 | row_cycles = nand_data->row_cycles; | ||
397 | |||
432 | pages_per_bank = blocks_per_bank * pages_per_block; | 398 | pages_per_bank = blocks_per_bank * pages_per_block; |
433 | segments_per_bank = blocks_per_bank / BLOCKS_PER_SEGMENT; | 399 | segments_per_bank = blocks_per_bank / BLOCKS_PER_SEGMENT; |
434 | bytes_per_segment = page_size * pages_per_block * BLOCKS_PER_SEGMENT; | 400 | bytes_per_segment = page_size * pages_per_block * BLOCKS_PER_SEGMENT; |