|
@@ -368,3 +368,106 @@ static struct gpio_keys_platform_data gpio_key_info = {
|
|
static struct platform_device keys_gpio = {
|
|
static struct platform_device keys_gpio = {
|
|
.name = "gpio-keys",
|
|
.name = "gpio-keys",
|
|
.id = -1,
|
|
.id = -1,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &gpio_key_info,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#define OMAP_DM9000_BASE 0x2c000000
|
|
|
|
+
|
|
|
|
+static struct resource omap_dm9000_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = OMAP_DM9000_BASE,
|
|
|
|
+ .end = (OMAP_DM9000_BASE + 0x4 - 1),
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = (OMAP_DM9000_BASE + 0x400),
|
|
|
|
+ .end = (OMAP_DM9000_BASE + 0x400 + 0x4 - 1),
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [2] = {
|
|
|
|
+ .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct dm9000_plat_data omap_dm9000_platdata = {
|
|
|
|
+ .flags = DM9000_PLATF_16BITONLY,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device omap_dm9000_dev = {
|
|
|
|
+ .name = "dm9000",
|
|
|
|
+ .id = -1,
|
|
|
|
+ .num_resources = ARRAY_SIZE(omap_dm9000_resources),
|
|
|
|
+ .resource = omap_dm9000_resources,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &omap_dm9000_platdata,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static void __init omap_dm9000_init(void)
|
|
|
|
+{
|
|
|
|
+ unsigned char *eth_addr = omap_dm9000_platdata.dev_addr;
|
|
|
|
+ struct omap_die_id odi;
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ ret = gpio_request_one(OMAP_DM9000_GPIO_IRQ, GPIOF_IN, "dm9000 irq");
|
|
|
|
+ if (ret < 0) {
|
|
|
|
+ printk(KERN_ERR "Failed to request GPIO%d for dm9000 IRQ\n",
|
|
|
|
+ OMAP_DM9000_GPIO_IRQ);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /* init the mac address using DIE id */
|
|
|
|
+ omap_get_die_id(&odi);
|
|
|
|
+
|
|
|
|
+ eth_addr[0] = 0x02; /* locally administered */
|
|
|
|
+ eth_addr[1] = odi.id_1 & 0xff;
|
|
|
|
+ eth_addr[2] = (odi.id_0 & 0xff000000) >> 24;
|
|
|
|
+ eth_addr[3] = (odi.id_0 & 0x00ff0000) >> 16;
|
|
|
|
+ eth_addr[4] = (odi.id_0 & 0x0000ff00) >> 8;
|
|
|
|
+ eth_addr[5] = (odi.id_0 & 0x000000ff);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct platform_device *devkit8000_devices[] __initdata = {
|
|
|
|
+ &leds_gpio,
|
|
|
|
+ &keys_gpio,
|
|
|
|
+ &omap_dm9000_dev,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
|
|
|
|
+
|
|
|
|
+ .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
|
|
|
+ .port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
|
|
+ .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
|
|
|
+
|
|
|
|
+ .phy_reset = true,
|
|
|
|
+ .reset_gpio_port[0] = -EINVAL,
|
|
|
|
+ .reset_gpio_port[1] = -EINVAL,
|
|
|
|
+ .reset_gpio_port[2] = -EINVAL
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_OMAP_MUX
|
|
|
|
+static struct omap_board_mux board_mux[] __initdata = {
|
|
|
|
+ /* nCS and IRQ for Devkit8000 ethernet */
|
|
|
|
+ OMAP3_MUX(GPMC_NCS6, OMAP_MUX_MODE0),
|
|
|
|
+ OMAP3_MUX(ETK_D11, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP),
|
|
|
|
+
|
|
|
|
+ /* McSPI 2*/
|
|
|
|
+ OMAP3_MUX(MCSPI2_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
|
|
|
+ OMAP3_MUX(MCSPI2_SIMO, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
|
|
|
|
+ OMAP3_MUX(MCSPI2_SOMI, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
|
|
|
+ OMAP3_MUX(MCSPI2_CS0, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
|
|
|
|
+ OMAP3_MUX(MCSPI2_CS1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
|
|
|
|
+
|
|
|
|
+ /* PENDOWN GPIO */
|
|
|
|
+ OMAP3_MUX(ETK_D13, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
|
|
|
+
|
|
|
|
+ /* mUSB */
|
|
|
|
+ OMAP3_MUX(HSUSB0_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
|
|
|
+ OMAP3_MUX(HSUSB0_STP, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
|
|
|
|
+ OMAP3_MUX(HSUSB0_DIR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
|
|
|
+ OMAP3_MUX(HSUSB0_NXT, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
|
|
|
+ OMAP3_MUX(HSUSB0_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
|
|
|
+ OMAP3_MUX(HSUSB0_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
|
|
|
+ OMAP3_MUX(HSUSB0_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|