summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Purchase <shotofadds@rockbox.org>2008-07-15 21:32:20 +0000
committerRob Purchase <shotofadds@rockbox.org>2008-07-15 21:32:20 +0000
commit3352b265e68bf6f7e1e75325f6034c3301380004 (patch)
treea3cd1f484aee7fc6ac03d00935fe735cc9eee2b2
parent8189246cbc0b4a435015dcf49826fedc5e48382f (diff)
downloadrockbox-3352b265e68bf6f7e1e75325f6034c3301380004.tar.gz
rockbox-3352b265e68bf6f7e1e75325f6034c3301380004.zip
Update the Telechips NAND driver to use the nand_identify() function introduced in r18052.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18063 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/SOURCES5
-rw-r--r--firmware/target/arm/ata-nand-telechips.c56
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
978drivers/nand_id.c
978target/arm/ata-nand-telechips.c 979target/arm/ata-nand-telechips.c
979target/arm/tcc77x/adc-tcc77x.c 980target/arm/tcc77x/adc-tcc77x.c
980target/arm/tcc77x/kernel-tcc77x.c 981target/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
998drivers/nand_id.c
997target/arm/ata-nand-telechips.c 999target/arm/ata-nand-telechips.c
998target/arm/tcc77x/adc-tcc77x.c 1000target/arm/tcc77x/adc-tcc77x.c
999target/arm/tcc77x/kernel-tcc77x.c 1001target/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
1018drivers/nand_id.c
1016target/arm/ata-nand-telechips.c 1019target/arm/ata-nand-telechips.c
1017target/arm/tcc77x/adc-tcc77x.c 1020target/arm/tcc77x/adc-tcc77x.c
1018target/arm/tcc77x/kernel-tcc77x.c 1021target/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
1038drivers/nand_id.c
1035target/arm/ata-nand-telechips.c 1039target/arm/ata-nand-telechips.c
1036target/arm/tcc77x/adc-tcc77x.c 1040target/arm/tcc77x/adc-tcc77x.c
1037target/arm/tcc77x/system-tcc77x.c 1041target/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
1049drivers/nand_id.c
1045drivers/pcf50606.c 1050drivers/pcf50606.c
1046target/arm/lcd-as-memframe.S 1051target/arm/lcd-as-memframe.S
1047target/arm/ata-nand-telechips.c 1052target/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;