[ARM] pxa/spitz: convert to use new MFP API
Original patch from Dmitry Baryshkov's initial scoop gpio conversion work at http://git.infradead.org/users/dbaryshkov/zaurus-2.6.git. TODO: figure out the MFP configuration of the SSP2 which looks like to be already configured by the boot loader, though. Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com> Signed-off-by: Eric Miao <eric.miao@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
#include <mach/pxa-regs.h>
|
#include <mach/pxa-regs.h>
|
||||||
#include <mach/pxa2xx-regs.h>
|
#include <mach/pxa2xx-regs.h>
|
||||||
#include <mach/pxa2xx-gpio.h>
|
#include <mach/mfp-pxa27x.h>
|
||||||
#include <mach/pxa27x-udc.h>
|
#include <mach/pxa27x-udc.h>
|
||||||
#include <mach/reset.h>
|
#include <mach/reset.h>
|
||||||
#include <mach/i2c.h>
|
#include <mach/i2c.h>
|
||||||
@@ -58,6 +58,66 @@
|
|||||||
#include "devices.h"
|
#include "devices.h"
|
||||||
#include "sharpsl.h"
|
#include "sharpsl.h"
|
||||||
|
|
||||||
|
static unsigned long spitz_pin_config[] __initdata = {
|
||||||
|
/* Chip Selects */
|
||||||
|
GPIO78_nCS_2, /* SCOOP #2 */
|
||||||
|
GPIO80_nCS_4, /* SCOOP #1 */
|
||||||
|
|
||||||
|
/* LCD - 16bpp Active TFT */
|
||||||
|
GPIO58_LCD_LDD_0,
|
||||||
|
GPIO59_LCD_LDD_1,
|
||||||
|
GPIO60_LCD_LDD_2,
|
||||||
|
GPIO61_LCD_LDD_3,
|
||||||
|
GPIO62_LCD_LDD_4,
|
||||||
|
GPIO63_LCD_LDD_5,
|
||||||
|
GPIO64_LCD_LDD_6,
|
||||||
|
GPIO65_LCD_LDD_7,
|
||||||
|
GPIO66_LCD_LDD_8,
|
||||||
|
GPIO67_LCD_LDD_9,
|
||||||
|
GPIO68_LCD_LDD_10,
|
||||||
|
GPIO69_LCD_LDD_11,
|
||||||
|
GPIO70_LCD_LDD_12,
|
||||||
|
GPIO71_LCD_LDD_13,
|
||||||
|
GPIO72_LCD_LDD_14,
|
||||||
|
GPIO73_LCD_LDD_15,
|
||||||
|
GPIO74_LCD_FCLK,
|
||||||
|
GPIO75_LCD_LCLK,
|
||||||
|
GPIO76_LCD_PCLK,
|
||||||
|
|
||||||
|
/* PC Card */
|
||||||
|
GPIO48_nPOE,
|
||||||
|
GPIO49_nPWE,
|
||||||
|
GPIO50_nPIOR,
|
||||||
|
GPIO51_nPIOW,
|
||||||
|
GPIO85_nPCE_1,
|
||||||
|
GPIO54_nPCE_2,
|
||||||
|
GPIO79_PSKTSEL,
|
||||||
|
GPIO55_nPREG,
|
||||||
|
GPIO56_nPWAIT,
|
||||||
|
GPIO57_nIOIS16,
|
||||||
|
|
||||||
|
/* MMC */
|
||||||
|
GPIO32_MMC_CLK,
|
||||||
|
GPIO112_MMC_CMD,
|
||||||
|
GPIO92_MMC_DAT_0,
|
||||||
|
GPIO109_MMC_DAT_1,
|
||||||
|
GPIO110_MMC_DAT_2,
|
||||||
|
GPIO111_MMC_DAT_3,
|
||||||
|
|
||||||
|
/* GPIOs */
|
||||||
|
GPIO9_GPIO, /* SPITZ_GPIO_nSD_DETECT */
|
||||||
|
GPIO81_GPIO, /* SPITZ_GPIO_nSD_WP */
|
||||||
|
GPIO41_GPIO, /* SPITZ_GPIO_USB_CONNECT */
|
||||||
|
GPIO37_GPIO, /* SPITZ_GPIO_USB_HOST */
|
||||||
|
GPIO35_GPIO, /* SPITZ_GPIO_USB_DEVICE */
|
||||||
|
GPIO22_GPIO, /* SPITZ_GPIO_HSYNC */
|
||||||
|
GPIO94_GPIO, /* SPITZ_GPIO_CF_CD */
|
||||||
|
GPIO105_GPIO, /* SPITZ_GPIO_CF_IRQ */
|
||||||
|
GPIO106_GPIO, /* SPITZ_GPIO_CF2_IRQ */
|
||||||
|
|
||||||
|
GPIO1_GPIO | WAKEUP_ON_EDGE_RISE,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Spitz SCOOP Device #1
|
* Spitz SCOOP Device #1
|
||||||
*/
|
*/
|
||||||
@@ -146,27 +206,6 @@ static void spitz_card_pwr_ctrl(int device, unsigned short new_cpr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spitz_pcmcia_init(void)
|
|
||||||
{
|
|
||||||
/* Setup default state of GPIO outputs
|
|
||||||
before we enable them as outputs. */
|
|
||||||
GPSR(GPIO48_nPOE) = GPIO_bit(GPIO48_nPOE) |
|
|
||||||
GPIO_bit(GPIO49_nPWE) | GPIO_bit(GPIO50_nPIOR) |
|
|
||||||
GPIO_bit(GPIO51_nPIOW) | GPIO_bit(GPIO54_nPCE_2);
|
|
||||||
GPSR(GPIO85_nPCE_1) = GPIO_bit(GPIO85_nPCE_1);
|
|
||||||
|
|
||||||
pxa_gpio_mode(GPIO48_nPOE_MD);
|
|
||||||
pxa_gpio_mode(GPIO49_nPWE_MD);
|
|
||||||
pxa_gpio_mode(GPIO50_nPIOR_MD);
|
|
||||||
pxa_gpio_mode(GPIO51_nPIOW_MD);
|
|
||||||
pxa_gpio_mode(GPIO55_nPREG_MD);
|
|
||||||
pxa_gpio_mode(GPIO56_nPWAIT_MD);
|
|
||||||
pxa_gpio_mode(GPIO57_nIOIS16_MD);
|
|
||||||
pxa_gpio_mode(GPIO85_nPCE_1_MD);
|
|
||||||
pxa_gpio_mode(GPIO54_nPCE_2_MD);
|
|
||||||
pxa_gpio_mode(GPIO104_pSKTSEL_MD);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void spitz_pcmcia_pwr(struct device *scoop, unsigned short cpr, int nr)
|
static void spitz_pcmcia_pwr(struct device *scoop, unsigned short cpr, int nr)
|
||||||
{
|
{
|
||||||
/* Only need to override behaviour for slot 0 */
|
/* Only need to override behaviour for slot 0 */
|
||||||
@@ -192,7 +231,6 @@ static struct scoop_pcmcia_dev spitz_pcmcia_scoop[] = {
|
|||||||
static struct scoop_pcmcia_config spitz_pcmcia_config = {
|
static struct scoop_pcmcia_config spitz_pcmcia_config = {
|
||||||
.devs = &spitz_pcmcia_scoop[0],
|
.devs = &spitz_pcmcia_scoop[0],
|
||||||
.num_devs = 2,
|
.num_devs = 2,
|
||||||
.pcmcia_init = spitz_pcmcia_init,
|
|
||||||
.power_ctrl = spitz_pcmcia_pwr,
|
.power_ctrl = spitz_pcmcia_pwr,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -365,14 +403,6 @@ static int spitz_mci_init(struct device *dev, irq_handler_t spitz_detect_int, vo
|
|||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* setup GPIO for PXA27x MMC controller */
|
|
||||||
pxa_gpio_mode(GPIO32_MMCCLK_MD);
|
|
||||||
pxa_gpio_mode(GPIO112_MMCCMD_MD);
|
|
||||||
pxa_gpio_mode(GPIO92_MMCDAT0_MD);
|
|
||||||
pxa_gpio_mode(GPIO109_MMCDAT1_MD);
|
|
||||||
pxa_gpio_mode(GPIO110_MMCDAT2_MD);
|
|
||||||
pxa_gpio_mode(GPIO111_MMCDAT3_MD);
|
|
||||||
|
|
||||||
err = gpio_request(SPITZ_GPIO_nSD_DETECT, "nSD_DETECT");
|
err = gpio_request(SPITZ_GPIO_nSD_DETECT, "nSD_DETECT");
|
||||||
if (err)
|
if (err)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
@@ -447,12 +477,9 @@ static int spitz_ohci_init(struct device *dev)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
/* Only Port 2 is connected */
|
/* Only Port 2 is connected
|
||||||
pxa_gpio_mode(SPITZ_GPIO_USB_CONNECT | GPIO_IN);
|
* Setup USB Port 2 Output Control Register
|
||||||
pxa_gpio_mode(SPITZ_GPIO_USB_HOST | GPIO_OUT);
|
*/
|
||||||
pxa_gpio_mode(SPITZ_GPIO_USB_DEVICE | GPIO_IN);
|
|
||||||
|
|
||||||
/* 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;
|
||||||
|
|
||||||
gpio_direction_output(SPITZ_GPIO_USB_HOST, 1);
|
gpio_direction_output(SPITZ_GPIO_USB_HOST, 1);
|
||||||
@@ -582,20 +609,12 @@ static void __init common_init(void)
|
|||||||
|
|
||||||
PMCR = 0x00;
|
PMCR = 0x00;
|
||||||
|
|
||||||
/* setup sleep mode values */
|
|
||||||
PWER = 0x00000002;
|
|
||||||
PFER = 0x00000000;
|
|
||||||
PRER = 0x00000002;
|
|
||||||
PGSR0 = 0x0158C000;
|
|
||||||
PGSR1 = 0x00FF0080;
|
|
||||||
PGSR2 = 0x0001C004;
|
|
||||||
|
|
||||||
/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
|
/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
|
||||||
PCFR |= PCFR_OPDE;
|
PCFR |= PCFR_OPDE;
|
||||||
|
|
||||||
corgi_ssp_set_machinfo(&spitz_ssp_machinfo);
|
pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config));
|
||||||
|
|
||||||
pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN);
|
corgi_ssp_set_machinfo(&spitz_ssp_machinfo);
|
||||||
|
|
||||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
pxa_set_mci_info(&spitz_mci_platform_data);
|
pxa_set_mci_info(&spitz_mci_platform_data);
|
||||||
|
Reference in New Issue
Block a user