-static void __init apollon_tsc_init(void)
-{
- /* TSC2101 */
- omap_cfg_reg(N15_24XX_GPIO85);
- gpio_request(85, "tsc2101 irq");
- gpio_direction_input(85);
-
- omap_cfg_reg(W14_24XX_SYS_CLKOUT); /* mclk */
-}
-
-static void __init apollon_cs_init(void)
-{
- unsigned long base;
- unsigned int rate;
- struct clk *l3ck;
- u32 value;
- int cs, sync = 0;
-
- l3ck = clk_get(NULL, "core_l3_ck");
- if (IS_ERR(l3ck))
- rate = 100000000;
- else
- rate = clk_get_rate(l3ck);
-
- /* CS2: OneNAND */
- cs = 2;
- value = gpmc_cs_read_reg(0, GPMC_CS_CONFIG1);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, value);
- value = gpmc_cs_read_reg(0, GPMC_CS_CONFIG2);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG2, value);
- value = gpmc_cs_read_reg(0, GPMC_CS_CONFIG3);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG3, value);
- value = gpmc_cs_read_reg(0, GPMC_CS_CONFIG4);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG4, value);
- value = gpmc_cs_read_reg(0, GPMC_CS_CONFIG5);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG5, value);
- value = gpmc_cs_read_reg(0, GPMC_CS_CONFIG6);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG6, value);
-
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG7, APOLLON_ONENAND_CS2_ADDRESS);
-
- /* CS3: External NOR */
- cs = APOLLON_NOR_CS;
- if (rate >= 160000000) {
- sync = 1;
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, 0xe5011211);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG2, 0x00090b01);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG3, 0x00020201);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG4, 0x09030b03);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG5, 0x010a0a0c);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG6, 0x00000000);
- } else if (rate >= 130000000) {
- /* Not yet know ... Use the async values */
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, 0x00021201);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG2, 0x00121601);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG3, 0x00040401);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG4, 0x12061605);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG5, 0x01151317);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG6, 0x00000000);
- } else {/* rate = 100000000 */
- sync = 1;
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, 0xe1001202);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG2, 0x00151501);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG3, 0x00050501);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG4, 0x0e070e07);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG5, 0x01131F1F);
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG6, 0x00000000);
- }
-
- gpmc_cs_write_reg(cs, GPMC_CS_CONFIG7, APOLLON_EXT_CS3_ADDRESS);
-
- if (gpmc_cs_request(cs, SZ_32M, &base) < 0) {
- printk(KERN_ERR "Failed to request GPMC CS for external\n");
- return;
- }
-
- /* Synchronous mode */
- if (sync) {
- void __iomem *addr = ioremap(base, SZ_32M);
- writew(0xaa, addr + 0xaaa);
- writew(0x55, addr + 0x554);
- writew(0xc0, addr + 0x24aaa);
- iounmap(addr);
- }
-
- gpmc_cs_free(cs);
-}
-