Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 112409
b: refs/heads/master
c: dd5980d
h: refs/heads/master
i:
  112407: 6508642
v: v3
  • Loading branch information
Eric Miao authored and Russell King committed Sep 23, 2008
1 parent b644cbb commit f008b0f
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: edb403fbfb0ad56e62d8ebbecc3b846487020e0f
refs/heads/master: dd5980d68af4457e600ef6add5b541ce952147e6
42 changes: 35 additions & 7 deletions trunk/arch/arm/mach-pxa/spitz.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <linux/major.h>
#include <linux/fs.h>
#include <linux/interrupt.h>
#include <linux/gpio.h>
#include <linux/mmc/host.h>
#include <linux/pm.h>
#include <linux/backlight.h>
Expand Down Expand Up @@ -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(GPIO110_MMCDAT2_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);

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);
if (err)
printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
if (err) {
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;
}

Expand All @@ -397,12 +417,14 @@ static void spitz_mci_setpower(struct device *dev, unsigned int vdd)

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)
{
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 = {
Expand All @@ -419,6 +441,12 @@ static struct pxamci_platform_data spitz_mci_platform_data = {
*/
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 */
pxa_gpio_mode(SPITZ_GPIO_USB_CONNECT | GPIO_IN);
pxa_gpio_mode(SPITZ_GPIO_USB_HOST | GPIO_OUT);
Expand All @@ -427,7 +455,7 @@ static int spitz_ohci_init(struct device *dev)
/* Setup USB Port 2 Output Control Register */
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_SSEP1 | UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
Expand Down

0 comments on commit f008b0f

Please sign in to comment.