mx31: calls to gpio_request moved into platform code
In order to use the gpiolib, we now have to call gpio_request in the plaform code since it is not done in iomux code anymore. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
ef754d6358
commit
4f163eb881
6 changed files with 129 additions and 13 deletions
|
@ -187,7 +187,7 @@ static void __init mx31ads_init_expio(void)
|
||||||
/*
|
/*
|
||||||
* Configure INT line as GPIO input
|
* Configure INT line as GPIO input
|
||||||
*/
|
*/
|
||||||
mxc_iomux_setup_pin(IOMUX_MODE(MX31_PIN_GPIO1_4, IOMUX_CONFIG_GPIO), "expio");
|
mxc_iomux_alloc_pin(IOMUX_MODE(MX31_PIN_GPIO1_4, IOMUX_CONFIG_GPIO), "expio");
|
||||||
|
|
||||||
/* disable the interrupt and clear the status */
|
/* disable the interrupt and clear the status */
|
||||||
__raw_writew(0xFFFF, PBC_INTMASK_CLEAR_REG);
|
__raw_writew(0xFFFF, PBC_INTMASK_CLEAR_REG);
|
||||||
|
|
|
@ -118,14 +118,21 @@ void __init mx31lite_map_io(void)
|
||||||
*/
|
*/
|
||||||
static void __init mxc_board_init(void)
|
static void __init mxc_board_init(void)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins),
|
mxc_iomux_setup_multiple_pins(mx31lite_pins, ARRAY_SIZE(mx31lite_pins),
|
||||||
"mx31lite");
|
"mx31lite");
|
||||||
|
|
||||||
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
mxc_register_device(&mxc_uart_device0, &uart_pdata);
|
||||||
|
|
||||||
/* SMSC9117 IRQ pin */
|
/* SMSC9117 IRQ pin */
|
||||||
|
ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_SFS6), "sms9117-irq");
|
||||||
|
if (ret)
|
||||||
|
pr_warning("could not get LAN irq gpio\n");
|
||||||
|
else {
|
||||||
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_SFS6));
|
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_SFS6));
|
||||||
platform_device_register(&smsc911x_device);
|
platform_device_register(&smsc911x_device);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init mx31lite_timer_init(void)
|
static void __init mx31lite_timer_init(void)
|
||||||
|
|
|
@ -56,14 +56,40 @@ static int devboard_sdhc2_get_ro(struct device *dev)
|
||||||
static int devboard_sdhc2_init(struct device *dev, irq_handler_t detect_irq,
|
static int devboard_sdhc2_init(struct device *dev, irq_handler_t detect_irq,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
return request_irq(gpio_to_irq(SDHC2_CD), detect_irq,
|
int ret;
|
||||||
|
|
||||||
|
ret = gpio_request(SDHC2_CD, "sdhc-detect");
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
gpio_direction_input(SDHC2_CD);
|
||||||
|
|
||||||
|
ret = gpio_request(SDHC2_WP, "sdhc-wp");
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free;
|
||||||
|
gpio_direction_input(SDHC2_WP);
|
||||||
|
|
||||||
|
ret = request_irq(gpio_to_irq(SDHC2_CD), detect_irq,
|
||||||
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
||||||
"sdhc2-card-detect", data);
|
"sdhc2-card-detect", data);
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free_2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_gpio_free_2:
|
||||||
|
gpio_free(SDHC2_WP);
|
||||||
|
err_gpio_free:
|
||||||
|
gpio_free(SDHC2_CD);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void devboard_sdhc2_exit(struct device *dev, void *data)
|
static void devboard_sdhc2_exit(struct device *dev, void *data)
|
||||||
{
|
{
|
||||||
free_irq(gpio_to_irq(SDHC2_CD), data);
|
free_irq(gpio_to_irq(SDHC2_CD), data);
|
||||||
|
gpio_free(SDHC2_WP);
|
||||||
|
gpio_free(SDHC2_CD);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct imxmmc_platform_data sdhc2_pdata = {
|
static struct imxmmc_platform_data sdhc2_pdata = {
|
||||||
|
|
|
@ -60,14 +60,40 @@ static int marxbot_sdhc2_get_ro(struct device *dev)
|
||||||
static int marxbot_sdhc2_init(struct device *dev, irq_handler_t detect_irq,
|
static int marxbot_sdhc2_init(struct device *dev, irq_handler_t detect_irq,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
return request_irq(gpio_to_irq(SDHC2_CD), detect_irq,
|
int ret;
|
||||||
|
|
||||||
|
ret = gpio_request(SDHC2_CD, "sdhc-detect");
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
gpio_direction_input(SDHC2_CD);
|
||||||
|
|
||||||
|
ret = gpio_request(SDHC2_WP, "sdhc-wp");
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free;
|
||||||
|
gpio_direction_input(SDHC2_WP);
|
||||||
|
|
||||||
|
ret = request_irq(gpio_to_irq(SDHC2_CD), detect_irq,
|
||||||
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
||||||
"sdhc2-card-detect", data);
|
"sdhc2-card-detect", data);
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free_2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_gpio_free_2:
|
||||||
|
gpio_free(SDHC2_WP);
|
||||||
|
err_gpio_free:
|
||||||
|
gpio_free(SDHC2_CD);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void marxbot_sdhc2_exit(struct device *dev, void *data)
|
static void marxbot_sdhc2_exit(struct device *dev, void *data)
|
||||||
{
|
{
|
||||||
free_irq(gpio_to_irq(SDHC2_CD), data);
|
free_irq(gpio_to_irq(SDHC2_CD), data);
|
||||||
|
gpio_free(SDHC2_WP);
|
||||||
|
gpio_free(SDHC2_CD);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct imxmmc_platform_data sdhc2_pdata = {
|
static struct imxmmc_platform_data sdhc2_pdata = {
|
||||||
|
|
|
@ -112,14 +112,40 @@ static int moboard_sdhc1_get_ro(struct device *dev)
|
||||||
static int moboard_sdhc1_init(struct device *dev, irq_handler_t detect_irq,
|
static int moboard_sdhc1_init(struct device *dev, irq_handler_t detect_irq,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
return request_irq(gpio_to_irq(SDHC1_CD), detect_irq,
|
int ret;
|
||||||
|
|
||||||
|
ret = gpio_request(SDHC1_CD, "sdhc-detect");
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
gpio_direction_input(SDHC1_CD);
|
||||||
|
|
||||||
|
ret = gpio_request(SDHC1_WP, "sdhc-wp");
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free;
|
||||||
|
gpio_direction_input(SDHC1_WP);
|
||||||
|
|
||||||
|
ret = request_irq(gpio_to_irq(SDHC1_CD), detect_irq,
|
||||||
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
||||||
"sdhc1-card-detect", data);
|
"sdhc1-card-detect", data);
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free_2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_gpio_free_2:
|
||||||
|
gpio_free(SDHC1_WP);
|
||||||
|
err_gpio_free:
|
||||||
|
gpio_free(SDHC1_CD);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void moboard_sdhc1_exit(struct device *dev, void *data)
|
static void moboard_sdhc1_exit(struct device *dev, void *data)
|
||||||
{
|
{
|
||||||
free_irq(gpio_to_irq(SDHC1_CD), data);
|
free_irq(gpio_to_irq(SDHC1_CD), data);
|
||||||
|
gpio_free(SDHC1_WP);
|
||||||
|
gpio_free(SDHC1_CD);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct imxmmc_platform_data sdhc1_pdata = {
|
static struct imxmmc_platform_data sdhc1_pdata = {
|
||||||
|
|
|
@ -280,27 +280,50 @@ static int pcm970_sdhc1_get_ro(struct device *dev)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define SDHC1_GPIO_WP IOMUX_TO_GPIO(MX31_PIN_SFS6)
|
||||||
|
#define SDHC1_GPIO_DET IOMUX_TO_GPIO(MX31_PIN_SCK6)
|
||||||
|
|
||||||
static int pcm970_sdhc1_init(struct device *dev, irq_handler_t detect_irq,
|
static int pcm970_sdhc1_init(struct device *dev, irq_handler_t detect_irq,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
int gpio_det, gpio_wp;
|
|
||||||
|
|
||||||
gpio_det = IOMUX_TO_GPIO(MX31_PIN_SCK6);
|
ret = gpio_request(SDHC1_GPIO_DET, "sdhc-detect");
|
||||||
gpio_wp = IOMUX_TO_GPIO(MX31_PIN_SFS6);
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
gpio_direction_input(gpio_det);
|
gpio_direction_input(SDHC1_GPIO_DET);
|
||||||
gpio_direction_input(gpio_wp);
|
|
||||||
|
#ifdef PCM970_SDHC_RW_SWITCH
|
||||||
|
ret = gpio_request(SDHC1_GPIO_WP, "sdhc-wp");
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free;
|
||||||
|
gpio_direction_input(SDHC1_GPIO_WP);
|
||||||
|
#endif
|
||||||
|
|
||||||
ret = request_irq(IOMUX_TO_IRQ(MX31_PIN_SCK6), detect_irq,
|
ret = request_irq(IOMUX_TO_IRQ(MX31_PIN_SCK6), detect_irq,
|
||||||
IRQF_DISABLED | IRQF_TRIGGER_FALLING,
|
IRQF_DISABLED | IRQF_TRIGGER_FALLING,
|
||||||
"sdhc-detect", data);
|
"sdhc-detect", data);
|
||||||
|
if (ret)
|
||||||
|
goto err_gpio_free_2;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_gpio_free_2:
|
||||||
|
#ifdef PCM970_SDHC_RW_SWITCH
|
||||||
|
gpio_free(SDHC1_GPIO_WP);
|
||||||
|
err_gpio_free:
|
||||||
|
#endif
|
||||||
|
gpio_free(SDHC1_GPIO_DET);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pcm970_sdhc1_exit(struct device *dev, void *data)
|
static void pcm970_sdhc1_exit(struct device *dev, void *data)
|
||||||
{
|
{
|
||||||
free_irq(IOMUX_TO_IRQ(MX31_PIN_SCK6), data);
|
free_irq(IOMUX_TO_IRQ(MX31_PIN_SCK6), data);
|
||||||
|
gpio_free(SDHC1_GPIO_DET);
|
||||||
|
gpio_free(SDHC1_GPIO_WP);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct imxmmc_platform_data sdhc_pdata = {
|
static struct imxmmc_platform_data sdhc_pdata = {
|
||||||
|
@ -313,7 +336,6 @@ static struct imxmmc_platform_data sdhc_pdata = {
|
||||||
|
|
||||||
static struct platform_device *devices[] __initdata = {
|
static struct platform_device *devices[] __initdata = {
|
||||||
&pcm037_flash,
|
&pcm037_flash,
|
||||||
&pcm037_eth,
|
|
||||||
&pcm037_sram_device,
|
&pcm037_sram_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -370,6 +392,8 @@ static struct mx3fb_platform_data mx3fb_pdata = {
|
||||||
*/
|
*/
|
||||||
static void __init mxc_board_init(void)
|
static void __init mxc_board_init(void)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
mxc_iomux_setup_multiple_pins(pcm037_pins, ARRAY_SIZE(pcm037_pins),
|
mxc_iomux_setup_multiple_pins(pcm037_pins, ARRAY_SIZE(pcm037_pins),
|
||||||
"pcm037");
|
"pcm037");
|
||||||
|
|
||||||
|
@ -382,7 +406,14 @@ static void __init mxc_board_init(void)
|
||||||
mxc_register_device(&mxc_w1_master_device, NULL);
|
mxc_register_device(&mxc_w1_master_device, NULL);
|
||||||
|
|
||||||
/* LAN9217 IRQ pin */
|
/* LAN9217 IRQ pin */
|
||||||
|
ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1), "lan9217-irq");
|
||||||
|
if (ret)
|
||||||
|
pr_warning("could not get LAN irq gpio\n");
|
||||||
|
else {
|
||||||
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO3_1));
|
||||||
|
platform_device_register(&pcm037_eth);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_I2C_IMX
|
#ifdef CONFIG_I2C_IMX
|
||||||
i2c_register_board_info(1, pcm037_i2c_devices,
|
i2c_register_board_info(1, pcm037_i2c_devices,
|
||||||
|
|
Loading…
Reference in a new issue