Skip to contentSkip to conversation

pxa/mioa701: use gpio arrays for global and gsm gpio initialization

PATCH New Philipp Zabel 3 participants 8 messages Apr 20, 2011 – Jul 5, 2011

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pxa/mioa701: use gpio arrays for global and gsm gpio initialization

gpio_request_arrays() / gpio_free_arrays() are functional replacements for mio_gpio_request() / mio_gpio_free(), which are now obsolete.

---
 arch/arm/mach-pxa/mioa701.c |   66 +++++++-----------------------------------
 1 files changed, 11 insertions(+), 55 deletions(-)
arch/arm/mach-pxa/mioa701.c +11 -55
index 23925db..1ce6e5c 100644
@@ -177,50 +177,6 @@ static unsigned long mioa701_pin_config[] = {
 	MFP_CFG_OUT(GPIO116, AF0, DRIVE_HIGH),
 };
 
-#define MIO_GPIO_IN(num, _desc) \
-	{ .gpio = (num), .dir = 0, .desc = (_desc) }
-#define MIO_GPIO_OUT(num, _init, _desc) \
-	{ .gpio = (num), .dir = 1, .init = (_init), .desc = (_desc) }
-struct gpio_ress {
-	unsigned gpio : 8;
-	unsigned dir : 1;
-	unsigned init : 1;
-	char *desc;
-};
-
-static int mio_gpio_request(struct gpio_ress *gpios, int size)
-{
-	int i, rc = 0;
-	int gpio;
-	int dir;
-
-	for (i = 0; (!rc) && (i < size); i++) {
-		gpio = gpios[i].gpio;
-		dir = gpios[i].dir;
-		rc = gpio_request(gpio, gpios[i].desc);
-		if (rc) {
-			printk(KERN_ERR "Error requesting GPIO %d(%s) : %d\n",
-			       gpio, gpios[i].desc, rc);
-			continue;
-		}
-		if (dir)
-			gpio_direction_output(gpio, gpios[i].init);
-		else
-			gpio_direction_input(gpio);
-	}
-	while ((rc) && (--i >= 0))
-		gpio_free(gpios[i].gpio);
-	return rc;
-}
-
-static void mio_gpio_free(struct gpio_ress *gpios, int size)
-{
-	int i;
-
-	for (i = 0; i < size; i++)
-		gpio_free(gpios[i].gpio);
-}
-
 /* LCD Screen and Backlight */
 static struct platform_pwm_backlight_data mioa701_backlight_data = {
 	.pwm_id		= 0,
@@ -346,16 +302,16 @@ irqreturn_t gsm_on_irq(int irq, void *p)
 	return IRQ_HANDLED;
 }
 
-struct gpio_ress gsm_gpios[] = {
-	MIO_GPIO_IN(GPIO25_GSM_MOD_ON_STATE, "GSM state"),
-	MIO_GPIO_IN(GPIO113_GSM_EVENT, "GSM event"),
+static struct gpio gsm_gpios[] = {
+	{ GPIO25_GSM_MOD_ON_STATE, GPIOF_IN, "GSM state" },
+	{ GPIO113_GSM_EVENT, GPIOF_IN, "GSM event" },
 };
 
 static int __init gsm_init(void)
 {
 	int rc;
 
-	rc = mio_gpio_request(ARRAY_AND_SIZE(gsm_gpios));
+	rc = gpio_request_array(ARRAY_AND_SIZE(gsm_gpios));
 	if (rc)
 		goto err_gpio;
 	rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq,
@@ -369,7 +325,7 @@ static int __init gsm_init(void)
 
 err_irq:
 	printk(KERN_ERR "Mioa701: Can't request GSM_ON irq\n");
-	mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+	gpio_free_array(ARRAY_AND_SIZE(gsm_gpios));
 err_gpio:
 	printk(KERN_ERR "Mioa701: gsm not available\n");
 	return rc;
@@ -378,7 +334,7 @@ err_gpio:
 static void gsm_exit(void)
 {
 	free_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), NULL);
-	mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+	gpio_free_array(ARRAY_AND_SIZE(gsm_gpios));
 }
 
 /*
@@ -776,10 +732,10 @@ static void mioa701_restart(char c, const char *cmd)
 	arm_machine_restart('s', cmd);
 }
 
-static struct gpio_ress global_gpios[] = {
-	MIO_GPIO_OUT(GPIO9_CHARGE_EN, 1, "Charger enable"),
-	MIO_GPIO_OUT(GPIO18_POWEROFF, 0, "Power Off"),
-	MIO_GPIO_OUT(GPIO87_LCD_POWER, 0, "LCD Power"),
+static struct gpio global_gpios[] = {
+	{ GPIO9_CHARGE_EN, GPIOF_OUT_INIT_HIGH, "Charger enable" },
+	{ GPIO18_POWEROFF, GPIOF_OUT_INIT_LOW, "Power Off" },
+	{ GPIO87_LCD_POWER, GPIOF_OUT_INIT_LOW, "LCD Power" },
 };
 
 static void __init mioa701_machine_init(void)
@@ -793,7 +749,7 @@ static void __init mioa701_machine_init(void)
 	pxa_set_ffuart_info(NULL);
 	pxa_set_btuart_info(NULL);
 	pxa_set_stuart_info(NULL);
-	mio_gpio_request(ARRAY_AND_SIZE(global_gpios));
+	gpio_request_array(ARRAY_AND_SIZE(global_gpios));
 	bootstrap_init();
 	pxa_set_fb_info(NULL, &mioa701_pxafb_info);
 	pxa_set_mci_info(&mioa701_mci_info);
Signature · 1 line
1.7.4.4
#2 lore raw

PATCH 1/1 pxa/mioa701: use gpio arrays for global and gsm gpio initialization

Quoted 8 lines · Robert Jarzmik
Quoted 4 lines · Philipp Zabel

gpio_request_arrays() / gpio_free_arrays() are functional replacements for mio_gpio_request() / mio_gpio_free(), which are now obsolete.

Dmitry Artamonow pointed out that contrary to hx4700/mio_gpio_request(), gpio_request_array() is silent when a request fails. Would you prefer something like

int rc;
rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); if (rc)

    pr_err("MioA701: Failed to request GPIOs.\n");

in there?

regards
Philipp

#3 lore raw

PATCH 1/1 pxa/mioa701: use gpio arrays for global and gsm gpio initialization

Quoted 14 lines · pHilipp Zabel
Quoted 8 lines · Robert Jarzmik
Quoted 4 lines · Philipp Zabel

gpio_request_arrays() / gpio_free_arrays() are functional replacements for mio_gpio_request() / mio_gpio_free(), which are now obsolete.

Dmitry Artamonow pointed out that contrary to hx4700/mio_gpio_request(), gpio_request_array() is silent when a request fails. Would you prefer something like

Quoted 7 lines

int rc;
rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); if (rc)
? ?pr_err("MioA701: Failed to request GPIOs.\n");

in there?

That will always be good.

Quoted 3 lines

regards
Philipp

#4 lore raw

PATCH v2 1/1 pxa/mioa701: use gpio arrays for global and gsm gpio initialization

gpio_request_array() / gpio_free_array() are functional replacements for mio_gpio_request() / mio_gpio_free(), which are now obsolete.

---
 arch/arm/mach-pxa/mioa701.c |   70 +++++++++---------------------------------
 1 files changed, 15 insertions(+), 55 deletions(-)
arch/arm/mach-pxa/mioa701.c +15 -55
index 23925db..0741e3b 100644
@@ -177,50 +177,6 @@ static unsigned long mioa701_pin_config[] = {
 	MFP_CFG_OUT(GPIO116, AF0, DRIVE_HIGH),
 };
 
-#define MIO_GPIO_IN(num, _desc) \
-	{ .gpio = (num), .dir = 0, .desc = (_desc) }
-#define MIO_GPIO_OUT(num, _init, _desc) \
-	{ .gpio = (num), .dir = 1, .init = (_init), .desc = (_desc) }
-struct gpio_ress {
-	unsigned gpio : 8;
-	unsigned dir : 1;
-	unsigned init : 1;
-	char *desc;
-};
-
-static int mio_gpio_request(struct gpio_ress *gpios, int size)
-{
-	int i, rc = 0;
-	int gpio;
-	int dir;
-
-	for (i = 0; (!rc) && (i < size); i++) {
-		gpio = gpios[i].gpio;
-		dir = gpios[i].dir;
-		rc = gpio_request(gpio, gpios[i].desc);
-		if (rc) {
-			printk(KERN_ERR "Error requesting GPIO %d(%s) : %d\n",
-			       gpio, gpios[i].desc, rc);
-			continue;
-		}
-		if (dir)
-			gpio_direction_output(gpio, gpios[i].init);
-		else
-			gpio_direction_input(gpio);
-	}
-	while ((rc) && (--i >= 0))
-		gpio_free(gpios[i].gpio);
-	return rc;
-}
-
-static void mio_gpio_free(struct gpio_ress *gpios, int size)
-{
-	int i;
-
-	for (i = 0; i < size; i++)
-		gpio_free(gpios[i].gpio);
-}
-
 /* LCD Screen and Backlight */
 static struct platform_pwm_backlight_data mioa701_backlight_data = {
 	.pwm_id		= 0,
@@ -346,16 +302,16 @@ irqreturn_t gsm_on_irq(int irq, void *p)
 	return IRQ_HANDLED;
 }
 
-struct gpio_ress gsm_gpios[] = {
-	MIO_GPIO_IN(GPIO25_GSM_MOD_ON_STATE, "GSM state"),
-	MIO_GPIO_IN(GPIO113_GSM_EVENT, "GSM event"),
+static struct gpio gsm_gpios[] = {
+	{ GPIO25_GSM_MOD_ON_STATE, GPIOF_IN, "GSM state" },
+	{ GPIO113_GSM_EVENT, GPIOF_IN, "GSM event" },
 };
 
 static int __init gsm_init(void)
 {
 	int rc;
 
-	rc = mio_gpio_request(ARRAY_AND_SIZE(gsm_gpios));
+	rc = gpio_request_array(ARRAY_AND_SIZE(gsm_gpios));
 	if (rc)
 		goto err_gpio;
 	rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq,
@@ -369,7 +325,7 @@ static int __init gsm_init(void)
 
 err_irq:
 	printk(KERN_ERR "Mioa701: Can't request GSM_ON irq\n");
-	mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+	gpio_free_array(ARRAY_AND_SIZE(gsm_gpios));
 err_gpio:
 	printk(KERN_ERR "Mioa701: gsm not available\n");
 	return rc;
@@ -378,7 +334,7 @@ err_gpio:
 static void gsm_exit(void)
 {
 	free_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), NULL);
-	mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+	gpio_free_array(ARRAY_AND_SIZE(gsm_gpios));
 }
 
 /*
@@ -776,14 +732,16 @@ static void mioa701_restart(char c, const char *cmd)
 	arm_machine_restart('s', cmd);
 }
 
-static struct gpio_ress global_gpios[] = {
-	MIO_GPIO_OUT(GPIO9_CHARGE_EN, 1, "Charger enable"),
-	MIO_GPIO_OUT(GPIO18_POWEROFF, 0, "Power Off"),
-	MIO_GPIO_OUT(GPIO87_LCD_POWER, 0, "LCD Power"),
+static struct gpio global_gpios[] = {
+	{ GPIO9_CHARGE_EN, GPIOF_OUT_INIT_HIGH, "Charger enable" },
+	{ GPIO18_POWEROFF, GPIOF_OUT_INIT_LOW, "Power Off" },
+	{ GPIO87_LCD_POWER, GPIOF_OUT_INIT_LOW, "LCD Power" },
 };
 
 static void __init mioa701_machine_init(void)
 {
+	int rc;
+
 	PSLR  = 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */
 	PCFR = PCFR_DC_EN | PCFR_GPR_EN | PCFR_OPDE;
 	RTTR = 32768 - 1; /* Reset crazy WinCE value */
@@ -793,7 +751,9 @@ static void __init mioa701_machine_init(void)
 	pxa_set_ffuart_info(NULL);
 	pxa_set_btuart_info(NULL);
 	pxa_set_stuart_info(NULL);
-	mio_gpio_request(ARRAY_AND_SIZE(global_gpios));
+	rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios));
+	if (rc)
+		pr_err("MioA701: Failed to request GPIOs.");
 	bootstrap_init();
 	pxa_set_fb_info(NULL, &mioa701_pxafb_info);
 	pxa_set_mci_info(&mioa701_mci_info);
Signature · 1 line
1.7.4.4
maintainer
#5 lore raw

PATCH 1/1 pxa/mioa701: use gpio arrays for global and gsm gpio initialization

In reply to Eric Miao
Quoted 20 lines · Eric Miao
Quoted 19 lines · pHilipp Zabel
Quoted 8 lines · Robert Jarzmik
Quoted 4 lines · Philipp Zabel

gpio_request_arrays() / gpio_free_arrays() are functional replacements for mio_gpio_request() / mio_gpio_free(), which are now obsolete.

Dmitry Artamonow pointed out that contrary to hx4700/mio_gpio_request(), gpio_request_array() is silent when a request fails. Would you prefer something like

int rc;
rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); if (rc)
? ?pr_err("MioA701: Failed to request GPIOs.\n");

Quoted 4 lines
Quoted 2 lines

in there?

That will always be good.

Indeed.

pHilipp, keep the ack, the usage of gpio_request_array() is a very good idea. Reporting the error is even better than saying nothing.

Cheers.

Signature · 1 line
Robert
#6 lore raw

PATCH v3 1/1 pxa/mioa701: use gpio arrays for global and gsm gpio initialization

gpio_request_array() / gpio_free_array() are functional replacements for mio_gpio_request() / mio_gpio_free(), which are now obsolete.

---
 arch/arm/mach-pxa/mioa701.c |   70 +++++++++---------------------------------
 1 files changed, 15 insertions(+), 55 deletions(-)
arch/arm/mach-pxa/mioa701.c +15 -55
index 23925db..403819c 100644
@@ -177,50 +177,6 @@ static unsigned long mioa701_pin_config[] = {
 	MFP_CFG_OUT(GPIO116, AF0, DRIVE_HIGH),
 };
 
-#define MIO_GPIO_IN(num, _desc) \
-	{ .gpio = (num), .dir = 0, .desc = (_desc) }
-#define MIO_GPIO_OUT(num, _init, _desc) \
-	{ .gpio = (num), .dir = 1, .init = (_init), .desc = (_desc) }
-struct gpio_ress {
-	unsigned gpio : 8;
-	unsigned dir : 1;
-	unsigned init : 1;
-	char *desc;
-};
-
-static int mio_gpio_request(struct gpio_ress *gpios, int size)
-{
-	int i, rc = 0;
-	int gpio;
-	int dir;
-
-	for (i = 0; (!rc) && (i < size); i++) {
-		gpio = gpios[i].gpio;
-		dir = gpios[i].dir;
-		rc = gpio_request(gpio, gpios[i].desc);
-		if (rc) {
-			printk(KERN_ERR "Error requesting GPIO %d(%s) : %d\n",
-			       gpio, gpios[i].desc, rc);
-			continue;
-		}
-		if (dir)
-			gpio_direction_output(gpio, gpios[i].init);
-		else
-			gpio_direction_input(gpio);
-	}
-	while ((rc) && (--i >= 0))
-		gpio_free(gpios[i].gpio);
-	return rc;
-}
-
-static void mio_gpio_free(struct gpio_ress *gpios, int size)
-{
-	int i;
-
-	for (i = 0; i < size; i++)
-		gpio_free(gpios[i].gpio);
-}
-
 /* LCD Screen and Backlight */
 static struct platform_pwm_backlight_data mioa701_backlight_data = {
 	.pwm_id		= 0,
@@ -346,16 +302,16 @@ irqreturn_t gsm_on_irq(int irq, void *p)
 	return IRQ_HANDLED;
 }
 
-struct gpio_ress gsm_gpios[] = {
-	MIO_GPIO_IN(GPIO25_GSM_MOD_ON_STATE, "GSM state"),
-	MIO_GPIO_IN(GPIO113_GSM_EVENT, "GSM event"),
+static struct gpio gsm_gpios[] = {
+	{ GPIO25_GSM_MOD_ON_STATE, GPIOF_IN, "GSM state" },
+	{ GPIO113_GSM_EVENT, GPIOF_IN, "GSM event" },
 };
 
 static int __init gsm_init(void)
 {
 	int rc;
 
-	rc = mio_gpio_request(ARRAY_AND_SIZE(gsm_gpios));
+	rc = gpio_request_array(ARRAY_AND_SIZE(gsm_gpios));
 	if (rc)
 		goto err_gpio;
 	rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq,
@@ -369,7 +325,7 @@ static int __init gsm_init(void)
 
 err_irq:
 	printk(KERN_ERR "Mioa701: Can't request GSM_ON irq\n");
-	mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+	gpio_free_array(ARRAY_AND_SIZE(gsm_gpios));
 err_gpio:
 	printk(KERN_ERR "Mioa701: gsm not available\n");
 	return rc;
@@ -378,7 +334,7 @@ err_gpio:
 static void gsm_exit(void)
 {
 	free_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), NULL);
-	mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+	gpio_free_array(ARRAY_AND_SIZE(gsm_gpios));
 }
 
 /*
@@ -776,14 +732,16 @@ static void mioa701_restart(char c, const char *cmd)
 	arm_machine_restart('s', cmd);
 }
 
-static struct gpio_ress global_gpios[] = {
-	MIO_GPIO_OUT(GPIO9_CHARGE_EN, 1, "Charger enable"),
-	MIO_GPIO_OUT(GPIO18_POWEROFF, 0, "Power Off"),
-	MIO_GPIO_OUT(GPIO87_LCD_POWER, 0, "LCD Power"),
+static struct gpio global_gpios[] = {
+	{ GPIO9_CHARGE_EN, GPIOF_OUT_INIT_HIGH, "Charger enable" },
+	{ GPIO18_POWEROFF, GPIOF_OUT_INIT_LOW, "Power Off" },
+	{ GPIO87_LCD_POWER, GPIOF_OUT_INIT_LOW, "LCD Power" },
 };
 
 static void __init mioa701_machine_init(void)
 {
+	int rc;
+
 	PSLR  = 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */
 	PCFR = PCFR_DC_EN | PCFR_GPR_EN | PCFR_OPDE;
 	RTTR = 32768 - 1; /* Reset crazy WinCE value */
@@ -793,7 +751,9 @@ static void __init mioa701_machine_init(void)
 	pxa_set_ffuart_info(NULL);
 	pxa_set_btuart_info(NULL);
 	pxa_set_stuart_info(NULL);
-	mio_gpio_request(ARRAY_AND_SIZE(global_gpios));
+	rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios));
+	if (rc)
+		pr_err("MioA701: Failed to request GPIOs: %d", rc);
 	bootstrap_init();
 	pxa_set_fb_info(NULL, &mioa701_pxafb_info);
 	pxa_set_mci_info(&mioa701_mci_info);
Signature · 1 line
1.7.4.4
Applied
#7 lore raw

PATCH v3 1/1 pxa/mioa701: use gpio arrays for global and gsm gpio initialization

Quoted 5 lines · Philipp Zabel

gpio_request_array() / gpio_free_array() are functional replacements for mio_gpio_request() / mio_gpio_free(), which are now obsolete.

Applied.

Quoted 135 lines

---
?arch/arm/mach-pxa/mioa701.c | ? 70 +++++++++--------------------------------- ?1 files changed, 15 insertions(+), 55 deletions(-)

arch/arm/mach-pxa/mioa701.c +0 -44
index 23925db..403819c 100644
@@ -177,50 +177,6 @@ static unsigned long mioa701_pin_config[] = {
 ? ? ? ?MFP_CFG_OUT(GPIO116, AF0, DRIVE_HIGH),
 ?};
 
-#define MIO_GPIO_IN(num, _desc) \
- ? ? ? { .gpio = (num), .dir = 0, .desc = (_desc) }
-#define MIO_GPIO_OUT(num, _init, _desc) \
- ? ? ? { .gpio = (num), .dir = 1, .init = (_init), .desc = (_desc) }
-struct gpio_ress {
- ? ? ? unsigned gpio : 8;
- ? ? ? unsigned dir : 1;
- ? ? ? unsigned init : 1;
- ? ? ? char *desc;
-};
-
-static int mio_gpio_request(struct gpio_ress *gpios, int size)
-{
- ? ? ? int i, rc = 0;
- ? ? ? int gpio;
- ? ? ? int dir;
-
- ? ? ? for (i = 0; (!rc) && (i < size); i++) {
- ? ? ? ? ? ? ? gpio = gpios[i].gpio;
- ? ? ? ? ? ? ? dir = gpios[i].dir;
- ? ? ? ? ? ? ? rc = gpio_request(gpio, gpios[i].desc);
- ? ? ? ? ? ? ? if (rc) {
- ? ? ? ? ? ? ? ? ? ? ? printk(KERN_ERR "Error requesting GPIO %d(%s) : %d\n",
- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?gpio, gpios[i].desc, rc);
- ? ? ? ? ? ? ? ? ? ? ? continue;
- ? ? ? ? ? ? ? }
- ? ? ? ? ? ? ? if (dir)
- ? ? ? ? ? ? ? ? ? ? ? gpio_direction_output(gpio, gpios[i].init);
- ? ? ? ? ? ? ? else
- ? ? ? ? ? ? ? ? ? ? ? gpio_direction_input(gpio);
- ? ? ? }
- ? ? ? while ((rc) && (--i >= 0))
- ? ? ? ? ? ? ? gpio_free(gpios[i].gpio);
- ? ? ? return rc;
-}
-
-static void mio_gpio_free(struct gpio_ress *gpios, int size)
-{
- ? ? ? int i;
-
- ? ? ? for (i = 0; i < size; i++)
- ? ? ? ? ? ? ? gpio_free(gpios[i].gpio);
-}
-

?/* LCD Screen and Backlight */
?static struct platform_pwm_backlight_data mioa701_backlight_data = { ? ? ? ?.pwm_id ? ? ? ? = 0,

arch/arm/mach-pxa/mioa701.c +4 -4
@@ -346,16 +302,16 @@ irqreturn_t gsm_on_irq(int irq, void *p)
 ? ? ? ?return IRQ_HANDLED;
 ?}
 
-struct gpio_ress gsm_gpios[] = {
- ? ? ? MIO_GPIO_IN(GPIO25_GSM_MOD_ON_STATE, "GSM state"),
- ? ? ? MIO_GPIO_IN(GPIO113_GSM_EVENT, "GSM event"),
+static struct gpio gsm_gpios[] = {
+ ? ? ? { GPIO25_GSM_MOD_ON_STATE, GPIOF_IN, "GSM state" },
+ ? ? ? { GPIO113_GSM_EVENT, GPIOF_IN, "GSM event" },
 ?};
 
 ?static int __init gsm_init(void)
 ?{
 ? ? ? ?int rc;
 
- ? ? ? rc = mio_gpio_request(ARRAY_AND_SIZE(gsm_gpios));
+ ? ? ? rc = gpio_request_array(ARRAY_AND_SIZE(gsm_gpios));
 ? ? ? ?if (rc)
 ? ? ? ? ? ? ? ?goto err_gpio;
 ? ? ? ?rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq,
@@ -369,7 +325,7 @@ static int __init gsm_init(void)
 

?err_irq:
? ? ? ?printk(KERN_ERR "Mioa701: Can't request GSM_ON irq\n");
- ? ? ? mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+ ? ? ? gpio_free_array(ARRAY_AND_SIZE(gsm_gpios)); ?err_gpio:
? ? ? ?printk(KERN_ERR "Mioa701: gsm not available\n"); ? ? ? ?return rc;

arch/arm/mach-pxa/mioa701.c +1 -1
@@ -378,7 +334,7 @@ err_gpio:
 ?static void gsm_exit(void)
 ?{
 ? ? ? ?free_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), NULL);
- ? ? ? mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios));
+ ? ? ? gpio_free_array(ARRAY_AND_SIZE(gsm_gpios));
 ?}
 

?/*

arch/arm/mach-pxa/mioa701.c +6 -4
@@ -776,14 +732,16 @@ static void mioa701_restart(char c, const char *cmd)
 ? ? ? ?arm_machine_restart('s', cmd);
 ?}
 
-static struct gpio_ress global_gpios[] = {
- ? ? ? MIO_GPIO_OUT(GPIO9_CHARGE_EN, 1, "Charger enable"),
- ? ? ? MIO_GPIO_OUT(GPIO18_POWEROFF, 0, "Power Off"),
- ? ? ? MIO_GPIO_OUT(GPIO87_LCD_POWER, 0, "LCD Power"),
+static struct gpio global_gpios[] = {
+ ? ? ? { GPIO9_CHARGE_EN, GPIOF_OUT_INIT_HIGH, "Charger enable" },
+ ? ? ? { GPIO18_POWEROFF, GPIOF_OUT_INIT_LOW, "Power Off" },
+ ? ? ? { GPIO87_LCD_POWER, GPIOF_OUT_INIT_LOW, "LCD Power" },
 ?};
 
 ?static void __init mioa701_machine_init(void)
 ?{
+ ? ? ? int rc;
+

? ? ? ?PSLR ?= 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */ ? ? ? ?PCFR = PCFR_DC_EN | PCFR_GPR_EN | PCFR_OPDE;
? ? ? ?RTTR = 32768 - 1; /* Reset crazy WinCE value */

arch/arm/mach-pxa/mioa701.c +3 -2
@@ -793,7 +751,9 @@ static void __init mioa701_machine_init(void)
 ? ? ? ?pxa_set_ffuart_info(NULL);
 ? ? ? ?pxa_set_btuart_info(NULL);
 ? ? ? ?pxa_set_stuart_info(NULL);
- ? ? ? mio_gpio_request(ARRAY_AND_SIZE(global_gpios));
+ ? ? ? rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios));
+ ? ? ? if (rc)
+ ? ? ? ? ? ? ? pr_err("MioA701: Failed to request GPIOs: %d", rc);
 ? ? ? ?bootstrap_init();
 ? ? ? ?pxa_set_fb_info(NULL, &mioa701_pxafb_info);
 ? ? ? ?pxa_set_mci_info(&mioa701_mci_info);
--

1.7.4.4