|
@@ -316,3 +316,140 @@ static struct resource zeus_dm9k0_resource[] = {
|
|
.end = ZEUS_ETH0_PHYS + 1,
|
|
.end = ZEUS_ETH0_PHYS + 1,
|
|
.flags = IORESOURCE_MEM
|
|
.flags = IORESOURCE_MEM
|
|
},
|
|
},
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = ZEUS_ETH0_PHYS + 2,
|
|
|
|
+ .end = ZEUS_ETH0_PHYS + 3,
|
|
|
|
+ .flags = IORESOURCE_MEM
|
|
|
|
+ },
|
|
|
|
+ [2] = {
|
|
|
|
+ .start = PXA_GPIO_TO_IRQ(ZEUS_ETH0_GPIO),
|
|
|
|
+ .end = PXA_GPIO_TO_IRQ(ZEUS_ETH0_GPIO),
|
|
|
|
+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource zeus_dm9k1_resource[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = ZEUS_ETH1_PHYS,
|
|
|
|
+ .end = ZEUS_ETH1_PHYS + 1,
|
|
|
|
+ .flags = IORESOURCE_MEM
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = ZEUS_ETH1_PHYS + 2,
|
|
|
|
+ .end = ZEUS_ETH1_PHYS + 3,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [2] = {
|
|
|
|
+ .start = PXA_GPIO_TO_IRQ(ZEUS_ETH1_GPIO),
|
|
|
|
+ .end = PXA_GPIO_TO_IRQ(ZEUS_ETH1_GPIO),
|
|
|
|
+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct dm9000_plat_data zeus_dm9k_platdata = {
|
|
|
|
+ .flags = DM9000_PLATF_16BITONLY,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device zeus_dm9k0_device = {
|
|
|
|
+ .name = "dm9000",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .num_resources = ARRAY_SIZE(zeus_dm9k0_resource),
|
|
|
|
+ .resource = zeus_dm9k0_resource,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &zeus_dm9k_platdata,
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device zeus_dm9k1_device = {
|
|
|
|
+ .name = "dm9000",
|
|
|
|
+ .id = 1,
|
|
|
|
+ .num_resources = ARRAY_SIZE(zeus_dm9k1_resource),
|
|
|
|
+ .resource = zeus_dm9k1_resource,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &zeus_dm9k_platdata,
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* External SRAM */
|
|
|
|
+static struct resource zeus_sram_resource = {
|
|
|
|
+ .start = ZEUS_SRAM_PHYS,
|
|
|
|
+ .end = ZEUS_SRAM_PHYS + ZEUS_SRAM_SIZE * 2 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device zeus_sram_device = {
|
|
|
|
+ .name = "pxa2xx-8bit-sram",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .num_resources = 1,
|
|
|
|
+ .resource = &zeus_sram_resource,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* SPI interface on SSP3 */
|
|
|
|
+static struct pxa2xx_spi_master pxa2xx_spi_ssp3_master_info = {
|
|
|
|
+ .num_chipselect = 1,
|
|
|
|
+ .enable_dma = 1,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* CAN bus on SPI */
|
|
|
|
+static int zeus_mcp2515_setup(struct spi_device *sdev)
|
|
|
|
+{
|
|
|
|
+ int err;
|
|
|
|
+
|
|
|
|
+ err = gpio_request(ZEUS_CAN_SHDN_GPIO, "CAN shutdown");
|
|
|
|
+ if (err)
|
|
|
|
+ return err;
|
|
|
|
+
|
|
|
|
+ err = gpio_direction_output(ZEUS_CAN_SHDN_GPIO, 1);
|
|
|
|
+ if (err) {
|
|
|
|
+ gpio_free(ZEUS_CAN_SHDN_GPIO);
|
|
|
|
+ return err;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int zeus_mcp2515_transceiver_enable(int enable)
|
|
|
|
+{
|
|
|
|
+ gpio_set_value(ZEUS_CAN_SHDN_GPIO, !enable);
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct mcp251x_platform_data zeus_mcp2515_pdata = {
|
|
|
|
+ .oscillator_frequency = 16*1000*1000,
|
|
|
|
+ .board_specific_setup = zeus_mcp2515_setup,
|
|
|
|
+ .power_enable = zeus_mcp2515_transceiver_enable,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct spi_board_info zeus_spi_board_info[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .modalias = "mcp2515",
|
|
|
|
+ .platform_data = &zeus_mcp2515_pdata,
|
|
|
|
+ .irq = PXA_GPIO_TO_IRQ(ZEUS_CAN_GPIO),
|
|
|
|
+ .max_speed_hz = 1*1000*1000,
|
|
|
|
+ .bus_num = 3,
|
|
|
|
+ .mode = SPI_MODE_0,
|
|
|
|
+ .chip_select = 0,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* Leds */
|
|
|
|
+static struct gpio_led zeus_leds[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .name = "zeus:yellow:1",
|
|
|
|
+ .default_trigger = "heartbeat",
|
|
|
|
+ .gpio = ZEUS_EXT0_GPIO(3),
|
|
|
|
+ .active_low = 1,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .name = "zeus:yellow:2",
|
|
|
|
+ .default_trigger = "default-on",
|
|
|
|
+ .gpio = ZEUS_EXT0_GPIO(4),
|
|
|
|
+ .active_low = 1,
|
|
|
|
+ },
|
|
|
|
+ [2] = {
|
|
|
|
+ .name = "zeus:yellow:3",
|
|
|
|
+ .default_trigger = "default-on",
|
|
|
|
+ .gpio = ZEUS_EXT0_GPIO(5),
|
|
|
|
+ .active_low = 1,
|
|
|
|
+ },
|
|
|
|
+};
|