static void __init omap_2430sdp_init(void) { int ret; omap2430_mux_init(board_mux, OMAP_PACKAGE_ZAC); omap_board_config = sdp2430_config; omap_board_config_size = ARRAY_SIZE(sdp2430_config); omap2430_i2c_init(); platform_add_devices(sdp2430_devices, ARRAY_SIZE(sdp2430_devices)); omap_serial_init(); omap2_hsmmc_init(mmc); omap2_usbfs_init(&sdp2430_usb_config); omap_mux_init_signal("usb0hs_stp", OMAP_PULL_ENA | OMAP_PULL_UP); usb_musb_init(&musb_board_data); board_smc91x_init(); /* Turn off secondary LCD backlight */ ret = gpio_request(SECONDARY_LCD_GPIO, "Secondary LCD backlight"); if (ret == 0) gpio_direction_output(SECONDARY_LCD_GPIO, 0); }
static int omap3evm_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { int r, lcd_bl_en; /* gpio + 0 is "mmc0_cd" (input/IRQ) */ omap_mux_init_gpio(63, OMAP_PIN_INPUT); mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* * Most GPIOs are for USB OTG. Some are mostly sent to * the P2 connector; notably LEDA for the LCD backlight. */ /* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */ lcd_bl_en = get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2 ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW; r = gpio_request_one(gpio + TWL4030_GPIO_MAX, lcd_bl_en, "EN_LCD_BKL"); if (r) printk(KERN_ERR "failed to get/set lcd_bkl gpio\n"); /* gpio + 7 == DVI Enable */ gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "EN_DVI"); /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; platform_device_register(&leds_gpio); return 0; }
static void mmc0_init(void) { setup_pin_mux(mmc0_pin_mux); omap2_hsmmc_init(am335x_mmc); return; }
static int touchbook_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { if (system_rev >= 0x20 && system_rev <= 0x34301000) { omap_mux_init_gpio(23, OMAP_PIN_INPUT); mmc[0].gpio_wp = 23; } else { omap_mux_init_gpio(29, OMAP_PIN_INPUT); } /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* REVISIT: need ehci-omap hooks for external VBUS * power switch and overcurrent detect */ gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC"); /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ gpio_request_one(gpio + TWL4030_GPIO_MAX, GPIOF_OUT_INIT_LOW, "nEN_USB_PWR"); /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; return 0; }
static int sdp3430_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { /* gpio + 0 is "mmc0_cd" (input/IRQ), * gpio + 1 is "mmc1_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; mmc[1].gpio_cd = gpio + 1; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters ... we "know" the * regulators will be set up only *after* we return. */ sdp3430_vmmc1_supply.dev = mmc[0].dev; sdp3430_vsim_supply.dev = mmc[0].dev; sdp3430_vmmc2_supply.dev = mmc[1].dev; /* gpio + 7 is "sub_lcd_en_bkl" (output/PWM1) */ gpio_request(gpio + 7, "sub_lcd_en_bkl"); gpio_direction_output(gpio + 7, 0); /* gpio + 15 is "sub_lcd_nRST" (output) */ gpio_request(gpio + 15, "sub_lcd_nRST"); gpio_direction_output(gpio + 15, 0); return 0; }
static int omap3evm_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { /* gpio + 0 is "mmc0_cd" (input/IRQ) */ omap_mux_init_gpio(63, OMAP_PIN_INPUT); mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters */ omap3evm_vmmc1_supply.dev = mmc[0].dev; omap3evm_vsim_supply.dev = mmc[0].dev; /* * Most GPIOs are for USB OTG. Some are mostly sent to * the P2 connector; notably LEDA for the LCD backlight. */ /* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */ gpio_request(gpio + TWL4030_GPIO_MAX, "EN_LCD_BKL"); gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); /* gpio + 7 == DVI Enable */ gpio_request(gpio + 7, "EN_DVI"); gpio_direction_output(gpio + 7, 0); /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; platform_device_register(&leds_gpio); return 0; }
static int zoom_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; #ifdef CONFIG_MMC_EMBEDDED_SDIO /* The controller that is connected to the 128x device * should have the card detect gpio disabled. This is * achieved by initializing it with a negative value */ mmc[CONFIG_TIWLAN_MMC_CONTROLLER - 1].gpio_cd = -EINVAL; #endif omap2_hsmmc_init(mmc); /* link regulators to MMC adapters ... we "know" the * regulators will be set up only *after* we return. */ zoom_vmmc1_supply.dev = mmc[0].dev; zoom_vsim_supply.dev = mmc[0].dev; zoom_vmmc2_supply.dev = mmc[1].dev; return 0; }
static int beagle_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { if (system_rev >= 0x20 && system_rev <= 0x34301000) { omap_mux_init_gpio(23, OMAP_PIN_INPUT); mmc[0].gpio_wp = 23; } else { omap_mux_init_gpio(29, OMAP_PIN_INPUT); } /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters */ beagle_vmmc1_supply.dev = mmc[0].dev; beagle_vsim_supply.dev = mmc[0].dev; /* REVISIT: need ehci-omap hooks for external VBUS * power switch and overcurrent detect */ gpio_request(gpio + 1, "EHCI_nOC"); gpio_direction_input(gpio + 1); /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; return 0; }
static int omap3pandora_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { int ret, gpio_32khz; /* gpio + {0,1} is "mmc{0,1}_cd" (input/IRQ) */ omap3pandora_mmc[0].gpio_cd = gpio + 0; omap3pandora_mmc[1].gpio_cd = gpio + 1; omap2_hsmmc_init(omap3pandora_mmc); /* gpio + 13 drives 32kHz buffer for wifi module */ gpio_32khz = gpio + 13; ret = gpio_request(gpio_32khz, "wifi 32kHz"); if (ret < 0) { pr_err("Cannot get GPIO line %d, ret=%d\n", gpio_32khz, ret); goto fail; } ret = gpio_direction_output(gpio_32khz, 1); if (ret < 0) { pr_err("Cannot set GPIO line %d, ret=%d\n", gpio_32khz, ret); goto fail_direction; } return 0; fail_direction: gpio_free(gpio_32khz); fail: return -ENODEV; }
static int devkit8000_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { int ret; omap_mux_init_gpio(29, OMAP_PIN_INPUT); /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; /* TWL4030_GPIO_MAX + 0 is "LCD_PWREN" (out, active high) */ devkit8000_lcd_device.reset_gpio = gpio + TWL4030_GPIO_MAX + 0; ret = gpio_request_one(devkit8000_lcd_device.reset_gpio, GPIOF_OUT_INIT_LOW, "LCD_PWREN"); if (ret < 0) { devkit8000_lcd_device.reset_gpio = -EINVAL; printk(KERN_ERR "Failed to request GPIO for LCD_PWRN\n"); } /* gpio + 7 is "DVI_PD" (out, active low) */ devkit8000_dvi_device.reset_gpio = gpio + 7; ret = gpio_request_one(devkit8000_dvi_device.reset_gpio, GPIOF_OUT_INIT_LOW, "DVI PowerDown"); if (ret < 0) { devkit8000_dvi_device.reset_gpio = -EINVAL; printk(KERN_ERR "Failed to request GPIO for DVI PowerDown\n"); } return 0; }
static int cm_t35_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { int wlan_rst = gpio + 2; if ((gpio_request(wlan_rst, "WLAN RST") == 0) && (gpio_direction_output(wlan_rst, 1) == 0)) { gpio_export(wlan_rst, 0); udelay(10); gpio_set_value(wlan_rst, 0); udelay(10); gpio_set_value(wlan_rst, 1); } else { pr_err("CM-T35: could not obtain gpio for WiFi reset\n"); } /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters */ cm_t35_vmmc1_supply.dev = mmc[0].dev; cm_t35_vsim_supply.dev = mmc[0].dev; return 0; }
static int zoom_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { int ret; /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters ... we "know" the * regulators will be set up only *after* we return. */ zoom_vmmc1_supply.dev = mmc[0].dev; zoom_vsim_supply.dev = mmc[0].dev; zoom_vmmc2_supply.dev = mmc[1].dev; ret = gpio_request(LCD_PANEL_ENABLE_GPIO, "lcd enable"); if (ret) { pr_err("Failed to get LCD_PANEL_ENABLE_GPIO (gpio%d).\n", LCD_PANEL_ENABLE_GPIO); return ret; } gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 0); return ret; }
static int twl4030_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { #if 0 /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* REVISIT: need ehci-omap hooks for external VBUS * power switch and overcurrent detect */ gpio_request(gpio + 1, "EHCI NOC"); gpio_direction_input(gpio + 1); if (hwrev == IGEP3_BOARD_HWREV_D) { gpio_led_data[0].gpio = IGEP3_RD_GPIO_LED_D440_RED; gpio_led_data[1].gpio = IGEP3_RD_GPIO_LED_D440_GREEN; } else { /* Hardware Rev. E */ /* TWL4030_GPIO_MAX + 0 == ledA (out, active low LED) */ gpio_led_data[0].gpio = gpio + TWL4030_GPIO_MAX + 0; /* gpio + 13 == ledsync (out, active low LED) */ gpio_led_data[1].gpio = gpio + 13; } /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */ gpio_led_data[3].gpio = gpio + TWL4030_GPIO_MAX + 1; /* Register led devices */ platform_device_register(&gpio_led_device); #endif return 0; };
static void __init am3517_evm_init(void) { omap_board_config = am3517_evm_config; omap_board_config_size = ARRAY_SIZE(am3517_evm_config); omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); am3517_evm_i2c_init(); omap_display_init(&am3517_evm_dss_data); omap_serial_init(); omap_sdrc_init(NULL, NULL); /* Configure GPIO for EHCI port */ omap_mux_init_gpio(57, OMAP_PIN_OUTPUT); usbhs_init(&usbhs_bdata); am3517_evm_hecc_init(&am3517_evm_hecc_pdata); /* DSS */ am3517_evm_display_init(); /* RTC - S35390A */ am3517_evm_rtc_init(); i2c_register_board_info(1, am3517evm_i2c1_boardinfo, ARRAY_SIZE(am3517evm_i2c1_boardinfo)); /*Ethernet*/ am3517_evm_ethernet_init(&am3517_evm_emac_pdata); /* MUSB */ am3517_evm_musb_init(); /* MMC init function */ omap2_hsmmc_init(mmc); }
static int omap3stalker_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { /* gpio + 0 is "mmc0_cd" (input/IRQ) */ omap_mux_init_gpio(23, OMAP_PIN_INPUT); mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* * Most GPIOs are for USB OTG. Some are mostly sent to * the P2 connector; notably LEDA for the LCD backlight. */ /* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */ gpio_request_one(gpio + TWL4030_GPIO_MAX, GPIOF_OUT_INIT_LOW, "EN_LCD_BKL"); /* gpio + 7 == DVI Enable */ gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "EN_DVI"); /* TWL4030_GPIO_MAX + 1 == ledB (out, mmc0) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; /* GPIO + 13 == ledsync (out, heartbeat) */ gpio_leds[3].gpio = gpio + 13; platform_device_register(&leds_gpio); return 0; }
static int devkit8000_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { omap_mux_init_gpio(29, OMAP_PIN_INPUT); /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; /* gpio + 1 is "LCD_PWREN" (out, active high) */ devkit8000_lcd_device.reset_gpio = gpio + 1; gpio_request(devkit8000_lcd_device.reset_gpio, "LCD_PWREN"); /* Disable until needed */ gpio_direction_output(devkit8000_lcd_device.reset_gpio, 0); /* gpio + 7 is "DVI_PD" (out, active low) */ devkit8000_dvi_device.reset_gpio = gpio + 7; gpio_request(devkit8000_dvi_device.reset_gpio, "DVI PowerDown"); /* Disable until needed */ gpio_direction_output(devkit8000_dvi_device.reset_gpio, 0); return 0; }
static void __init rm680_peripherals_init(void) { platform_add_devices(rm680_peripherals_devices, ARRAY_SIZE(rm680_peripherals_devices)); rm680_i2c_init(); gpmc_onenand_init(board_onenand_data); omap2_hsmmc_init(mmc); }
static int beagle_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { int r; if (beagle_config.mmc1_gpio_wp != -EINVAL) omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT); mmc[0].gpio_wp = beagle_config.mmc1_gpio_wp; /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters */ beagle_vmmc1_supply.dev = mmc[0].dev; beagle_vsim_supply.dev = mmc[0].dev; /* * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active * high / others active low) * DVI reset GPIO is different between beagle revisions */ /* Valid for all -xM revisions */ if (cpu_is_omap3630()) { /* * gpio + 1 on Xm controls the TFP410's enable line (active low) * gpio + 2 control varies depending on the board rev as below: * P7/P8 revisions(prototype): Camera EN * A2+ revisions (production): LDO (DVI, serial, led blocks) */ r = gpio_request_one(gpio + 1, GPIOF_OUT_INIT_LOW, "nDVI_PWR_EN"); if (r) pr_err("%s: unable to configure nDVI_PWR_EN\n", __func__); r = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_HIGH, "DVI_LDO_EN"); if (r) pr_err("%s: unable to configure DVI_LDO_EN\n", __func__); } else { /* * REVISIT: need ehci-omap hooks for external VBUS * power switch and overcurrent detect */ if (gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC")) pr_err("%s: unable to configure EHCI_nOC\n", __func__); } beagle_dvi_device.reset_gpio = beagle_config.reset_gpio; gpio_request_one(gpio + TWL4030_GPIO_MAX, beagle_config.usb_pwr_level, "nEN_USB_PWR"); /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; return 0; }
static int overo_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { omap2_hsmmc_init(mmc); overo_vmmc1_supply.dev = mmc[0].dev; return 0; }
static int omap3pandora_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { /* gpio + {0,1} is "mmc{0,1}_cd" (input/IRQ) */ omap3pandora_mmc[0].gpio_cd = gpio + 0; omap3pandora_mmc[1].gpio_cd = gpio + 1; omap2_hsmmc_init(omap3pandora_mmc); return 0; }
static int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers) { struct omap2_hsmmc_info *c; omap2_hsmmc_init(controllers); for (c = controllers; c->mmc; c++) omap4_twl6030_hsmmc_set_late_init(c->dev); return 0; }
void __init bugbase_peripherals_init(void) { bugbase_omap_i2c_init(); spi_register_board_info(bug_spi_board_info, ARRAY_SIZE(bug_spi_board_info)); platform_add_devices(bugbase_peripheral_devices, ARRAY_SIZE(bugbase_peripheral_devices)); bug_flash_init(); omap2_hsmmc_init(mmc); omap_init_bmi_slots(); }
void __init rx51_peripherals_init(void) { rx51_i2c_init(); board_onenand_init(); board_smc91x_init(); rx51_add_gpio_keys(); rx51_init_wl1251(); spi_register_board_info(rx51_peripherals_spi_board_info, ARRAY_SIZE(rx51_peripherals_spi_board_info)); omap2_hsmmc_init(mmc); }
static int overo_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { omap2_hsmmc_init(mmc); #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; #endif return 0; }
static int devkit8000_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { omap_mux_init_gpio(29, OMAP_PIN_INPUT); /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters */ devkit8000_vmmc1_supply.dev = mmc[0].dev; devkit8000_vsim_supply.dev = mmc[0].dev; return 0; }
static void __init omap_ldp_init(void) { omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); ldp_init_smsc911x(); omap_i2c_init(); platform_add_devices(ldp_devices, ARRAY_SIZE(ldp_devices)); omap_ads7846_init(1, 54, 310, NULL); omap_serial_init(); usb_musb_init(NULL); board_nand_init(ldp_nand_partitions, ARRAY_SIZE(ldp_nand_partitions), ZOOM_NAND_CS, 0); omap2_hsmmc_init(mmc); ldp_display_init(); }
static int hub_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { /* gpio + 0 is "mmc0_cd" (input/IRQ) */ //mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters ... we "know" the * regulators will be set up only *after* we return. */ //hub_vmmc1_supply.dev = mmc[0].dev; // 20100630 [email protected] Hub Sensor Power //hub_vsim_supply.dev = mmc[0].dev; //hub_vmmc2_supply.dev = mmc[1].dev; // 20100630 [email protected] Hub Sensor Power return 0; }
void __init rx51_peripherals_init(void) { rx51_i2c_init(); gpmc_onenand_init(board_onenand_data); board_smc91x_init(); rx51_add_gpio_keys(); rx51_init_wl1251(); spi_register_board_info(rx51_peripherals_spi_board_info, ARRAY_SIZE(rx51_peripherals_spi_board_info)); partition = omap_mux_get("core"); if (partition) omap2_hsmmc_init(mmc); platform_device_register(&rx51_charger_device); }
static int zoom_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { /* gpio + 0 is "mmc0_cd" (input/IRQ) */ mmc[0].gpio_cd = gpio + 0; omap2_hsmmc_init(mmc); /* link regulators to MMC adapters ... we "know" the * regulators will be set up only *after* we return. */ zoom_vmmc1_supply.dev = mmc[0].dev; zoom_vsim_supply.dev = mmc[0].dev; zoom_vmmc2_supply.dev = mmc[1].dev; return 0; }
static int __ref encore_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) { struct omap2_hsmmc_info *c; /* * gpio + 0 is "mmc0_cd" (input/IRQ), * gpio + 1 is "mmc1_cd" (input/IRQ) */ mmc[1].gpio_cd = gpio + 0; mmc[0].gpio_cd = gpio + 1; omap2_hsmmc_init(mmc); for (c = mmc; c->mmc; c++) encore_hsmmc_set_late_init(c->dev); return 0; }