void __init omap4_kona_audio_init(void) { unsigned int gpio_ear_send_end; unsigned int gpio_ear_bias_discharge; platform_device_register(&vbatt_device); wm1811_pdata.ldo[0].enable = omap_muxtbl_get_gpio_by_name("CODEC_LDO_EN"); gpio_ear_send_end = omap_muxtbl_get_gpio_by_name("EAR_SEND_END"); gpio_request(gpio_ear_send_end, "EAR_SEND_END"); kona_audio_i2c1_board_info[0].irq = gpio_to_irq(gpio_ear_send_end); /* board rev 2,3,4 only use ear-bias-discharge */ if ((1 < system_rev) && (system_rev < 5)) { gpio_ear_bias_discharge = omap_muxtbl_get_gpio_by_name("EAR_BIAS_DISCHARGE"); gpio_request(gpio_ear_bias_discharge, "EAR_BIAS_DISCHARGE"); gpio_direction_output(gpio_ear_bias_discharge, 0); } i2c_register_board_info(1, kona_audio_i2c1_board_info, ARRAY_SIZE(kona_audio_i2c1_board_info)); }
int __init omap4_espresso10_irled_init(void) { int ret = 0; int i; unsigned int boardtype = omap4_espresso10_get_board_type(); if (system_rev > 6 && boardtype != SEC_MACHINE_ESPRESSO10_USA_BBY) { for (i = 0; i < ARRAY_SIZE(irled_gpios); i++) { irled_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(irled_gpios[i].label); omap_mux_set_gpio( OMAP_PIN_INPUT_PULLDOWN | OMAP_MUX_MODE7, irled_gpios[i].gpio); } return 0; } for (i = 0; i < ARRAY_SIZE(irled_gpios); i++) irled_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(irled_gpios[i].label); gpio_request_array(irled_gpios, ARRAY_SIZE(irled_gpios)); ret = irled_init(); if (ret < 0) { pr_err("irled: irled_init failed\n"); for (i = 0; i < ARRAY_SIZE(irled_gpios); i++) gpio_free(irled_gpios[i].gpio); } return ret; }
static void __init espresso_gpio_i2c_init(void) { /* gpio-i2c 6 */ espresso_gpio_i2c6_pdata.sda_pin = omap_muxtbl_get_gpio_by_name("ADC_I2C_SDA_1.8V"); espresso_gpio_i2c6_pdata.scl_pin = omap_muxtbl_get_gpio_by_name("ADC_I2C_SCL_1.8V"); }
static void __init gokey_gpio_i2c_init(void) { /* gpio-i2c 6 */ gokey_gpio_i2c6_pdata.sda_pin = omap_muxtbl_get_gpio_by_name("MHL_SDA_1.8V"); gokey_gpio_i2c6_pdata.scl_pin = omap_muxtbl_get_gpio_by_name("MHL_SCL_1.8V"); }
static void __init gokey_gpio_i2c_init(void) { /*Fuel gauge I2C : gpio-i2c 7*/ gokey_gpio_i2c7_pdata.sda_pin = omap_muxtbl_get_gpio_by_name("FUEL_SDA_1.8V"); gokey_gpio_i2c7_pdata.scl_pin = omap_muxtbl_get_gpio_by_name("FUEL_SCL_1.8V"); }
void __init omap4_gokey_charger_init(void) { int ret; charger_gpio_init(); gokey_gpio_i2c_init(); battery_manager_pdata.ta_gpio = omap_muxtbl_get_gpio_by_name("TA_nCHG"); bq24157_pdata.ta_gpio = omap_muxtbl_get_gpio_by_name("TA_nCHG"); bq24157_pdata.ta_irq = gpio_to_irq(bq24157_pdata.ta_gpio); bq24157_pdata.ta_enable_gpio = omap_muxtbl_get_gpio_by_name("TA_nCONNECTED"); battery_manager_pdata.bat_removal = omap_muxtbl_get_gpio_by_name("BAT_REMOVAL"); if (system_rev < 2) omap_mux_set_gpio(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE3, battery_manager_pdata.bat_removal); bq24157_pdata.vf_gpio = battery_manager_pdata.bat_removal; bq24157_pdata.vf_irq = gpio_to_irq(bq24157_pdata.vf_gpio); battery_manager_pdata.jig_on = omap_muxtbl_get_gpio_by_name("JIG_ON_18"); battery_manager_pdata.bootmode = sec_bootmode; pr_info("%s: bootmode is %d\n", __func__, battery_manager_pdata.bootmode); /* ret = platform_device_register(&gokey_gpio_i2c5_device); if (ret < 0) pr_err("%s: gpio_i2c5 device register fail\n", __func__); */ ret = platform_device_register(&gokey_gpio_i2c7_device); if (ret < 0) pr_err("%s: gpio_i2c7 device register fail\n", __func__); i2c_register_board_info(4, bq24157_i2c, ARRAY_SIZE(bq24157_i2c)); i2c_register_board_info(7, beagle_i2c2_boardinfo, ARRAY_SIZE(beagle_i2c2_boardinfo)); ret = platform_device_register(&battery_manager_device); if (ret < 0) pr_err("%s: battery monitor device register fail\n", __func__); }
static void __init gokey_gpio_keypad_gpio_init(void) { int i; for (i = 0; i < ARRAY_SIZE(keys_map_high_gpios); i++) gokey_gpio_keypad_keys_map_high[i].gpio = omap_muxtbl_get_gpio_by_name(keys_map_high_gpios[i].label); for (i = 0; i < ARRAY_SIZE(keys_map_low_gpios); i++) gokey_gpio_keypad_keys_map_low[i].gpio = omap_muxtbl_get_gpio_by_name(keys_map_low_gpios[i].label); }
static void __init espresso10_audio_init(void) { #ifdef CONFIG_TWL6040_CODEC espresso10_codec.audpwron_gpio = omap_muxtbl_get_gpio_by_name("AUD_PWRON"); #endif #ifdef CONFIG_SND_SOC_WM8994 platform_device_register(&vbatt_device); wm1811_pdata.ldo[0].enable = omap_muxtbl_get_gpio_by_name("CODEC_LDO_EN"); #endif }
void __init omap4_superior_display_init(void) { struct panel_s6e8aa0a01_data *panel; int oled_det_gpio; /* Removed ENABLE_ON_INIT flag for dss_sys_clk(functional clock) * in arch/arm/mach-omap2/clock44xx_data.c, manually * enabling the functional clock by getting dss_sys_fclk. * NOTE: It will be disabled, during disable path. */ #ifdef CONFIG_FB_OMAP_BOOTLOADER_INIT dss_ick = clk_get(NULL, "ick"); if (IS_ERR(dss_ick)) { pr_err("Could not get dss interface clock\n"); /* return -ENOENT; */ } dss_sys_fclk = omap_clk_get_by_name("dss_sys_clk"); if (IS_ERR(dss_sys_fclk)) { pr_err("Could not get dss system clock\n"); /* return -ENOENT; */ } clk_enable(dss_sys_fclk); dss_dss_fclk = omap_clk_get_by_name("dss_dss_clk"); if (IS_ERR(dss_dss_fclk)) { pr_err("Could not get dss functional clock\n"); /* return -ENOENT; */ } #endif panel = &superior_oled_data; superior_oled_device.data = panel; omap4_ctrl_pad_writel(0x1FF80000, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY); panel->reset_gpio = omap_muxtbl_get_gpio_by_name("MLCD_RST"); panel->oled_id_gpio = omap_muxtbl_get_gpio_by_name("OLED_ID"); oled_det_gpio = omap_muxtbl_get_gpio_by_name("OLED_DET"); gpio_request(oled_det_gpio, "OLED_DET"); gpio_direction_input(oled_det_gpio); panel->oled_det_irq = gpio_to_irq(oled_det_gpio); get_panel_data(panel_data, panel); omap_display_init(&superior_dss_data); }
void __init omap4_kona_pmic_init(void) { unsigned int gpio_sys_drm_msec = omap_muxtbl_get_gpio_by_name("SYS_DRM_MSEC"); /* Update oscillator information */ omap_pm_set_osc_lp_time(15000, 1); /* * This will allow unused regulator to be shutdown. This flag * should be set in the board file. Before regulators are registered. */ regulator_has_full_constraints(); platform_add_devices(kona_pmic_devices, ARRAY_SIZE(kona_pmic_devices)); i2c_register_board_info(1, kona_twl6034_i2c1_board_info, ARRAY_SIZE(kona_twl6034_i2c1_board_info)); /* * Drive MSECURE high for TWL6034 write access. */ gpio_request(gpio_sys_drm_msec, "SYS_DRM_MSEC"); gpio_direction_output(gpio_sys_drm_msec, 1); if (enable_sr) omap_enable_smartreflex_on_init(); /*enable off-mode*/ omap_pm_enable_off_mode(); }
static void kona_display_gpio_init(void) { int i; for (i = 0; i < ARRAY_SIZE(display_gpios); i++) display_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(display_gpios[i].label); gpio_request_array(display_gpios, ARRAY_SIZE(display_gpios)); #ifdef CONFIG_OMAP4_DSS_HDMI kona_hdmi_device.hpd_gpio = omap_muxtbl_get_gpio_by_name("HDMI_HPD"); kona_hdmi_mux_init(); #endif }
static void __init espresso_ts_panel_setup(void) { int i, panel_id = 0; for (i = 0; i < ARRAY_SIZE(ts_panel_gpios); i++) ts_panel_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(ts_panel_gpios[i].label); gpio_request_array(ts_panel_gpios, ARRAY_SIZE(ts_panel_gpios)); for (i = 0; i < ARRAY_SIZE(ts_panel_gpios); i++) panel_id |= gpio_get_value(ts_panel_gpios[i].gpio) << i; if (board_is_espresso10()) { espresso_ts_pdata.fw_name = "synaptics/p5100.fw"; espresso_ts_pdata.fw_info = &espresso10_tsp_fw_info, espresso_ts_pdata.rx_channel_no = 42, espresso_ts_pdata.tx_channel_no = 27, espresso_ts_pdata.x_pixel_size = 1279, espresso_ts_pdata.y_pixel_size = 799, espresso_ts_pdata.pivot = false, espresso_ts_pdata.ta_state = CABLE_NONE, panel_id += 2; } espresso_ts_pdata.panel_name = panel_name[clamp(panel_id, 0, 7)]; }
static void __init espresso_tsp_gpio_init(void) { int i; for (i = 0; i < ARRAY_SIZE(tsp_gpios); i++) tsp_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(tsp_gpios[i].label); if (board_is_espresso10()) tsp_gpios[GPIO_TOUCH_EN].flags = GPIOF_DIR_OUT; gpio_request_array(tsp_gpios, ARRAY_SIZE(tsp_gpios)); espresso_i2c3_boardinfo[0].irq = gpio_to_irq(tsp_gpios[GPIO_TOUCH_nINT].gpio); if (board_is_espresso10()) { espresso_ts_pdata.gpio_en = tsp_gpios[GPIO_TOUCH_EN].gpio; espresso10_i2c3_boardinfo[0].irq = gpio_to_irq(tsp_gpios[GPIO_TOUCH_nINT].gpio); } espresso_ts_pdata.gpio_irq = tsp_gpios[GPIO_TOUCH_nINT].gpio; espresso_ts_pdata.gpio_scl = tsp_gpios[GPIO_TOUCH_SCL].gpio; espresso_ts_pdata.gpio_sda = tsp_gpios[GPIO_TOUCH_SDA].gpio; }
static void __init kona_input_tsp_init(void) { SYNA_platformdata.attn_gpio = SYNA_gpiodata.gpio_number = omap_muxtbl_get_gpio_by_name(SYNA_gpiodata.gpio_name); i2c_register_board_info(3, synaptics_i2c_devices, ARRAY_SIZE(synaptics_i2c_devices)); }
void __init omap4_superior_audio_init(void) { unsigned int gpio_ear_send_end; platform_device_register(&vbatt_device); wm1811_pdata.ldo[0].enable = omap_muxtbl_get_gpio_by_name("CODEC_LDO_EN"); gpio_ear_send_end = omap_muxtbl_get_gpio_by_name("EAR_SEND_END"); gpio_request(gpio_ear_send_end, "EAR_SEND_END"); superior_audio_i2c1_board_info[0].irq = gpio_to_irq(gpio_ear_send_end); i2c_register_board_info(1, superior_audio_i2c1_board_info, ARRAY_SIZE(superior_audio_i2c1_board_info)); }
static void __init espresso_audio_init(void) { #ifdef CONFIG_TWL6040_CODEC espresso_codec.audpwron_gpio = omap_muxtbl_get_gpio_by_name("AUD_PWRON"); #endif #ifdef CONFIG_SND_SOC_WM8994 platform_device_register(&vbatt_device); wm1811_pdata.mclk_pin = omap_muxtbl_get_gpio_by_name("26M_EN"); gpio_request(wm1811_pdata.mclk_pin, "26M_EN"); gpio_direction_output(wm1811_pdata.mclk_pin, 1); wm1811_pdata.ldo[0].enable = omap_muxtbl_get_gpio_by_name("CODEC_LDO_EN"); #endif }
static void __init sprd_modem_cfg_gpio(void) { int i; for (i = 0; i < ARRAY_SIZE(modem_gpios); i++) modem_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(modem_gpios[i].label); gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios)); mdmctl_data.gpio_phone_on = modem_gpios[GPIO_PHONE_ON].gpio; mdmctl_data.gpio_phone_active = modem_gpios[GPIO_PHONE_ACTIVE].gpio; mdmctl_data.gpio_pda_active = modem_gpios[GPIO_PDA_ACTIVE].gpio; mdmctl_data.gpio_cp_dump_int = modem_gpios[GPIO_CP_DUMP_INT].gpio; mdmctl_data.gpio_ap_cp_int2 = modem_gpios[GPIO_AP_CP_INT2].gpio; uart_sel = omap_muxtbl_get_gpio_by_name("UART_SEL"); pr_debug("[MODEM_IF] %s done\n", __func__); }
static void charger_gpio_init(void) { int i; for (i = 0; i < ARRAY_SIZE(charger_gpios); i++) { charger_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(charger_gpios[i].label); } gpio_request_array(charger_gpios, ARRAY_SIZE(charger_gpios)); }
static void __init espresso10_ts_panel_setup(void) { int i, panel_id = 0; for (i = 0; i < ARRAY_SIZE(ts_panel_gpios); i++) ts_panel_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(ts_panel_gpios[i].label); gpio_request_array(ts_panel_gpios, ARRAY_SIZE(ts_panel_gpios)); for (i = 0; i < ARRAY_SIZE(ts_panel_gpios); i++) panel_id |= gpio_get_value(ts_panel_gpios[i].gpio) << i; espresso10_ts_pdata.panel_name = panel_name[panel_id]; }
static void palau_power_gpio_init(void) { int i; palau_max77693_pdata.irq_gpio = omap_muxtbl_get_gpio_by_name("JACK_nINT"); palau_max77693_pdata.irq_gpio_label = "JACK_nINT"; palau_pmic_i2c_boardinfo[0].platform_data = &palau_max77693_pdata; for (i = 0; i < ARRAY_SIZE(battery_gpios); i++) battery_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(battery_gpios[i].label); gpio_request_array(battery_gpios, ARRAY_SIZE(battery_gpios)); sec_battery_pdata.bat_irq = OMAP_MAX77693_IRQ_BASE + MAX77693_CHG_IRQ_CHGIN_I; sec_battery_pdata.fg_irq = gpio_to_irq(battery_gpios[FUEL_ALERT].gpio); sec_battery_pdata.chg_irq = OMAP_MAX77693_IRQ_BASE + MAX77693_CHG_IRQ_CHG_I; }
static void __init umts_modem_cfg_gpio(void) { int i; for (i = 0; i < ARRAY_SIZE(modem_gpios); i++) modem_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(modem_gpios[i].label); gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios)); umts_modem_data.gpio_cp_on = modem_gpios[GPIO_CP_ON].gpio; umts_modem_data.gpio_reset_req_n = modem_gpios[GPIO_RESET_REQ].gpio; umts_modem_data.gpio_cp_reset = modem_gpios[GPIO_CP_RST].gpio; umts_modem_data.gpio_pda_active = modem_gpios[GPIO_PDA_ACTIVE].gpio; umts_modem_data.gpio_phone_active = modem_gpios[GPIO_PHONE_ACTIVE].gpio; umts_modem_data.gpio_cp_dump_int = modem_gpios[GPIO_CP_DUMP_INT].gpio; pr_debug("umts_modem_cfg_gpio done\n"); }
static void __init spi_modem_cfg_gpio(void) { int i; for (i = 0; i < ARRAY_SIZE(spi_gpios); i++) spi_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(spi_gpios[i].label); gpio_request_array(spi_gpios, ARRAY_SIZE(spi_gpios)); spi_modem_data.gpio_ipc_mrdy = spi_gpios[GPIO_AP_CP_MRDY].gpio; spi_modem_data.gpio_ipc_srdy = spi_gpios[GPIO_AP_CP_SRDY].gpio; spi_modem_data.gpio_ipc_sub_mrdy = spi_gpios[GPIO_AP_CP_SUB_MRDY].gpio; spi_modem_data.gpio_ipc_sub_srdy = spi_gpios[GPIO_AP_CP_SUB_SRDY].gpio; pr_info("[SPI] %s done\n", __func__); }
static void __init palau_tsp_gpio_init(void) { int i, n = ARRAY_SIZE(tsp_gpios); /* To do not request a TOUCH_EN gpio at above rev.1 boards */ n = (system_rev < 1) ? n : n - 1; for (i = 0; i < n; i++) tsp_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(tsp_gpios[i].label); if (gpio_request_array(tsp_gpios, n) < 0) pr_err("tsp: gpio_request failed."); palau_i2c3_boardinfo[0].irq = gpio_to_irq(tsp_gpios[GPIO_TOUCH_nINT].gpio); }
static void __init kona_tsp_gpio_init(void) { int i, n = ARRAY_SIZE(tsp_gpios); for (i = 0; i < n; i++) tsp_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(tsp_gpios[i].label); if (gpio_request_array(tsp_gpios, n) < 0) pr_err("tsp: gpio_request failed."); kona_i2c3_boardinfo[0].irq = gpio_to_irq(tsp_gpios[GPIO_TOUCH_nINT].gpio); kona_ts_pdata.gpio_irq = tsp_gpios[GPIO_TOUCH_nINT].gpio; kona_ts_pdata.gpio_scl = tsp_gpios[GPIO_TOUCH_SCL].gpio; kona_ts_pdata.gpio_sda = tsp_gpios[GPIO_TOUCH_SDA].gpio; }
static int __init espresso_hsmmc_init(struct omap2_hsmmc_info *controllers) { struct omap2_hsmmc_info *c; /* Board specific GPIO pin for External LDO control */ for (c = controllers; c->mmc; c++) { if ((c->mmc == 2) && (c->external_ldo == true)) c->gpio_for_ldo = omap_muxtbl_get_gpio_by_name("eMMC_EN"); } omap2_hsmmc_init(controllers); for (c = controllers; c->mmc; c++) espresso_hsmmc_set_late_init(c->dev); return 0; }
static void __init gokey_tsp_gpio_init(void) { int i; u32 r; for (i = 0; i < ARRAY_SIZE(tsp_gpios); i++) tsp_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(tsp_gpios[i].label); gpio_request_array(tsp_gpios, ARRAY_SIZE(tsp_gpios)); gokey_i2c3_boardinfo[0].irq = gpio_to_irq(tsp_gpios[GPIO_TOUCH_nINT].gpio); /* i2c3 line using external pullup */ r = omap4_ctrl_pad_readl(OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_0); r |= (1 << OMAP4_I2C3_SDA_PULLUPRESX_SHIFT); r |= (1 << OMAP4_I2C3_SCL_PULLUPRESX_SHIFT); omap4_ctrl_pad_writel(r, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_0); omap_mux_set_gpio(OMAP_PIN_INPUT | OMAP_PIN_OFF_WAKEUPENABLE | OMAP_MUX_MODE3, tsp_gpios[GPIO_TOUCH_nINT].gpio); }
void __init omap4_espresso10_sensors_init(void) { int i; for (i = 0; i < ARRAY_SIZE(sensors_gpios); i++) sensors_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(sensors_gpios[i].label); gpio_request_array(sensors_gpios, ARRAY_SIZE(sensors_gpios)); omap_mux_init_gpio(sensors_gpios[GPIO_MSENSE_IRQ].gpio, OMAP_PIN_OUTPUT); gpio_free(sensors_gpios[GPIO_MSENSE_IRQ].gpio); gpio_request(sensors_gpios[GPIO_MSENSE_IRQ].gpio, "MSENSE_IRQ"); gpio_direction_output(sensors_gpios[GPIO_MSENSE_IRQ].gpio, 1); i2c_register_board_info(4, espresso10_sensors_i2c4_boardinfo, ARRAY_SIZE(espresso10_sensors_i2c4_boardinfo)); }
static void __init kona_wacom_gpio_init(void) { int i, n = ARRAY_SIZE(wacom_gpios); for (i = 0; i < n; i++) wacom_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(wacom_gpios[i].label); if (system_rev < 5) n--; else if (system_rev < 4) n -= 2; if (gpio_request_array(wacom_gpios, n) < 0) pr_err("wacom: gpio_request failed."); kona_i2c10_boardinfo[0].irq = gpio_to_irq(wacom_gpios[GPIO_PEN_IRQ].gpio); wacom_pdata.gpio_pendct = wacom_gpios[GPIO_PEN_PDCT].gpio; wacom_pdata.gpio_pen_insert = wacom_gpios[GPIO_PEN_DETECT].gpio; wacom_pdata.gpio_pen_fwe1 = wacom_gpios[GPIO_PEN_FWE1].gpio; }
int __init omap4_espresso_irled_init(void) { int ret = 0; int i; unsigned int boardtype = omap4_espresso_get_board_type(); if (system_rev > 6 && boardtype != SEC_MACHINE_ESPRESSO_USA_BBY) return 0; for (i = 0; i < ARRAY_SIZE(irled_gpios); i++) irled_gpios[i].gpio = omap_muxtbl_get_gpio_by_name(irled_gpios[i].label); gpio_request_array(irled_gpios, ARRAY_SIZE(irled_gpios)); ret = irled_init(); if (ret < 0) { pr_err("irled: irled_init failed\n"); for (i = 0; i < ARRAY_SIZE(irled_gpios); i++) gpio_free(irled_gpios[i].gpio); } return ret; }
void __init omap4_t1_pmic_init(void) { unsigned int gpio_sys_drm_msec = omap_muxtbl_get_gpio_by_name("SYS_DRM_MSEC"); /* * This will allow unused regulator to be shutdown. This flag * should be set in the board file. Before regulators are registered. */ regulator_has_full_constraints(); t1_audio_init(); platform_add_devices(t1_pmic_devices, ARRAY_SIZE(t1_pmic_devices)); i2c_register_board_info(1, t1_pmic_i2c1_board_info, ARRAY_SIZE(t1_pmic_i2c1_board_info)); /* * Drive MSECURE high for TWL6030 write access. */ gpio_request(gpio_sys_drm_msec, "SYS_DRM_MSEC"); gpio_direction_output(gpio_sys_drm_msec, 1); }