|
@@ -633,3 +633,53 @@ static struct pxafb_mach_info zeus_fb_info = {
|
|
.lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL,
|
|
.lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL,
|
|
.pxafb_lcd_power = zeus_lcd_power,
|
|
.pxafb_lcd_power = zeus_lcd_power,
|
|
.pxafb_backlight_power = zeus_backlight_power,
|
|
.pxafb_backlight_power = zeus_backlight_power,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * MMC/SD Device
|
|
|
|
+ *
|
|
|
|
+ * The card detect interrupt isn't debounced so we delay it by 250ms
|
|
|
|
+ * to give the card a chance to fully insert/eject.
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+static struct pxamci_platform_data zeus_mci_platform_data = {
|
|
|
|
+ .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
|
|
|
|
+ .detect_delay_ms = 250,
|
|
|
|
+ .gpio_card_detect = ZEUS_MMC_CD_GPIO,
|
|
|
|
+ .gpio_card_ro = ZEUS_MMC_WP_GPIO,
|
|
|
|
+ .gpio_card_ro_invert = 1,
|
|
|
|
+ .gpio_power = -1
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * USB Device Controller
|
|
|
|
+ */
|
|
|
|
+static void zeus_udc_command(int cmd)
|
|
|
|
+{
|
|
|
|
+ switch (cmd) {
|
|
|
|
+ case PXA2XX_UDC_CMD_DISCONNECT:
|
|
|
|
+ pr_info("zeus: disconnecting USB client\n");
|
|
|
|
+ UP2OCR = UP2OCR_HXOE | UP2OCR_HXS | UP2OCR_DMPDE | UP2OCR_DPPDE;
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case PXA2XX_UDC_CMD_CONNECT:
|
|
|
|
+ pr_info("zeus: connecting USB client\n");
|
|
|
|
+ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct pxa2xx_udc_mach_info zeus_udc_info = {
|
|
|
|
+ .udc_command = zeus_udc_command,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
|
+static void zeus_power_off(void)
|
|
|
|
+{
|
|
|
|
+ local_irq_disable();
|
|
|
|
+ cpu_suspend(PWRMODE_DEEPSLEEP, pxa27x_finish_suspend);
|
|
|
|
+}
|
|
|
|
+#else
|
|
|
|
+#define zeus_power_off NULL
|
|
|
|
+#endif
|
|
|
|
+
|