Skip to content

Commit 58e2d87

Browse files
linuswstorulf
authored andcommitted
ARM: pxa: Add GPIO descriptors for Palm27x
The Palm27x devices set up the MMC card detect and write protect lines with a special helper function. Augment this helper function to also accept an optional GPIO descriptor table and pass and register this for all the Palm27x devices in that family. 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> Acked-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
1 parent 32d1544 commit 58e2d87

File tree

8 files changed

+108
-19
lines changed

8 files changed

+108
-19
lines changed

arch/arm/mach-pxa/palm27x.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,19 @@ static struct pxamci_platform_data palm27x_mci_platform_data = {
4949
.detect_delay_ms = 200,
5050
};
5151

52-
void __init palm27x_mmc_init(int detect, int ro, int power,
53-
int power_inverted)
52+
void __init palm27x_mmc_init(struct gpiod_lookup_table *gtable,
53+
int detect,
54+
int ro,
55+
int power,
56+
int power_inverted)
5457
{
5558
palm27x_mci_platform_data.gpio_card_detect = detect;
5659
palm27x_mci_platform_data.gpio_card_ro = ro;
5760
palm27x_mci_platform_data.gpio_power = power;
5861
palm27x_mci_platform_data.gpio_power_invert = power_inverted;
5962

63+
if (gtable)
64+
gpiod_add_lookup_table(gtable);
6065
pxa_set_mci_info(&palm27x_mci_platform_data);
6166
}
6267
#endif

arch/arm/mach-pxa/palm27x.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,20 @@
1212
#ifndef __INCLUDE_MACH_PALM27X__
1313
#define __INCLUDE_MACH_PALM27X__
1414

15+
#include <linux/gpio/machine.h>
16+
1517
#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
16-
extern void __init palm27x_mmc_init(int detect, int ro, int power,
17-
int power_inverted);
18+
extern void __init palm27x_mmc_init(struct gpiod_lookup_table *gtable,
19+
int detect,
20+
int ro,
21+
int power,
22+
int power_inverted);
1823
#else
19-
static inline void palm27x_mmc_init(int detect, int ro, int power,
20-
int power_inverted)
24+
static inline void palm27x_mmc_init(struct gpiod_lookup_table *gtable,
25+
int detect,
26+
int ro,
27+
int power,
28+
int power_inverted)
2129
{}
2230
#endif
2331

arch/arm/mach-pxa/palmld.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,15 +320,28 @@ static void __init palmld_map_io(void)
320320
iotable_init(palmld_io_desc, ARRAY_SIZE(palmld_io_desc));
321321
}
322322

323+
static struct gpiod_lookup_table palmld_mci_gpio_table = {
324+
.dev_id = "pxa2xx-mci.0",
325+
.table = {
326+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMLD_SD_DETECT_N,
327+
"cd", GPIO_ACTIVE_LOW),
328+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMLD_SD_READONLY,
329+
"wp", GPIO_ACTIVE_LOW),
330+
{ },
331+
},
332+
};
333+
323334
static void __init palmld_init(void)
324335
{
325336
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmld_pin_config));
326337
pxa_set_ffuart_info(NULL);
327338
pxa_set_btuart_info(NULL);
328339
pxa_set_stuart_info(NULL);
329340

330-
palm27x_mmc_init(GPIO_NR_PALMLD_SD_DETECT_N, GPIO_NR_PALMLD_SD_READONLY,
331-
GPIO_NR_PALMLD_SD_POWER, 0);
341+
palm27x_mmc_init(&palmld_mci_gpio_table,
342+
GPIO_NR_PALMLD_SD_DETECT_N,
343+
GPIO_NR_PALMLD_SD_READONLY,
344+
GPIO_NR_PALMLD_SD_POWER, 0);
332345
palm27x_pm_init(PALMLD_STR_BASE);
333346
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
334347
palm27x_irda_init(GPIO_NR_PALMLD_IR_DISABLE);

arch/arm/mach-pxa/palmt5.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,15 +182,28 @@ static void __init palmt5_reserve(void)
182182
memblock_reserve(0xa0200000, 0x1000);
183183
}
184184

185+
static struct gpiod_lookup_table palmt5_mci_gpio_table = {
186+
.dev_id = "pxa2xx-mci.0",
187+
.table = {
188+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMT5_SD_DETECT_N,
189+
"cd", GPIO_ACTIVE_LOW),
190+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMT5_SD_READONLY,
191+
"wp", GPIO_ACTIVE_LOW),
192+
{ },
193+
},
194+
};
195+
185196
static void __init palmt5_init(void)
186197
{
187198
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config));
188199
pxa_set_ffuart_info(NULL);
189200
pxa_set_btuart_info(NULL);
190201
pxa_set_stuart_info(NULL);
191202

192-
palm27x_mmc_init(GPIO_NR_PALMT5_SD_DETECT_N, GPIO_NR_PALMT5_SD_READONLY,
193-
GPIO_NR_PALMT5_SD_POWER, 0);
203+
palm27x_mmc_init(&palmt5_mci_gpio_table,
204+
GPIO_NR_PALMT5_SD_DETECT_N,
205+
GPIO_NR_PALMT5_SD_READONLY,
206+
GPIO_NR_PALMT5_SD_POWER, 0);
194207
palm27x_pm_init(PALMT5_STR_BASE);
195208
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
196209
palm27x_udc_init(GPIO_NR_PALMT5_USB_DETECT_N,

arch/arm/mach-pxa/palmtc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include <linux/input.h>
2121
#include <linux/pwm.h>
2222
#include <linux/pwm_backlight.h>
23-
#include <linux/gpio.h>
23+
#include <linux/gpio/machine.h>
2424
#include <linux/input/matrix_keypad.h>
2525
#include <linux/ucb1400.h>
2626
#include <linux/power_supply.h>

arch/arm/mach-pxa/palmtreo.c

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -480,23 +480,47 @@ void __init treo680_gpio_init(void)
480480
gpio_free(GPIO_NR_TREO680_LCD_EN_N);
481481
}
482482

483+
static struct gpiod_lookup_table treo680_mci_gpio_table = {
484+
.dev_id = "pxa2xx-mci.0",
485+
.table = {
486+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_TREO_SD_DETECT_N,
487+
"cd", GPIO_ACTIVE_LOW),
488+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_TREO680_SD_READONLY,
489+
"wp", GPIO_ACTIVE_LOW),
490+
{ },
491+
},
492+
};
493+
483494
static void __init treo680_init(void)
484495
{
485496
pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config));
486497
palmphone_common_init();
487498
treo680_gpio_init();
488-
palm27x_mmc_init(GPIO_NR_TREO_SD_DETECT_N, GPIO_NR_TREO680_SD_READONLY,
489-
GPIO_NR_TREO680_SD_POWER, 0);
499+
palm27x_mmc_init(&treo680_mci_gpio_table,
500+
GPIO_NR_TREO_SD_DETECT_N,
501+
GPIO_NR_TREO680_SD_READONLY,
502+
GPIO_NR_TREO680_SD_POWER, 0);
490503
}
491504
#endif
492505

493506
#ifdef CONFIG_MACH_CENTRO
507+
508+
static struct gpiod_lookup_table centro685_mci_gpio_table = {
509+
.dev_id = "pxa2xx-mci.0",
510+
.table = {
511+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_TREO_SD_DETECT_N,
512+
"cd", GPIO_ACTIVE_LOW),
513+
{ },
514+
},
515+
};
516+
494517
static void __init centro_init(void)
495518
{
496519
pxa2xx_mfp_config(ARRAY_AND_SIZE(centro685_pin_config));
497520
palmphone_common_init();
498-
palm27x_mmc_init(GPIO_NR_TREO_SD_DETECT_N, -1,
499-
GPIO_NR_CENTRO_SD_POWER, 1);
521+
palm27x_mmc_init(&centro685_mci_gpio_table,
522+
GPIO_NR_TREO_SD_DETECT_N, -1,
523+
GPIO_NR_CENTRO_SD_POWER, 1);
500524
}
501525
#endif
502526

arch/arm/mach-pxa/palmtx.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,15 +337,28 @@ static void __init palmtx_map_io(void)
337337
iotable_init(palmtx_io_desc, ARRAY_SIZE(palmtx_io_desc));
338338
}
339339

340+
static struct gpiod_lookup_table palmtx_mci_gpio_table = {
341+
.dev_id = "pxa2xx-mci.0",
342+
.table = {
343+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTX_SD_DETECT_N,
344+
"cd", GPIO_ACTIVE_LOW),
345+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTX_SD_READONLY,
346+
"wp", GPIO_ACTIVE_LOW),
347+
{ },
348+
},
349+
};
350+
340351
static void __init palmtx_init(void)
341352
{
342353
pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config));
343354
pxa_set_ffuart_info(NULL);
344355
pxa_set_btuart_info(NULL);
345356
pxa_set_stuart_info(NULL);
346357

347-
palm27x_mmc_init(GPIO_NR_PALMTX_SD_DETECT_N, GPIO_NR_PALMTX_SD_READONLY,
348-
GPIO_NR_PALMTX_SD_POWER, 0);
358+
palm27x_mmc_init(&palmtx_mci_gpio_table,
359+
GPIO_NR_PALMTX_SD_DETECT_N,
360+
GPIO_NR_PALMTX_SD_READONLY,
361+
GPIO_NR_PALMTX_SD_POWER, 0);
349362
palm27x_pm_init(PALMTX_STR_BASE);
350363
palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
351364
palm27x_udc_init(GPIO_NR_PALMTX_USB_DETECT_N,

arch/arm/mach-pxa/palmz72.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,17 @@ static void __init palmz72_camera_init(void)
386386
static inline void palmz72_camera_init(void) {}
387387
#endif
388388

389+
static struct gpiod_lookup_table palmz72_mci_gpio_table = {
390+
.dev_id = "pxa2xx-mci.0",
391+
.table = {
392+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMZ72_SD_DETECT_N,
393+
"cd", GPIO_ACTIVE_LOW),
394+
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMZ72_SD_RO,
395+
"wp", GPIO_ACTIVE_LOW),
396+
{ },
397+
},
398+
};
399+
389400
/******************************************************************************
390401
* Machine init
391402
******************************************************************************/
@@ -396,8 +407,10 @@ static void __init palmz72_init(void)
396407
pxa_set_btuart_info(NULL);
397408
pxa_set_stuart_info(NULL);
398409

399-
palm27x_mmc_init(GPIO_NR_PALMZ72_SD_DETECT_N, GPIO_NR_PALMZ72_SD_RO,
400-
GPIO_NR_PALMZ72_SD_POWER_N, 1);
410+
palm27x_mmc_init(&palmz72_mci_gpio_table,
411+
GPIO_NR_PALMZ72_SD_DETECT_N,
412+
GPIO_NR_PALMZ72_SD_RO,
413+
GPIO_NR_PALMZ72_SD_POWER_N, 1);
401414
palm27x_lcd_init(-1, &palm_320x320_lcd_mode);
402415
palm27x_udc_init(GPIO_NR_PALMZ72_USB_DETECT_N,
403416
GPIO_NR_PALMZ72_USB_PULLUP, 0);

0 commit comments

Comments
 (0)