|
@@ -163,6 +163,36 @@ int cpu_mmc_init(bd_t *bis)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+void set_chipselect_size(int const cs_size)
|
|
|
+{
|
|
|
+ unsigned int reg;
|
|
|
+ struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
|
|
|
+ reg = readl(&iomuxc_regs->gpr1);
|
|
|
+
|
|
|
+ switch (cs_size) {
|
|
|
+ case CS0_128:
|
|
|
+ reg &= ~0x7; /* CS0=128MB, CS1=0, CS2=0, CS3=0 */
|
|
|
+ reg |= 0x5;
|
|
|
+ break;
|
|
|
+ case CS0_64M_CS1_64M:
|
|
|
+ reg &= ~0x3F; /* CS0=64MB, CS1=64MB, CS2=0, CS3=0 */
|
|
|
+ reg |= 0x1B;
|
|
|
+ break;
|
|
|
+ case CS0_64M_CS1_32M_CS2_32M:
|
|
|
+ reg &= ~0x1FF; /* CS0=64MB, CS1=32MB, CS2=32MB, CS3=0 */
|
|
|
+ reg |= 0x4B;
|
|
|
+ break;
|
|
|
+ case CS0_32M_CS1_32M_CS2_32M_CS3_32M:
|
|
|
+ reg &= ~0xFFF; /* CS0=32MB, CS1=32MB, CS2=32MB, CS3=32MB */
|
|
|
+ reg |= 0x249;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ printf("Unknown chip select size: %d\n", cs_size);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ writel(reg, &iomuxc_regs->gpr1);
|
|
|
+}
|
|
|
|
|
|
void reset_cpu(ulong addr)
|
|
|
{
|