static void __init ambarella_init_hyacinth(void) { int i; ambarella_init_machine("Hyacinth_0"); #ifdef CONFIG_OUTER_CACHE ambcache_l2_enable(); #endif /* Config ETH */ ambarella_eth0_platform_info.mii_id = 0; ambarella_eth0_platform_info.phy_id = 0x001cc915; ambarella_eth0_platform_info.default_tx_ring_size = 128; ambarella_eth0_platform_info.default_rx_ring_size = 64; ambarella_eth0_platform_info.default_dma_opmode |= ETH_DMA_OPMODE_TSF; if (AMBARELLA_BOARD_TYPE(system_rev) == AMBARELLA_BOARD_TYPE_VENDOR) { int rev = AMBARELLA_BOARD_REV(system_rev); int vendor = (rev & 0xff0) >> 4; int board = rev & 0xf; printk("Hyacinth_0: vendor 0x%02x, board 0x%01x\n", vendor, board); switch (vendor) { case 0x48: platform_device_register(&ambarella_uart2); /* Phy-less, fixed-link */ ambarella_eth0_platform_info.mii_fixed_speed = SPEED_1000; ambarella_eth0_platform_info.mii_fixed_duplex = DUPLEX_FULL; break; case 0x4D: platform_device_register(&ambarella_uart2); platform_device_register(&ambarella_uart3); break; default: break; } }
/* ==========================================================================*/ static void __init ambarella_init_boss(void) { int i; int use_bub_default = 1; int wm8994_inited = 0; ambarella_init_machine("Boss"); if (AMBARELLA_BOARD_TYPE(system_rev) == AMBARELLA_BOARD_TYPE_EVK) { switch (AMBARELLA_BOARD_REV(system_rev)) { case 'C': wm8994_inited = 1; case 'B': #if !defined(CONFIG_AMBARELLA_IPC) ambarella_platform_sd_controller1.slot[0].ext_power.gpio_id = GPIO(111); #endif ambarella_platform_sd_controller1.slot[0].ext_power.active_level = GPIO_HIGH; ambarella_platform_sd_controller1.slot[0].ext_power.active_delay = 300; if(0 == wm8994_inited) { /* the cs_pin of spi0.1 is used to determine wm8994's * I2C address, and the cs_pin of spi0.4, spi0,5, spi0.6 * spi0.7 are used as I2S signals, so we need to prevent * them from be modified by SPI driver */ ambarella_spi0_cs_pins[1] = -1; ambarella_spi0_cs_pins[4] = -1; ambarella_spi0_cs_pins[5] = -1; ambarella_spi0_cs_pins[6] = -1; ambarella_spi0_cs_pins[7] = -1; ambarella_init_wm8994(); } case 'A': ambarella_board_generic.touch_panel_irq.irq_gpio = GPIO(44); ambarella_board_generic.touch_panel_irq.irq_line = gpio_to_irq(44); ambarella_board_generic.touch_panel_irq.irq_type = IRQF_TRIGGER_FALLING; ambarella_board_generic.touch_panel_irq.irq_gpio_val = GPIO_LOW; ambarella_board_generic.touch_panel_irq.irq_gpio_mode = GPIO_FUNC_SW_INPUT; ambarella_board_generic.wifi_power.gpio_id = GPIO(109); ambarella_board_generic.wifi_power.active_level = GPIO_HIGH; ambarella_board_generic.wifi_power.active_delay = 300; ambarella_board_generic.wifi_sd_bus = 0; ambarella_board_generic.wifi_sd_slot = 1; ambarella_board_generic.pmic_irq.irq_gpio = GPIO(54); ambarella_board_generic.pmic_irq.irq_line = gpio_to_irq(54); ambarella_board_generic.pmic_irq.irq_type = IRQF_TRIGGER_FALLING; ambarella_board_generic.pmic_irq.irq_gpio_val = GPIO_LOW; ambarella_board_generic.pmic_irq.irq_gpio_mode = GPIO_FUNC_SW_INPUT; ambarella_board_generic.power_control.gpio_id = GPIO(120); ambarella_board_generic.power_control.active_level = GPIO_LOW; memcpy(ambarella_spi_devices[12].modalias, "wm8310", 6); ambarella_spi_devices[12].max_speed_hz = 500000; ambarella_spi_devices[12].platform_data = &boss_wm8310_pdata; ambarella_platform_sd_controller0.clk_limit = 24000000; ambarella_platform_sd_controller0.slot[0].use_bounce_buffer = 1; ambarella_platform_sd_controller0.slot[0].max_blk_sz = SD_BLK_SZ_128KB; ambarella_platform_sd_controller0.slot[0].cd_delay = 100; ambarella_platform_sd_controller0.slot[0].fixed_cd = 0; ambarella_platform_sd_controller0.slot[0].gpio_cd.irq_gpio = -1; ambarella_platform_sd_controller0.slot[0].gpio_cd.irq_line = -1; ambarella_platform_sd_controller0.slot[0].fixed_wp = 0; ambarella_platform_sd_controller0.slot[0].gpio_wp.gpio_id = -1; ambarella_platform_sd_controller0.slot[0].ext_power.gpio_id = GPIO(157); ambarella_platform_sd_controller0.slot[0].ext_power.active_level = GPIO_HIGH; ambarella_platform_sd_controller0.slot[0].ext_power.active_delay = 300; ambarella_platform_sd_controller0.slot[1].use_bounce_buffer = 1; ambarella_platform_sd_controller0.slot[1].max_blk_sz = SD_BLK_SZ_128KB; ambarella_platform_sd_controller0.slot[1].cd_delay = 100; ambarella_platform_sd_controller0.slot[1].fixed_cd = 0; ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_gpio = -1; ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_line = -1; ambarella_platform_sd_controller0.slot[1].fixed_wp = 0; ambarella_platform_sd_controller0.slot[1].gpio_wp.gpio_id = -1; ambarella_platform_sd_controller1.clk_limit = 25000000; ambarella_platform_sd_controller1.slot[0].cd_delay = 100; ambarella_platform_sd_controller1.slot[0].use_bounce_buffer = 1; ambarella_platform_sd_controller1.slot[0].max_blk_sz = SD_BLK_SZ_128KB; ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_gpio = GPIO(129); ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_line = gpio_to_irq(129); ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_type = IRQ_TYPE_EDGE_BOTH; ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_gpio_val = GPIO_LOW, ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_gpio_mode = GPIO_FUNC_SW_INPUT, ambarella_platform_sd_controller1.slot[0].gpio_wp.gpio_id = GPIO(128); boss_board_input_info.pkeymap = boss_keymap_evk; ambarella_tm1726_board_info.irq = ambarella_board_generic.touch_panel_irq.irq_line; i2c_register_board_info(2, &ambarella_tm1726_board_info, 1); use_bub_default = 0; break; default: pr_warn("%s: Unknown EVK Rev[%d]\n", __func__, AMBARELLA_BOARD_REV(system_rev)); break; } platform_add_devices(ambarella_devices, ARRAY_SIZE(ambarella_devices)); for (i = 0; i < ARRAY_SIZE(ambarella_devices); i++) { device_set_wakeup_capable(&ambarella_devices[i]->dev, 1); device_set_wakeup_enable(&ambarella_devices[i]->dev, 0); } } if (use_bub_default) { /* Config SD*/ ambarella_platform_sd_controller0.clk_limit = 25000000; ambarella_platform_sd_controller0.slot[0].use_bounce_buffer = 1; ambarella_platform_sd_controller0.slot[0].max_blk_sz = SD_BLK_SZ_128KB; ambarella_platform_sd_controller0.slot[0].cd_delay = 1000; ambarella_platform_sd_controller0.slot[0].gpio_cd.irq_gpio = GPIO(67); ambarella_platform_sd_controller0.slot[0].gpio_cd.irq_line = gpio_to_irq(67); ambarella_platform_sd_controller0.slot[0].gpio_cd.irq_type = IRQ_TYPE_EDGE_BOTH; ambarella_platform_sd_controller0.slot[0].gpio_cd.irq_gpio_val = GPIO_LOW, ambarella_platform_sd_controller0.slot[0].gpio_cd.irq_gpio_mode = GPIO_FUNC_SW_INPUT, ambarella_platform_sd_controller0.slot[0].gpio_wp.gpio_id = GPIO(68); ambarella_platform_sd_controller0.slot[1].use_bounce_buffer = 1; ambarella_platform_sd_controller0.slot[1].max_blk_sz = SD_BLK_SZ_128KB; ambarella_platform_sd_controller0.slot[1].cd_delay = 1000; ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_gpio = GPIO(75); ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_line = gpio_to_irq(75); ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_type = IRQ_TYPE_EDGE_BOTH; ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_gpio_val = GPIO_LOW, ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_gpio_mode = GPIO_FUNC_SW_INPUT, ambarella_platform_sd_controller0.slot[1].gpio_wp.gpio_id = GPIO(76); ambarella_platform_sd_controller1.clk_limit = 25000000; ambarella_platform_sd_controller1.slot[0].cd_delay = 100; ambarella_platform_sd_controller1.slot[0].use_bounce_buffer = 1; ambarella_platform_sd_controller1.slot[0].max_blk_sz = SD_BLK_SZ_128KB; #if !defined(CONFIG_AMBARELLA_IPC) ambarella_platform_sd_controller1.slot[0].ext_power.gpio_id = GPIO(106); #endif ambarella_platform_sd_controller1.slot[0].ext_power.active_level = GPIO_HIGH; ambarella_platform_sd_controller1.slot[0].ext_power.active_delay = 300; ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_gpio = GPIO(129); ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_line = gpio_to_irq(129); ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_type = IRQ_TYPE_EDGE_BOTH; ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_gpio_val = GPIO_LOW, ambarella_platform_sd_controller1.slot[0].gpio_cd.irq_gpio_mode = GPIO_FUNC_SW_INPUT, ambarella_platform_sd_controller1.slot[0].gpio_wp.gpio_id = GPIO(128); #if defined(CONFIG_AMBARELLA_IPC) ambarella_platform_sd_controller0.slot[0].caps |= MMC_CAP_8_BIT_DATA; ambarella_platform_sd_controller1.slot[0].caps |= MMC_CAP_8_BIT_DATA; ambarella_platform_sd_controller0.slot[0].caps |= MMC_CAP_BUS_WIDTH_TEST; ambarella_platform_sd_controller0.slot[1].caps |= MMC_CAP_BUS_WIDTH_TEST; ambarella_platform_sd_controller1.slot[0].caps |= MMC_CAP_BUS_WIDTH_TEST; #endif platform_add_devices(ambarella_devices, ARRAY_SIZE(ambarella_devices)); for (i = 0; i < ARRAY_SIZE(ambarella_devices); i++) { device_set_wakeup_capable(&ambarella_devices[i]->dev, 1); device_set_wakeup_enable(&ambarella_devices[i]->dev, 0); } } spi_register_board_info(ambarella_spi_devices, ARRAY_SIZE(ambarella_spi_devices)); platform_device_register(&boss_board_input); platform_device_register(&boss_bt_rfkill); // for BT }