aboutsummaryrefslogtreecommitdiffstats
path: root/x-loader/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'x-loader/drivers')
-rw-r--r--x-loader/drivers/Makefile38
-rw-r--r--x-loader/drivers/k9f1g08r0a.c55
-rw-r--r--x-loader/drivers/serial.c15
3 files changed, 62 insertions, 46 deletions
diff --git a/x-loader/drivers/Makefile b/x-loader/drivers/Makefile
index c581817..da3feda 100644
--- a/x-loader/drivers/Makefile
+++ b/x-loader/drivers/Makefile
@@ -25,58 +25,60 @@ include $(TOPDIR)/config.mk
# CFLAGS += -DET_DEBUG -DDEBUG
-LIB = libdrivers.a
-OBJS = serial.o ns16550.o onenand.o omap24xx_i2c.o
+LIB = $(obj)libdrivers.a
+COBJS = serial.o ns16550.o omap24xx_i2c.o
ifeq ($(BOARD), omap3430sdp)
-OBJS += k9f1g08r0a.o
+COBJS += k9f1g08r0a.o
endif
ifeq ($(BOARD), omap3430labrador)
-OBJS += k9f1g08r0a.o
+COBJS += k9f1g08r0a.o
endif
ifeq ($(BOARD), omap3530beagle)
-OBJS += k9f1g08r0a.o
+COBJS += k9f1g08r0a.o
+endif
+
+ifeq ($(BOARD), omap3530gta04)
+COBJS += k9f1g08r0a.o
endif
ifeq ($(BOARD), omap3evm)
-OBJS += k9f1g08r0a.o
+COBJS += k9f1g08r0a.o onenand.o
endif
ifeq ($(BOARD), overo)
-OBJS += k9f1g08r0a.o
+COBJS += k9f1g08r0a.o
endif
ifeq ($(BOARD), omap2420h4)
-OBJS += k9k1216.o
+COBJS += k9k1216.o
endif
ifeq ($(BOARD), omap2430sdp)
-OBJS += k9k1216.o
-endif
-
-ifeq ($(BOARD), omap1710h3)
-OBJS += k9f5616.o
+COBJS += k9k1216.o
endif
-
## Disabled for now:
## cs8900.o ct69000.o dataflash.o dc2114x.o ds1722.o \
## lan91c96.o mw_eeprom.o natsemi.o \
## smc91111.o smiLynxEM.o spi_eeprom.o sym53c8xx.o \
##
+SRCS := $(COBJS:.o=.c)
+OBJS := $(addprefix $(obj),$(COBJS))
+
all: $(LIB)
-$(LIB): $(OBJS)
+$(LIB): $(obj).depend $(OBJS)
$(AR) crv $@ $(OBJS)
#########################################################################
-.depend: Makefile $(OBJS:.o=.c)
- $(CC) -M $(CFLAGS) $(OBJS:.o=.c) > $@
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
-sinclude .depend
+sinclude $(obj).depend
#########################################################################
diff --git a/x-loader/drivers/k9f1g08r0a.c b/x-loader/drivers/k9f1g08r0a.c
index 8968a1b..988533c 100644
--- a/x-loader/drivers/k9f1g08r0a.c
+++ b/x-loader/drivers/k9f1g08r0a.c
@@ -42,6 +42,7 @@
*/
#define MT29F1G_MFR 0x2c /* Micron */
#define MT29F1G_MFR2 0x20 /* numonyx */
+#define MT29F1G_MFR3 0xad /* Hynix */
#define MT29F1G_ID 0xa1 /* x8, 1GiB */
#define MT29F2G_ID 0xba /* x16, 2GiB */
#define MT29F4G_ID 0xbc /* x16, 4GiB */
@@ -154,6 +155,29 @@ static int NanD_Address(unsigned int numbytes, unsigned long ofs)
return 0;
}
+int nand_readid(int *mfr, int *id)
+{
+ NAND_ENABLE_CE();
+
+ if (NanD_Command(NAND_CMD_RESET)) {
+ NAND_DISABLE_CE();
+ return 1;
+ }
+
+ if (NanD_Command(NAND_CMD_READID)) {
+ NAND_DISABLE_CE();
+ return 1;
+ }
+
+ NanD_Address(ADDR_COLUMN, 0);
+
+ *mfr = READ_NAND(NAND_ADDR);
+ *id = READ_NAND(NAND_ADDR);
+
+ NAND_DISABLE_CE();
+ return 0;
+}
+
/* read chip mfr and id
* return 0 if they match board config
* return 1 if not
@@ -162,34 +186,39 @@ int nand_chip()
{
int mfr, id;
- NAND_ENABLE_CE();
+ NAND_ENABLE_CE();
- if (NanD_Command(NAND_CMD_RESET)) {
- printf("Err: RESET\n");
- NAND_DISABLE_CE();
+ if (NanD_Command(NAND_CMD_RESET)) {
+ printf("Err: RESET\n");
+ NAND_DISABLE_CE();
return 1;
}
- if (NanD_Command(NAND_CMD_READID)) {
- printf("Err: READID\n");
- NAND_DISABLE_CE();
+ if (NanD_Command(NAND_CMD_READID)) {
+ printf("Err: READID\n");
+ NAND_DISABLE_CE();
return 1;
- }
+ }
- NanD_Address(ADDR_COLUMN, 0);
+ NanD_Address(ADDR_COLUMN, 0);
- mfr = READ_NAND(NAND_ADDR);
+ mfr = READ_NAND(NAND_ADDR);
id = READ_NAND(NAND_ADDR);
NAND_DISABLE_CE();
- if (((mfr == MT29F1G_MFR || mfr == MT29F1G_MFR2) &&
+ if (((mfr == MT29F1G_MFR || mfr == MT29F1G_MFR2 || mfr == MT29F1G_MFR3) &&
(id == MT29F1G_ID || id == MT29F2G_ID || id == MT29F4G_ID)) ||
(mfr == K9F1G08R0A_MFR && (id == K9F1G08R0A_ID))) {
return 0;
} else {
- printf("Unknown chip: mfr was 0x%02x, id was 0x%02x\n", mfr, id);
- return 1;
+ if ((mfr == 0) && (id == 0)) {
+ printf("No NAND detected\n");
+ return 0;
+ } else {
+ printf("Unknown chip: mfr was 0x%02x, id was 0x%02x\n", mfr, id);
+ return 1;
+ }
}
}
diff --git a/x-loader/drivers/serial.c b/x-loader/drivers/serial.c
index b9ecf2a..026acf9 100644
--- a/x-loader/drivers/serial.c
+++ b/x-loader/drivers/serial.c
@@ -45,21 +45,6 @@ static NS16550_t console = (NS16550_t) CFG_NS16550_COM4;
static int calc_divisor (void)
{
-// DECLARE_GLOBAL_DATA_PTR;
-#ifdef CONFIG_OMAP1510
- /* If can't cleanly clock 115200 set div to 1 */
- if ((CFG_NS16550_CLK == 12000000) && (CONFIG_BAUDRATE == 115200)) {
- console->osc_12m_sel = OSC_12M_SEL; /* enable 6.5 * divisor */
- return (1); /* return 1 for base divisor */
- }
- console->osc_12m_sel = 0; /* clear if previsouly set */
-#endif
-#if defined(CONFIG_OMAP1610) || defined(CONFIG_OMAP1710)
- /* If can't cleanly clock 115200 set div to 1 */
- if ((CFG_NS16550_CLK == 48000000) && (CONFIG_BAUDRATE == 115200)) {
- return (26); /* return 26 for base divisor */
- }
-#endif
return (CFG_NS16550_CLK / 16 / CONFIG_BAUDRATE);
}