Commit dd5980d6 authored by Eric Miao's avatar Eric Miao Committed by Russell King

[ARM] pxa/spitz: convert to use new GPIO API

Original patch from Dmitry Baryshkov's initial scoop gpio conversion
work at http://git.infradead.org/users/dbaryshkov/zaurus-2.6.git.

Separated into this dedicated generic GPIO conversion patch for the
work of deprecating pxa_gpio_mode().
Signed-off-by: default avatarDmitry Baryshkov <dbaryshkov@gmail.com>
Signed-off-by: default avatarEric Miao <eric.miao@marvell.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent edb403fb
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/major.h> #include <linux/major.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/gpio.h>
#include <linux/mmc/host.h> #include <linux/mmc/host.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/backlight.h> #include <linux/backlight.h>
...@@ -371,17 +372,36 @@ static int spitz_mci_init(struct device *dev, irq_handler_t spitz_detect_int, vo ...@@ -371,17 +372,36 @@ static int spitz_mci_init(struct device *dev, irq_handler_t spitz_detect_int, vo
pxa_gpio_mode(GPIO109_MMCDAT1_MD); pxa_gpio_mode(GPIO109_MMCDAT1_MD);
pxa_gpio_mode(GPIO110_MMCDAT2_MD); pxa_gpio_mode(GPIO110_MMCDAT2_MD);
pxa_gpio_mode(GPIO111_MMCDAT3_MD); pxa_gpio_mode(GPIO111_MMCDAT3_MD);
pxa_gpio_mode(SPITZ_GPIO_nSD_DETECT | GPIO_IN);
pxa_gpio_mode(SPITZ_GPIO_nSD_WP | GPIO_IN); err = gpio_request(SPITZ_GPIO_nSD_DETECT, "nSD_DETECT");
if (err)
goto err_out;
err = gpio_request(SPITZ_GPIO_nSD_WP, "nSD_WP");
if (err)
goto err_free_1;
gpio_direction_input(SPITZ_GPIO_nSD_DETECT);
gpio_direction_input(SPITZ_GPIO_nSD_WP);
spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250);
err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int, err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int,
IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, IRQF_DISABLED | IRQF_TRIGGER_RISING |
IRQF_TRIGGER_FALLING,
"MMC card detect", data); "MMC card detect", data);
if (err) if (err) {
printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); pr_err("%s: MMC/SD: can't request MMC card detect IRQ\n",
__func__);
goto err_free_2;
}
return 0;
err_free_2:
gpio_free(SPITZ_GPIO_nSD_WP);
err_free_1:
gpio_free(SPITZ_GPIO_nSD_DETECT);
err_out:
return err; return err;
} }
...@@ -397,12 +417,14 @@ static void spitz_mci_setpower(struct device *dev, unsigned int vdd) ...@@ -397,12 +417,14 @@ static void spitz_mci_setpower(struct device *dev, unsigned int vdd)
static int spitz_mci_get_ro(struct device *dev) static int spitz_mci_get_ro(struct device *dev)
{ {
return GPLR(SPITZ_GPIO_nSD_WP) & GPIO_bit(SPITZ_GPIO_nSD_WP); return gpio_get_value(SPITZ_GPIO_nSD_WP);
} }
static void spitz_mci_exit(struct device *dev, void *data) static void spitz_mci_exit(struct device *dev, void *data)
{ {
free_irq(SPITZ_IRQ_GPIO_nSD_DETECT, data); free_irq(SPITZ_IRQ_GPIO_nSD_DETECT, data);
gpio_free(SPITZ_GPIO_nSD_WP);
gpio_free(SPITZ_GPIO_nSD_DETECT);
} }
static struct pxamci_platform_data spitz_mci_platform_data = { static struct pxamci_platform_data spitz_mci_platform_data = {
...@@ -419,6 +441,12 @@ static struct pxamci_platform_data spitz_mci_platform_data = { ...@@ -419,6 +441,12 @@ static struct pxamci_platform_data spitz_mci_platform_data = {
*/ */
static int spitz_ohci_init(struct device *dev) static int spitz_ohci_init(struct device *dev)
{ {
int err;
err = gpio_request(SPITZ_GPIO_USB_HOST, "USB_HOST");
if (err)
return err;
/* Only Port 2 is connected */ /* Only Port 2 is connected */
pxa_gpio_mode(SPITZ_GPIO_USB_CONNECT | GPIO_IN); pxa_gpio_mode(SPITZ_GPIO_USB_CONNECT | GPIO_IN);
pxa_gpio_mode(SPITZ_GPIO_USB_HOST | GPIO_OUT); pxa_gpio_mode(SPITZ_GPIO_USB_HOST | GPIO_OUT);
...@@ -427,7 +455,7 @@ static int spitz_ohci_init(struct device *dev) ...@@ -427,7 +455,7 @@ static int spitz_ohci_init(struct device *dev)
/* Setup USB Port 2 Output Control Register */ /* Setup USB Port 2 Output Control Register */
UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE; UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE;
GPSR(SPITZ_GPIO_USB_HOST) = GPIO_bit(SPITZ_GPIO_USB_HOST); gpio_direction_output(SPITZ_GPIO_USB_HOST, 1);
UHCHR = (UHCHR) & UHCHR = (UHCHR) &
~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE); ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment