summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Scherzer <John.Scherzer@bluto.localdomain>2008-05-21 13:58:10 -0400
committerJohn Scherzer <John.Scherzer@bluto.localdomain>2008-05-21 13:58:10 -0400
commita1a5b975e6d9fb9d4a162ba339c04ffd80343a38 (patch)
treeb9eac22d800400e66980a831eb7433d44de68326
parent46515cfa3ed2fcedf7c203cb3989a0361445e0d0 (diff)
parent969c26a51d236659812b97209f1f1f6cd5f64c32 (diff)
Merge branch 'bsp-imx27litekit-rel3' of ssh://John.Scherzer@engservices.timesys.com/pub/git/linux-2.6-mx into bsp-imx27litekit-rel3
-rw-r--r--arch/arm/mach-mx27/mx27lite.c29
-rw-r--r--arch/arm/mach-mx27/mx27lite_gpio.c34
-rw-r--r--arch/arm/plat-mxc/usb_common.c8
-rw-r--r--drivers/rtc/rtc-mxc.c20
-rw-r--r--drivers/usb/host/Kconfig2
-rw-r--r--drivers/video/mxc/mxcfb_modedb.c16
6 files changed, 73 insertions, 36 deletions
diff --git a/arch/arm/mach-mx27/mx27lite.c b/arch/arm/mach-mx27/mx27lite.c
index bdd480a76dab..45009c2c3f79 100644
--- a/arch/arm/mach-mx27/mx27lite.c
+++ b/arch/arm/mach-mx27/mx27lite.c
@@ -161,37 +161,22 @@ static inline void mxc_init_keypad(void)
static struct mtd_partition mxc_nor_partitions[] = {
{
- .name = "Bootloader",
- .size = 512 * 1024,
+ .name = "nor.bootloader",
+ .size = 256 * 1024,
.offset = 0x00000000,
.mask_flags = MTD_WRITEABLE /* force read-only */
},
{
- .name = "nor.Kernel",
- .size = 2 * 1024 * 1024,
+ .name = "nor.config",
+ .size = 64 * 1024,
.offset = MTDPART_OFS_APPEND,
- .mask_flags = 0},
- {
- .name = "nor.userfs",
- .size = 14 * 1024 * 1024,
- .offset = MTDPART_OFS_APPEND,
- .mask_flags = 0},
- {
- .name = "nor.rootfs",
- .size = 12 * 1024 * 1024,
- .offset = MTDPART_OFS_APPEND,
- .mask_flags = MTD_WRITEABLE},
- {
- .name = "FIS directory",
- .size = 12 * 1024,
- .offset = 0x01FE0000,
.mask_flags = MTD_WRITEABLE /* force read-only */
},
{
- .name = "Redboot config",
+ .name = "nor.extra",
.size = MTDPART_SIZ_FULL,
- .offset = 0x01FFF000,
- .mask_flags = MTD_WRITEABLE /* force read-only */
+ .offset = MTDPART_OFS_APPEND,
+ .mask_flags = 0
},
};
diff --git a/arch/arm/mach-mx27/mx27lite_gpio.c b/arch/arm/mach-mx27/mx27lite_gpio.c
index 45b1e68fb791..5e8ff4262a66 100644
--- a/arch/arm/mach-mx27/mx27lite_gpio.c
+++ b/arch/arm/mach-mx27/mx27lite_gpio.c
@@ -244,7 +244,9 @@ int gpio_usbh2_active(void)
gpio_request_mux(MX27_PIN_CSPI2_SCLK, GPIO_MUX_ALT) ||
gpio_request_mux(MX27_PIN_CSPI2_MISO, GPIO_MUX_ALT) ||
gpio_request_mux(MX27_PIN_CSPI2_MOSI, GPIO_MUX_ALT) ||
- gpio_request_mux(MX27_PIN_CSPI1_SS2, GPIO_MUX_ALT))
+ gpio_request_mux(MX27_PIN_CSPI1_SS2, GPIO_MUX_ALT) ||
+ gpio_request_mux(MX27_PIN_USB_OC_B, GPIO_MUX_PRIMARY) ||
+ gpio_request_mux(MX27_PIN_USB_PWR, GPIO_MUX_PRIMARY))
return -EINVAL;
//__raw_writew(PBC_BCTRL3_HSH_EN, PBC_BCTRL3_CLEAR_REG);
@@ -278,6 +280,9 @@ void gpio_usbh2_inactive(void)
gpio_set_puen(MX27_PIN_CSPI2_MISO, 1);
gpio_set_puen(MX27_PIN_CSPI2_MOSI, 1);
gpio_set_puen(MX27_PIN_CSPI1_SS2, 1);
+
+ gpio_free_mux(MX27_PIN_USB_OC_B);
+ gpio_free_mux(MX27_PIN_USB_PWR);
//__raw_writew(PBC_BCTRL3_HSH_EN, PBC_BCTRL3_SET_REG);
}
@@ -297,10 +302,15 @@ int gpio_usbotg_hs_active(void)
gpio_request_mux(MX27_PIN_USBOTG_CLK, GPIO_MUX_PRIMARY) ||
gpio_request_mux(MX27_PIN_USBOTG_DATA7, GPIO_MUX_PRIMARY) ||
- gpio_request_mux(MX27_PIN_USB_OC_B, GPIO_MUX_PRIMARY) ||
- gpio_request_mux(MX27_PIN_USB_PWR, GPIO_MUX_PRIMARY))
+ /* Use TXDM and TXDP pins as power and Overcurrent control */
+ gpio_request_mux(MX27_PIN_USBH1_TXDM, GPIO_MUX_GPIO) ||
+ gpio_request_mux(MX27_PIN_USBH1_TXDP, GPIO_MUX_GPIO))
return -EINVAL;
+ mxc_set_gpio_direction(MX27_PIN_USBH1_TXDM, 0); /* USB1_PWR_nEN */
+ mxc_set_gpio_direction(MX27_PIN_USBH1_TXDP, 1); /* USB1_nOC */
+ mxc_set_gpio_dataout(MX27_PIN_USBH1_TXDM, 0);
+
//__raw_writew(PBC_BCTRL3_OTG_HS_EN, PBC_BCTRL3_CLEAR_REG);
//__raw_writew(PBC_BCTRL3_OTG_VBUS_EN, PBC_BCTRL3_CLEAR_REG);
@@ -323,8 +333,8 @@ void gpio_usbotg_hs_inactive(void)
gpio_free_mux(MX27_PIN_USBOTG_CLK);
gpio_free_mux(MX27_PIN_USBOTG_DATA7);
- gpio_free_mux(MX27_PIN_USB_OC_B);
- gpio_free_mux(MX27_PIN_USB_PWR);
+ gpio_free_mux(MX27_PIN_USBH1_TXDM);
+ gpio_free_mux(MX27_PIN_USBH1_TXDP);
//__raw_writew(PBC_BCTRL3_OTG_HS_EN, PBC_BCTRL3_SET_REG);
}
@@ -407,7 +417,11 @@ void gpio_spi_active(int cspi_mod)
gpio_request_mux(MX27_PIN_CSPI1_RDY, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_CSPI1_SS0, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_CSPI1_SS1, GPIO_MUX_PRIMARY);
+
+/* This pin conflicts with the USB Host 2 Interface. */
+#if !defined(CONFIG_USB_EHCI_ARC_H2)
gpio_request_mux(MX27_PIN_CSPI1_SS2, GPIO_MUX_PRIMARY);
+#endif
break;
case 1:
/*SPI2 */
@@ -420,10 +434,10 @@ void gpio_spi_active(int cspi_mod)
break;
case 2:
/*SPI3 */
- gpio_request_mux(MX27_PIN_SD1_D0, GPIO_MUX_ALT);
- gpio_request_mux(MX27_PIN_SD1_CMD, GPIO_MUX_ALT);
- gpio_request_mux(MX27_PIN_SD1_CLK, GPIO_MUX_ALT);
- gpio_request_mux(MX27_PIN_SD1_D3, GPIO_MUX_ALT);
+ gpio_request_mux(MX27_PIN_SD1_D0, GPIO_MUX_ALT); /* MISO */
+ gpio_request_mux(MX27_PIN_SD1_CMD, GPIO_MUX_ALT); /* MOSI */
+ gpio_request_mux(MX27_PIN_SD1_CLK, GPIO_MUX_ALT); /* SCLK */
+ gpio_request_mux(MX27_PIN_SD1_D3, GPIO_MUX_ALT); /* SS */
break;
default:
@@ -447,7 +461,9 @@ void gpio_spi_inactive(int cspi_mod)
gpio_free_mux(MX27_PIN_CSPI1_RDY);
gpio_free_mux(MX27_PIN_CSPI1_SS0);
gpio_free_mux(MX27_PIN_CSPI1_SS1);
+#if !defined(CONFIG_USB_EHCI_ARC_H2)
gpio_free_mux(MX27_PIN_CSPI1_SS2);
+#endif
break;
case 1:
/*SPI2 */
diff --git a/arch/arm/plat-mxc/usb_common.c b/arch/arm/plat-mxc/usb_common.c
index 73781aa705fa..f56392fba3f6 100644
--- a/arch/arm/plat-mxc/usb_common.c
+++ b/arch/arm/plat-mxc/usb_common.c
@@ -320,10 +320,18 @@ static void usbh2_set_ulpi_xcvr(void)
{
pr_debug("%s\n", __FUNCTION__);
USBCTRL &= ~(UCTRL_H2SIC_MASK | UCTRL_BPE); /* disable bypass mode */
+
+#if defined(CONFIG_MACH_MX27LITE)
+ USBCTRL |= UCTRL_H2WIE | /* wakeup intr enable */
+ UCTRL_H2UIE | /* ULPI intr enable */
+ UCTRL_H2DT | /* disable H2 TLL */
+ !UCTRL_H2PM; /* power mask */
+#else
USBCTRL |= UCTRL_H2WIE | /* wakeup intr enable */
UCTRL_H2UIE | /* ULPI intr enable */
UCTRL_H2DT | /* disable H2 TLL */
UCTRL_H2PM; /* power mask */
+#endif
UH2_PORTSC1 &= ~PORTSC_PTS_MASK; /* set ULPI xcvr */
UH2_PORTSC1 |= PORTSC_PTS_ULPI;
diff --git a/drivers/rtc/rtc-mxc.c b/drivers/rtc/rtc-mxc.c
index da96395d7f8f..4c186934042f 100644
--- a/drivers/rtc/rtc-mxc.c
+++ b/drivers/rtc/rtc-mxc.c
@@ -317,13 +317,25 @@ static int rtc_update_alarm(struct device *dev, struct rtc_time *alrm)
*/
static irqreturn_t mxc_rtc_interrupt(int irq, void *dev_id)
{
- struct platform_device *pdev = dev_id;
- struct rtc_plat_data *pdata = platform_get_drvdata(pdev);
- void __iomem *ioaddr = pdata->ioaddr;
+ struct platform_device *pdev;
+ struct rtc_plat_data *pdata;
+ void __iomem *ioaddr;
u32 status;
u32 events = 0;
spin_lock(&rtc_lock);
- status = readw(ioaddr + RTC_RTCISR) & readw(ioaddr + RTC_RTCIENR);
+ status = readw(IO_ADDRESS(RTC_BASE_ADDR + RTC_RTCISR)) &
+ readw(IO_ADDRESS(RTC_BASE_ADDR + RTC_RTCIENR));
+
+ /* This IRQ is shared, so make sure an interrupt really occurred */
+ if (unlikely(!status)) {
+ spin_unlock(&rtc_lock);
+ return IRQ_NONE;
+ }
+
+ pdev = dev_id;
+ pdata = platform_get_drvdata(pdev);
+ ioaddr = pdata->ioaddr;
+
/* clear interrupt sources */
writew(status, ioaddr + RTC_RTCISR);
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index cc7e2449a934..fce00f72d362 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -48,7 +48,7 @@ config USB_EHCI_ARC_H1
config USB_EHCI_ARC_H2
bool "Support for Host2 port on Freescale controller"
depends on USB_EHCI_ARC && \
- ((ARCH_MX27 && !SPI_MXC_SELECT1 && !SPI_MXC_SELECT2) || \
+ ((ARCH_MX27 && !SPI_MXC_SELECT2) || \
ARCH_MX3)
---help---
Enable support for the USB Host2 port.
diff --git a/drivers/video/mxc/mxcfb_modedb.c b/drivers/video/mxc/mxcfb_modedb.c
index 1eca0a526f04..03f5d5b802da 100644
--- a/drivers/video/mxc/mxcfb_modedb.c
+++ b/drivers/video/mxc/mxcfb_modedb.c
@@ -58,6 +58,22 @@ struct fb_videomode mxcfb_modedb[] = {
"TV-VGA", 60, 640, 480, 40574, 35, 45, 9, 1, 46, 5,
0, FB_VMODE_NONINTERLACED, 0,
},
+ {
+ /* 640x480 @ 60 Hz */
+ "Sharp-VGA",
+ 60, 640, 480, // 60 Hz, 640x480
+ 35285, // 35.285 ns clock period
+ 128, 128, // left & right margin
+ 34, 10, // upper & lower margin
+ 2, 2, // hsync & vsync len
+ 0
+ //| FB_SYNC_CLK_IDLE_EN
+ | FB_SYNC_OE_ACT_HIGH
+ //| FB_SYNC_HOR_HIGH_ACT
+ ,
+ FB_VMODE_NONINTERLACED,
+ 0,
+ },
};
int mxcfb_modedb_sz = ARRAY_SIZE(mxcfb_modedb);