Skip to content

Commit

Permalink
mmc: pxa: Use GPIO descriptor for power
Browse files Browse the repository at this point in the history
After converting the PXA driver to use GPIO descriptors for
card detect and write protect it is relatively simple to
convert it to also use a descriptor for getting the optional
power control GPIO.

The polarity inversion flag can also go away from the platform
data since this is indicated in the GPIO machine descriptor
table.

Cc: Daniel Mack <daniel@zonque.org>
Cc: Robert Jarzmik <robert.jarzmik@free.fr>
Cc: Bartosz Golaszewski <brgl@bgdev.pl>
Cc: Andrea Adami <andrea.adami@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
  • Loading branch information
Linus Walleij authored and Ulf Hansson committed Dec 17, 2018
1 parent 80a68f3 commit f54005b
Show file tree
Hide file tree
Showing 37 changed files with 53 additions and 79 deletions.
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/balloon3.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,6 @@ static unsigned long balloon3_mmc_pin_config[] __initdata = {

static struct pxamci_platform_data balloon3_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.gpio_power = -1,
.detect_delay_ms = 200,
};

Expand Down
5 changes: 3 additions & 2 deletions arch/arm/mach-pxa/cm-x270.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,15 +289,16 @@ static inline void cmx270_init_ohci(void) {}
#if defined(CONFIG_MMC) || defined(CONFIG_MMC_MODULE)
static struct pxamci_platform_data cmx270_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.gpio_power = GPIO105_MMC_POWER,
.gpio_power_invert = 1,
};

static struct gpiod_lookup_table cmx270_mci_gpio_table = {
.dev_id = "pxa2xx-mci.0",
.table = {
/* Card detect on GPIO 83 */
GPIO_LOOKUP("gpio-pxa", GPIO83_MMC_IRQ, "cd", GPIO_ACTIVE_LOW),
/* Power on GPIO 105 */
GPIO_LOOKUP("gpio-pxa", GPIO105_MMC_POWER,
"power", GPIO_ACTIVE_LOW),
{ },
},
};
Expand Down
2 changes: 0 additions & 2 deletions arch/arm/mach-pxa/cm-x300.c
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,6 @@ static inline void cm_x300_init_nand(void) {}
static struct pxamci_platform_data cm_x300_mci_platform_data = {
.detect_delay_ms = 200,
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.gpio_power = -1,
};

static struct gpiod_lookup_table cm_x300_mci_gpio_table = {
Expand Down Expand Up @@ -491,7 +490,6 @@ static struct pxamci_platform_data cm_x300_mci2_platform_data = {
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.init = cm_x300_mci2_init,
.exit = cm_x300_mci2_exit,
.gpio_power = -1,
};

static void __init cm_x300_init_mmc(void)
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/colibri-pxa270-income.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
static struct pxamci_platform_data income_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.gpio_power = -1,
.detect_delay_ms = 200,
};

Expand Down
4 changes: 3 additions & 1 deletion arch/arm/mach-pxa/corgi.c
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,6 @@ static struct platform_device corgi_audio_device = {
static struct pxamci_platform_data corgi_mci_platform_data = {
.detect_delay_ms = 250,
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.gpio_power = CORGI_GPIO_SD_PWR,
};

static struct gpiod_lookup_table corgi_mci_gpio_table = {
Expand All @@ -506,6 +505,9 @@ static struct gpiod_lookup_table corgi_mci_gpio_table = {
/* Write protect on GPIO 7 */
GPIO_LOOKUP("gpio-pxa", CORGI_GPIO_nSD_WP,
"wp", GPIO_ACTIVE_LOW),
/* Power on GPIO 33 */
GPIO_LOOKUP("gpio-pxa", CORGI_GPIO_SD_PWR,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/csb726.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,6 @@ static struct pxamci_platform_data csb726_mci = {
.detect_delay_ms = 500,
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
/* FIXME setpower */
.gpio_power = -1,
};

static struct gpiod_lookup_table csb726_mci_gpio_table = {
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/em-x270.c
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,6 @@ static struct pxamci_platform_data em_x270_mci_platform_data = {
.init = em_x270_mci_init,
.setpower = em_x270_mci_setpower,
.exit = em_x270_mci_exit,
.gpio_power = -1,
};

static void __init em_x270_init_mmc(void)
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/gumstix.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ static struct platform_device *devices[] __initdata = {
#ifdef CONFIG_MMC_PXA
static struct pxamci_platform_data gumstix_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.gpio_power = -1,
};

static void __init gumstix_mmc_init(void)
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/idp.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@ static struct pxafb_mach_info sharp_lm8v31 = {

static struct pxamci_platform_data idp_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.gpio_power = -1,
};

static void __init idp_init(void)
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/littleton.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,6 @@ static inline void littleton_init_keypad(void) {}
static struct pxamci_platform_data littleton_mci_platform_data = {
.detect_delay_ms = 200,
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.gpio_power = -1,
};

static struct gpiod_lookup_table littleton_mci_gpio_table = {
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/lubbock.c
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,6 @@ static struct pxamci_platform_data lubbock_mci_platform_data = {
.init = lubbock_mci_init,
.get_ro = lubbock_mci_get_ro,
.exit = lubbock_mci_exit,
.gpio_power = -1,
};

static void lubbock_irda_transceiver_mode(struct device *dev, int mode)
Expand Down
8 changes: 7 additions & 1 deletion arch/arm/mach-pxa/magician.c
Original file line number Diff line number Diff line change
Expand Up @@ -776,7 +776,6 @@ static struct pxamci_platform_data magician_mci_info = {
.init = magician_mci_init,
.exit = magician_mci_exit,
.gpio_card_ro_invert = 1,
.gpio_power = EGPIO_MAGICIAN_SD_POWER,
};

/*
Expand All @@ -785,12 +784,19 @@ static struct pxamci_platform_data magician_mci_info = {
* particular chip.
*/
#define EGPIO_MAGICIAN_nSD_READONLY_OFFSET 12
/*
* Power on EGPIO register 2 index 0, so this is on the first HTC EGPIO chip
* starting at register 0 so we need offset 2*8+0 = 16 on that chip.
*/
#define EGPIO_MAGICIAN_nSD_POWER_OFFSET 16

static struct gpiod_lookup_table magician_mci_gpio_table = {
.dev_id = "pxa2xx-mci.0",
.table = {
GPIO_LOOKUP("htc-egpio-1", EGPIO_MAGICIAN_nSD_READONLY_OFFSET,
"wp", GPIO_ACTIVE_HIGH),
GPIO_LOOKUP("htc-egpio-0", EGPIO_MAGICIAN_nSD_POWER_OFFSET,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/mainstone.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,6 @@ static struct pxamci_platform_data mainstone_mci_platform_data = {
.init = mainstone_mci_init,
.setpower = mainstone_mci_setpower,
.exit = mainstone_mci_exit,
.gpio_power = -1,
};

static void mainstone_irda_transceiver_mode(struct device *dev, int mode)
Expand Down
4 changes: 3 additions & 1 deletion arch/arm/mach-pxa/mioa701.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,6 @@ struct gpio_vbus_mach_info gpio_vbus_data = {
static struct pxamci_platform_data mioa701_mci_info = {
.detect_delay_ms = 250,
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.gpio_power = GPIO91_SDIO_EN,
};

static struct gpiod_lookup_table mioa701_mci_gpio_table = {
Expand All @@ -410,6 +409,9 @@ static struct gpiod_lookup_table mioa701_mci_gpio_table = {
/* Write protect on GPIO 78 */
GPIO_LOOKUP("gpio-pxa", GPIO78_SDIO_RO,
"wp", GPIO_ACTIVE_LOW),
/* Power on GPIO 91 */
GPIO_LOOKUP("gpio-pxa", GPIO91_SDIO_EN,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/mxm8x10.c
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,6 @@ static mfp_cfg_t mfp_cfg[] __initdata = {
static struct pxamci_platform_data mxm_8x10_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.detect_delay_ms = 10,
.gpio_power = -1
};

static struct gpiod_lookup_table mxm_8x10_mci_gpio_table = {
Expand Down
7 changes: 1 addition & 6 deletions arch/arm/mach-pxa/palm27x.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,8 @@ static struct pxamci_platform_data palm27x_mci_platform_data = {
.detect_delay_ms = 200,
};

void __init palm27x_mmc_init(struct gpiod_lookup_table *gtable,
int power,
int power_inverted)
void __init palm27x_mmc_init(struct gpiod_lookup_table *gtable)
{
palm27x_mci_platform_data.gpio_power = power;
palm27x_mci_platform_data.gpio_power_invert = power_inverted;

if (gtable)
gpiod_add_lookup_table(gtable);
pxa_set_mci_info(&palm27x_mci_platform_data);
Expand Down
8 changes: 2 additions & 6 deletions arch/arm/mach-pxa/palm27x.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,9 @@
#include <linux/gpio/machine.h>

#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
extern void __init palm27x_mmc_init(struct gpiod_lookup_table *gtable,
int power,
int power_inverted);
extern void __init palm27x_mmc_init(struct gpiod_lookup_table *gtable);
#else
static inline void palm27x_mmc_init(struct gpiod_lookup_table *gtable,
int power,
int power_inverted)
static inline void palm27x_mmc_init(struct gpiod_lookup_table *gtable)
{}
#endif

Expand Down
5 changes: 3 additions & 2 deletions arch/arm/mach-pxa/palmld.c
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,8 @@ static struct gpiod_lookup_table palmld_mci_gpio_table = {
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMLD_SD_READONLY,
"wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMLD_SD_POWER,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand All @@ -338,8 +340,7 @@ static void __init palmld_init(void)
pxa_set_btuart_info(NULL);
pxa_set_stuart_info(NULL);

palm27x_mmc_init(&palmld_mci_gpio_table,
GPIO_NR_PALMLD_SD_POWER, 0);
palm27x_mmc_init(&palmld_mci_gpio_table);
palm27x_pm_init(PALMLD_STR_BASE);
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
palm27x_irda_init(GPIO_NR_PALMLD_IR_DISABLE);
Expand Down
5 changes: 3 additions & 2 deletions arch/arm/mach-pxa/palmt5.c
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,8 @@ static struct gpiod_lookup_table palmt5_mci_gpio_table = {
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMT5_SD_READONLY,
"wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMT5_SD_POWER,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand All @@ -200,8 +202,7 @@ static void __init palmt5_init(void)
pxa_set_btuart_info(NULL);
pxa_set_stuart_info(NULL);

palm27x_mmc_init(&palmt5_mci_gpio_table,
GPIO_NR_PALMT5_SD_POWER, 0);
palm27x_mmc_init(&palmt5_mci_gpio_table);
palm27x_pm_init(PALMT5_STR_BASE);
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
palm27x_udc_init(GPIO_NR_PALMT5_USB_DETECT_N,
Expand Down
3 changes: 2 additions & 1 deletion arch/arm/mach-pxa/palmtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,6 @@ static unsigned long palmtc_pin_config[] __initdata = {
#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
static struct pxamci_platform_data palmtc_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.gpio_power = GPIO_NR_PALMTC_SD_POWER,
.detect_delay_ms = 200,
};

Expand All @@ -131,6 +130,8 @@ static struct gpiod_lookup_table palmtc_mci_gpio_table = {
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTC_SD_READONLY,
"wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTC_SD_POWER,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand Down
3 changes: 2 additions & 1 deletion arch/arm/mach-pxa/palmte2.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ static unsigned long palmte2_pin_config[] __initdata = {
******************************************************************************/
static struct pxamci_platform_data palmte2_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.gpio_power = GPIO_NR_PALMTE2_SD_POWER,
};

static struct gpiod_lookup_table palmte2_mci_gpio_table = {
Expand All @@ -112,6 +111,8 @@ static struct gpiod_lookup_table palmte2_mci_gpio_table = {
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTE2_SD_READONLY,
"wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTE2_SD_POWER,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand Down
10 changes: 6 additions & 4 deletions arch/arm/mach-pxa/palmtreo.c
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,8 @@ static struct gpiod_lookup_table treo680_mci_gpio_table = {
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_TREO680_SD_READONLY,
"wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_TREO680_SD_POWER,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand All @@ -496,8 +498,7 @@ static void __init treo680_init(void)
pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config));
palmphone_common_init();
treo680_gpio_init();
palm27x_mmc_init(&treo680_mci_gpio_table,
GPIO_NR_TREO680_SD_POWER, 0);
palm27x_mmc_init(&treo680_mci_gpio_table);
}
#endif

Expand All @@ -508,6 +509,8 @@ static struct gpiod_lookup_table centro685_mci_gpio_table = {
.table = {
GPIO_LOOKUP("gpio-pxa", GPIO_NR_TREO_SD_DETECT_N,
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_CENTRO_SD_POWER,
"power", GPIO_ACTIVE_LOW),
{ },
},
};
Expand All @@ -516,8 +519,7 @@ static void __init centro_init(void)
{
pxa2xx_mfp_config(ARRAY_AND_SIZE(centro685_pin_config));
palmphone_common_init();
palm27x_mmc_init(&centro685_mci_gpio_table,
GPIO_NR_CENTRO_SD_POWER, 1);
palm27x_mmc_init(&centro685_mci_gpio_table);
}
#endif

Expand Down
5 changes: 3 additions & 2 deletions arch/arm/mach-pxa/palmtx.c
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,8 @@ static struct gpiod_lookup_table palmtx_mci_gpio_table = {
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTX_SD_READONLY,
"wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTX_SD_POWER,
"power", GPIO_ACTIVE_HIGH),
{ },
},
};
Expand All @@ -355,8 +357,7 @@ static void __init palmtx_init(void)
pxa_set_btuart_info(NULL);
pxa_set_stuart_info(NULL);

palm27x_mmc_init(&palmtx_mci_gpio_table,
GPIO_NR_PALMTX_SD_POWER, 0);
palm27x_mmc_init(&palmtx_mci_gpio_table);
palm27x_pm_init(PALMTX_STR_BASE);
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
palm27x_udc_init(GPIO_NR_PALMTX_USB_DETECT_N,
Expand Down
5 changes: 3 additions & 2 deletions arch/arm/mach-pxa/palmz72.c
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,8 @@ static struct gpiod_lookup_table palmz72_mci_gpio_table = {
"cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMZ72_SD_RO,
"wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMZ72_SD_POWER_N,
"power", GPIO_ACTIVE_LOW),
{ },
},
};
Expand All @@ -407,8 +409,7 @@ static void __init palmz72_init(void)
pxa_set_btuart_info(NULL);
pxa_set_stuart_info(NULL);

palm27x_mmc_init(&palmz72_mci_gpio_table,
GPIO_NR_PALMZ72_SD_POWER_N, 1);
palm27x_mmc_init(&palmz72_mci_gpio_table);
palm27x_lcd_init(-1, &palm_320x320_lcd_mode);
palm27x_udc_init(GPIO_NR_PALMZ72_USB_DETECT_N,
GPIO_NR_PALMZ72_USB_PULLUP, 0);
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/pcm990-baseboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,6 @@ static struct pxamci_platform_data pcm990_mci_platform_data = {
.init = pcm990_mci_init,
.setpower = pcm990_mci_setpower,
.exit = pcm990_mci_exit,
.gpio_power = -1,
};

static struct pxaohci_platform_data pcm990_ohci_platform_data = {
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/poodle.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,6 @@ static struct pxamci_platform_data poodle_mci_platform_data = {
.init = poodle_mci_init,
.setpower = poodle_mci_setpower,
.exit = poodle_mci_exit,
.gpio_power = -1,
};

static struct gpiod_lookup_table poodle_mci_gpio_table = {
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/raumfeld.c
Original file line number Diff line number Diff line change
Expand Up @@ -749,7 +749,6 @@ static struct pxamci_platform_data raumfeld_mci_platform_data = {
.init = raumfeld_mci_init,
.exit = raumfeld_mci_exit,
.detect_delay_ms = 200,
.gpio_power = -1,
};

/*
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/spitz.c
Original file line number Diff line number Diff line change
Expand Up @@ -616,7 +616,6 @@ static struct pxamci_platform_data spitz_mci_platform_data = {
.detect_delay_ms = 250,
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.setpower = spitz_mci_setpower,
.gpio_power = -1,
};

static struct gpiod_lookup_table spitz_mci_gpio_table = {
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-pxa/stargate2.c
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,6 @@ static int imote2_mci_get_ro(struct device *dev)
static struct pxamci_platform_data imote2_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, /* default anyway */
.get_ro = imote2_mci_get_ro,
.gpio_power = -1,
};

static struct gpio_led imote2_led_pins[] = {
Expand Down
Loading

0 comments on commit f54005b

Please sign in to comment.