static int __init omap_i2c_init(void) { /* Disable OMAP 3630 internal pull-ups for I2Ci */ if (cpu_is_omap3630()) { u32 prog_io; prog_io = omap_ctrl_readl(OMAP343X_CONTROL_PROG_IO1); /* Program (bit 19)=1 to disable internal pull-up on I2C1 */ prog_io |= OMAP3630_PRG_I2C1_PULLUPRESX; /* Program (bit 0)=1 to disable internal pull-up on I2C2 */ prog_io |= OMAP3630_PRG_I2C2_PULLUPRESX; omap_ctrl_writel(prog_io, OMAP343X_CONTROL_PROG_IO1); prog_io = omap_ctrl_readl(OMAP36XX_CONTROL_PROG_IO2); /* Program (bit 7)=1 to disable internal pull-up on I2C3 */ prog_io |= OMAP3630_PRG_I2C3_PULLUPRESX; omap_ctrl_writel(prog_io, OMAP36XX_CONTROL_PROG_IO2); prog_io = omap_ctrl_readl(OMAP36XX_CONTROL_PROG_IO_WKUP1); /* Program (bit 5)=1 to disable internal pull-up on I2C4(SR) */ prog_io |= OMAP3630_PRG_SR_PULLUPRESX; omap_ctrl_writel(prog_io, OMAP36XX_CONTROL_PROG_IO_WKUP1); } omap_pmic_init(1, 400, "twl5030", INT_34XX_SYS_NIRQ, &hub_twldata); omap_register_i2c_bus(2, 400, hub_i2c_bus2_info, ARRAY_SIZE(hub_i2c_bus2_info)); omap_register_i2c_bus(3, 400, hub_i2c_bus3_info, ARRAY_SIZE(hub_i2c_bus3_info)); return 0; }
static void __init rm680_i2c_init(void) { omap3_pmic_get_config(&rm680_twl_data, TWL_COMMON_PDATA_USB, 0); omap_pmic_init(1, 2900, "twl5031", INT_34XX_SYS_NIRQ, &rm680_twl_data); omap_register_i2c_bus(2, 400, NULL, 0); omap_register_i2c_bus(3, 400, NULL, 0); }
static int __init rx51_i2c_init(void) { if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) || system_rev >= SYSTEM_REV_B_USES_VAUX3) { rx51_twldata.vaux3 = &rx51_vaux3_mmc; /* Only older boards use VMMC2 for internal MMC */ rx51_vmmc2.num_consumer_supplies--; } else { rx51_twldata.vaux3 = &rx51_vaux3_cam; } rx51_twldata.vmmc2 = &rx51_vmmc2; omap3_pmic_get_config(&rx51_twldata, TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC, TWL_COMMON_REGULATOR_VDAC); rx51_twldata.vdac->constraints.apply_uV = true; rx51_twldata.vdac->constraints.name = "VDAC"; omap_pmic_init(1, 2200, "twl5030", 7 + OMAP_INTC_START, &rx51_twldata); omap_register_i2c_bus(2, 100, rx51_peripherals_i2c_board_info_2, ARRAY_SIZE(rx51_peripherals_i2c_board_info_2)); #if defined(CONFIG_SENSORS_LIS3_I2C) || defined(CONFIG_SENSORS_LIS3_I2C_MODULE) rx51_lis3lv02d_data.irq2 = gpio_to_irq(LIS302_IRQ2_GPIO); rx51_peripherals_i2c_board_info_3[0].irq = gpio_to_irq(LIS302_IRQ1_GPIO); #endif omap_register_i2c_bus(3, 400, rx51_peripherals_i2c_board_info_3, ARRAY_SIZE(rx51_peripherals_i2c_board_info_3)); return 0; }
static int __init omap2430_i2c_init(void) { omap_register_i2c_bus(1, 100, sdp2430_i2c1_boardinfo, ARRAY_SIZE(sdp2430_i2c1_boardinfo)); omap_pmic_init(2, 100, "twl4030", INT_24XX_SYS_NIRQ, &sdp2430_twldata); return 0; }
static void __init rm680_i2c_init(void) { omap3_pmic_get_config(&rm680_twl_data, TWL_COMMON_PDATA_USB, TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); omap_pmic_init(1, 2900, "twl5031", INT_34XX_SYS_NIRQ, &rm680_twl_data); omap_register_i2c_bus(2, 400, rm696_peripherals_i2c_board_info_2, ARRAY_SIZE(rm696_peripherals_i2c_board_info_2)); omap_register_i2c_bus(3, 400, NULL, 0); }
void __init omap4_pmic_init(const char *pmic_type, struct twl4030_platform_data *pmic_data, struct i2c_board_info *devices, int nr_devices) { /* PMIC part*/ omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE); omap_pmic_init(1, 400, pmic_type, 7 + OMAP44XX_IRQ_GIC_START, pmic_data); /* Register additional devices on i2c1 bus if needed */ if (devices) i2c_register_board_info(1, devices, nr_devices); }
void igep_init(void) { regulator_register_fixed(1, dummy_supplies, ARRAY_SIZE(dummy_supplies)); omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); /* Get IGEP3 hardware revision */ igep3_get_revision(); omap_hsmmc_init(mmc); /* Register I2C busses and drivers */ igep_i2c_init(); platform_add_devices(igep_devices, ARRAY_SIZE(igep_devices)); #if 0 omap_serial_init(); omap_sdrc_init(m65kxxxxam_sdrc_params, m65kxxxxam_sdrc_params); #endif usb_musb_init(NULL); #if 0 igep_flash_init(); igep_leds_init(); #endif /* Add twl4030 common data */ omap3_pmic_get_config(&twl4030_pdata, TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_AUDIO | TWL_COMMON_PDATA_MADC, TWL_COMMON_REGULATOR_VPLL2); igep00x0_pmic_get_config(&twl4030_pdata, 0, TWL_IGEP00X0_REGULATOR_VMMC1 | TWL_IGEP00X0_REGULATOR_VIO); omap_pmic_init(1, 2600, "twl4030", INT_34XX_SYS_NIRQ, &twl4030_pdata); platform_device_register(&igep00x0_vdd33_device); /* * WLAN-BT combo module from MuRata which has a Marvell WLAN * (88W8686) + CSR Bluetooth chipset. Uses SDIO interface. */ igep00x0_wifi_bt_init(GPIO_WIFI_NPD, GPIO_WIFI_NRESET, GPIO_BT_NRESET, 0); if (machine_is_igep0020()) { omap_display_init(&igep2_dss_data); igep2_init_smsc911x(); usbhs_init(&igep2_usbhs_bdata); } else { usbhs_init(&igep3_usbhs_bdata); } }
static int __init omap_i2c_init(void) { omap3_pmic_get_config(&zoom_twldata, TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_BCI | TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO, TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); if (machine_is_omap_zoom2()) zoom_twldata.audio->codec->ramp_delay_value = 3; /* 161 ms */ omap_pmic_init(1, 2400, "twl5030", 7 + OMAP_INTC_START, &zoom_twldata); omap_register_i2c_bus(2, 400, NULL, 0); omap_register_i2c_bus(3, 400, NULL, 0); return 0; }
static int __init rx51_i2c_init(void) { if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) || system_rev >= SYSTEM_REV_B_USES_VAUX3) { rx51_twldata.vaux3 = &rx51_vaux3_mmc; /* Only older boards use VMMC2 for internal MMC */ rx51_vmmc2.num_consumer_supplies--; } else { rx51_twldata.vaux3 = &rx51_vaux3_cam; } rx51_twldata.vmmc2 = &rx51_vmmc2; omap_pmic_init(1, 2200, "twl5030", INT_34XX_SYS_NIRQ, &rx51_twldata); omap_register_i2c_bus(2, 100, rx51_peripherals_i2c_board_info_2, ARRAY_SIZE(rx51_peripherals_i2c_board_info_2)); omap_register_i2c_bus(3, 400, NULL, 0); return 0; }
static int __init omap_i2c_init(void) { omap3_pmic_get_config(&zoom_twldata, TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_BCI | TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO, TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); if (machine_is_omap_zoom2()) { struct twl4030_codec_data *codec_data; codec_data = zoom_twldata.audio->codec; codec_data->ramp_delay_value = 3; /* 161 ms */ codec_data->hs_extmute = 1; codec_data->set_hs_extmute = zoom2_set_hs_extmute; } omap_pmic_init(1, 2400, "twl5030", INT_34XX_SYS_NIRQ, &zoom_twldata); omap_register_i2c_bus(2, 400, NULL, 0); omap_register_i2c_bus(3, 400, NULL, 0); return 0; }
static int __init omap_i2c_init(void) { omap3_pmic_get_config(&zoom_twldata, TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_BCI | TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO, TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2); if (machine_is_omap_zoom2()) { struct twl4030_codec_data *codec_data; codec_data = zoom_twldata.audio->codec; codec_data->ramp_delay_value = 3; /* 161 ms */ codec_data->hs_extmute = 1; codec_data->hs_extmute_gpio = ZOOM2_HEADSET_EXTMUTE_GPIO; } omap_pmic_init(1, 2400, "twl5030", 7 + OMAP_INTC_START, &zoom_twldata); omap_register_i2c_bus(2, 400, NULL, 0); omap_register_i2c_bus(3, 400, NULL, 0); return 0; }
static int __init rx51_i2c_init(void) { #if IS_ENABLED(CONFIG_I2C_SI4713) && IS_ENABLED(CONFIG_PLATFORM_SI4713) int err; #endif if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) || system_rev >= SYSTEM_REV_B_USES_VAUX3) { rx51_twldata.vaux3 = &rx51_vaux3_mmc; /* Only older boards use VMMC2 for internal MMC */ rx51_vmmc2.num_consumer_supplies--; } else { rx51_twldata.vaux3 = &rx51_vaux3_cam; } rx51_twldata.vmmc2 = &rx51_vmmc2; omap3_pmic_get_config(&rx51_twldata, TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC, TWL_COMMON_REGULATOR_VDAC); rx51_twldata.vdac->constraints.apply_uV = true; rx51_twldata.vdac->constraints.name = "VDAC"; omap_pmic_init(1, 2200, "twl5030", 7 + OMAP_INTC_START, &rx51_twldata); #if IS_ENABLED(CONFIG_I2C_SI4713) && IS_ENABLED(CONFIG_PLATFORM_SI4713) err = gpio_request_one(RX51_FMTX_IRQ, GPIOF_DIR_IN, "si4713 irq"); if (err) { printk(KERN_ERR "Cannot request si4713 irq gpio. %d\n", err); return err; } rx51_peripherals_i2c_board_info_2[0].irq = gpio_to_irq(RX51_FMTX_IRQ); #endif omap_register_i2c_bus(2, 100, rx51_peripherals_i2c_board_info_2, ARRAY_SIZE(rx51_peripherals_i2c_board_info_2)); #if defined(CONFIG_SENSORS_LIS3_I2C) || defined(CONFIG_SENSORS_LIS3_I2C_MODULE) rx51_lis3lv02d_data.irq2 = gpio_to_irq(LIS302_IRQ2_GPIO); rx51_peripherals_i2c_board_info_3[0].irq = gpio_to_irq(LIS302_IRQ1_GPIO); #endif omap_register_i2c_bus(3, 400, rx51_peripherals_i2c_board_info_3, ARRAY_SIZE(rx51_peripherals_i2c_board_info_3)); return 0; }
static int __init omap_i2c_init(void) { int err; /* Disable OMAP 3630 internal pull-ups for I2Ci */ if (cpu_is_omap3630()) { u32 prog_io; prog_io = omap_ctrl_readl(OMAP343X_CONTROL_PROG_IO1); /* Program (bit 19)=1 to disable internal pull-up on I2C1 */ prog_io |= OMAP3630_PRG_I2C1_PULLUPRESX; /* Program (bit 0)=1 to disable internal pull-up on I2C2 */ prog_io |= OMAP3630_PRG_I2C2_PULLUPRESX; omap_ctrl_writel(prog_io, OMAP343X_CONTROL_PROG_IO1); prog_io = omap_ctrl_readl(OMAP36XX_CONTROL_PROG_IO2); /* Program (bit 7)=1 to disable internal pull-up on I2C3 */ prog_io |= OMAP3630_PRG_I2C3_PULLUPRESX; omap_ctrl_writel(prog_io, OMAP36XX_CONTROL_PROG_IO2); prog_io = omap_ctrl_readl(OMAP36XX_CONTROL_PROG_IO_WKUP1); /* Program (bit 5)=1 to disable internal pull-up on I2C4(SR) */ prog_io |= OMAP3630_PRG_SR_PULLUPRESX; omap_ctrl_writel(prog_io, OMAP36XX_CONTROL_PROG_IO_WKUP1); } omap_pmic_init(1, 100, "tps65921", INT_34XX_SYS_NIRQ, &encore_twldata); err=i2c_register_board_info(1, encore_i2c_boardinfo, ARRAY_SIZE(encore_i2c_boardinfo)); if (err) return err; omap_register_i2c_bus(2, 400, encore_i2c_bus2_info, ARRAY_SIZE(encore_i2c_bus2_info)); return 0; }
static int __init rx51_i2c_init(void) { if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) || system_rev >= SYSTEM_REV_B_USES_VAUX3) { rx51_twldata.vaux3 = &rx51_vaux3_mmc; /* Only older boards use VMMC2 for internal MMC */ rx51_vmmc2.num_consumer_supplies--; } else { rx51_twldata.vaux3 = &rx51_vaux3_cam; } rx51_twldata.vmmc2 = &rx51_vmmc2; omap3_pmic_get_config(&rx51_twldata, TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC, TWL_COMMON_REGULATOR_VDAC); rx51_twldata.vdac->constraints.apply_uV = true; rx51_twldata.vdac->constraints.name = "VDAC"; omap_pmic_init(1, 2200, "twl5030", INT_34XX_SYS_NIRQ, &rx51_twldata); omap_register_i2c_bus(2, 100, rx51_peripherals_i2c_board_info_2, ARRAY_SIZE(rx51_peripherals_i2c_board_info_2)); omap_register_i2c_bus(3, 400, NULL, 0); return 0; }