__raw_writel(SDP_3430_SDRC_RFR_CTRL_165MHz, SDRC_RFR_CTRL_0);
__raw_writel(SDP_3430_SDRC_RFR_CTRL_165MHz, SDRC_RFR_CTRL_1);
break;
+ case 2: /* Hynix 256MB/512MB, 1/2 banks of 256MB */
+ __raw_writel(0x2, SDRC_CS_CFG); /* 256MB/bank */
+ __raw_writel(SDP_SDRC_MDCFG_0_DDR_HYNIX, SDRC_MCFG_0);
+ __raw_writel(SDP_SDRC_MDCFG_0_DDR_HYNIX, SDRC_MCFG_1);
+ __raw_writel(HYNIX_V_ACTIMA_165, SDRC_ACTIM_CTRLA_0);
+ __raw_writel(HYNIX_V_ACTIMB_165, SDRC_ACTIM_CTRLB_0);
+ __raw_writel(HYNIX_V_ACTIMA_165, SDRC_ACTIM_CTRLA_1);
+ __raw_writel(HYNIX_V_ACTIMB_165, SDRC_ACTIM_CTRLB_1);
+ __raw_writel(SDP_3430_SDRC_RFR_CTRL_165MHz, SDRC_RFR_CTRL_0);
+ __raw_writel(SDP_3430_SDRC_RFR_CTRL_165MHz, SDRC_RFR_CTRL_1);
+ break;
default:
__raw_writel(0x1, SDRC_CS_CFG); /* 128MB/bank */
__raw_writel(SDP_SDRC_MDCFG_0_DDR, SDRC_MCFG_0);
*/
#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 */
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;
#define SDP_SDRC_MDCFG_0_DDR (0x02584019|B_ALL)
#define SDP_SDRC_MDCFG_0_DDR_MICRON_XM (0x03588019|B_ALL)
#define SDP_SDRC_MDCFG_0_DDR_NUMONYX_XM (0x04590019|B_ALL)
+#define SDP_SDRC_MDCFG_0_DDR_HYNIX (0x03588019|B_ALL)
#endif
#define SDP_SDRC_MR_0_DDR 0x00000032
#define NUMONYX_V_ACTIMB_165 ((NUMONYX_TCKE_165 << 12) | (NUMONYX_XSR_165 << 0)) | \
(NUMONYX_TXP_165 << 8) | (NUMONYX_TWTR_165 << 16)
+/*
+ * Hynix part of Overo (165MHz optimized) 6.06ns
+ * ACTIMA
+ * ACTIMA
+ * TDAL = Twr/Tck + Trp/tck = 15/6 + 18/6 = 2.5 + 3 = 5.5 -> 6
+ * TDPL (Twr) = 15/6 = 2.5 -> 3
+ * TRRD = 12/6 = 2
+ * TRCD = 18/6 = 3
+ * TRP = 18/6 = 3
+ * TRAS = 42/6 = 7
+ * TRC = 60/6 = 10
+ * TRFC = 97.5/6 = 17
+ * ACTIMB
+ * TWTR = 1
+ * TCKE = 1
+ * TXP = 1+1
+ * XSR = 140/6 = 24
+ */
+#define HYNIX_TDAL_165 6
+#define HYNIX_TDPL_165 3
+#define HYNIX_TRRD_165 2
+#define HYNIX_TRCD_165 3
+#define HYNIX_TRP_165 3
+#define HYNIX_TRAS_165 7
+#define HYNIX_TRC_165 10
+#define HYNIX_TRFC_165 21
+#define HYNIX_V_ACTIMA_165 ((HYNIX_TRFC_165 << 27) | \
+ (HYNIX_TRC_165 << 22) | (HYNIX_TRAS_165 << 18) | \
+ (HYNIX_TRP_165 << 15) | (HYNIX_TRCD_165 << 12) | \
+ (HYNIX_TRRD_165 << 9) | (HYNIX_TDPL_165 << 6) | \
+ (HYNIX_TDAL_165))
+
+#define HYNIX_TWTR_165 1
+#define HYNIX_TCKE_165 1
+#define HYNIX_TXP_165 2
+#define HYNIX_XSR_165 24
+#define HYNIX_V_ACTIMB_165 ((HYNIX_TCKE_165 << 12) | \
+ (HYNIX_XSR_165 << 0) | (HYNIX_TXP_165 << 8) | \
+ (HYNIX_TWTR_165 << 16))
+
/* New and compatability speed defines */
#if defined(PRCM_CLK_CFG2_200MHZ) || defined(PRCM_CONFIG_II) || defined(PRCM_CONFIG_5B)
# define L3_100MHZ /* Use with <= 100MHz SDRAM */