|
@@ -0,0 +1,161 @@
|
|
|
+/*
|
|
|
+ * Copyright 2004-20010 Analog Devices Inc.
|
|
|
+ * 2005 National ICT Australia (NICTA)
|
|
|
+ * Aidan Williams <aidan@nicta.com.au>
|
|
|
+ *
|
|
|
+ * Licensed under the GPL-2 or later.
|
|
|
+ */
|
|
|
+
|
|
|
+#include <linux/device.h>
|
|
|
+#include <linux/export.h>
|
|
|
+#include <linux/platform_device.h>
|
|
|
+#include <linux/mtd/mtd.h>
|
|
|
+#include <linux/mtd/partitions.h>
|
|
|
+#include <linux/mtd/physmap.h>
|
|
|
+#include <linux/spi/spi.h>
|
|
|
+#include <linux/spi/flash.h>
|
|
|
+#include <linux/i2c.h>
|
|
|
+#include <linux/irq.h>
|
|
|
+#include <linux/interrupt.h>
|
|
|
+#include <linux/usb/musb.h>
|
|
|
+#include <linux/leds.h>
|
|
|
+#include <linux/input.h>
|
|
|
+#include <asm/dma.h>
|
|
|
+#include <asm/bfin5xx_spi.h>
|
|
|
+#include <asm/reboot.h>
|
|
|
+#include <asm/nand.h>
|
|
|
+#include <asm/portmux.h>
|
|
|
+#include <asm/dpmc.h>
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ * Name the Board for the /proc/cpuinfo
|
|
|
+ */
|
|
|
+const char bfin_board_name[] = "ADI BF527-AD7160EVAL";
|
|
|
+
|
|
|
+/*
|
|
|
+ * Driver needs to know address, irq and flag pin.
|
|
|
+ */
|
|
|
+
|
|
|
+#if defined(CONFIG_USB_MUSB_HDRC) || defined(CONFIG_USB_MUSB_HDRC_MODULE)
|
|
|
+static struct resource musb_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .start = 0xffc03800,
|
|
|
+ .end = 0xffc03cff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ [1] = { /* general IRQ */
|
|
|
+ .start = IRQ_USB_INT0,
|
|
|
+ .end = IRQ_USB_INT0,
|
|
|
+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
|
|
+ },
|
|
|
+ [2] = { /* DMA IRQ */
|
|
|
+ .start = IRQ_USB_DMA,
|
|
|
+ .end = IRQ_USB_DMA,
|
|
|
+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct musb_hdrc_config musb_config = {
|
|
|
+ .multipoint = 0,
|
|
|
+ .dyn_fifo = 0,
|
|
|
+ .soft_con = 1,
|
|
|
+ .dma = 1,
|
|
|
+ .num_eps = 8,
|
|
|
+ .dma_channels = 8,
|
|
|
+ .gpio_vrsel = GPIO_PG13,
|
|
|
+ /* Some custom boards need to be active low, just set it to "0"
|
|
|
+ * if it is the case.
|
|
|
+ */
|
|
|
+ .gpio_vrsel_active = 1,
|
|
|
+ .clkin = 24, /* musb CLKIN in MHZ */
|
|
|
+};
|
|
|
+
|
|
|
+static struct musb_hdrc_platform_data musb_plat = {
|
|
|
+#if defined(CONFIG_USB_MUSB_OTG)
|
|
|
+ .mode = MUSB_OTG,
|
|
|
+#elif defined(CONFIG_USB_MUSB_HDRC_HCD)
|
|
|
+ .mode = MUSB_HOST,
|
|
|
+#elif defined(CONFIG_USB_GADGET_MUSB_HDRC)
|
|
|
+ .mode = MUSB_PERIPHERAL,
|
|
|
+#endif
|
|
|
+ .config = &musb_config,
|
|
|
+};
|
|
|
+
|
|
|
+static u64 musb_dmamask = ~(u32)0;
|
|
|
+
|
|
|
+static struct platform_device musb_device = {
|
|
|
+ .name = "musb-blackfin",
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = &musb_dmamask,
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
+ .platform_data = &musb_plat,
|
|
|
+ },
|
|
|
+ .num_resources = ARRAY_SIZE(musb_resources),
|
|
|
+ .resource = musb_resources,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_FB_BFIN_RA158Z) || defined(CONFIG_FB_BFIN_RA158Z_MODULE)
|
|
|
+static struct resource bf52x_ra158z_resources[] = {
|
|
|
+ {
|
|
|
+ .start = IRQ_PPI_ERROR,
|
|
|
+ .end = IRQ_PPI_ERROR,
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device bf52x_ra158z_device = {
|
|
|
+ .name = "bfin-ra158z",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(bf52x_ra158z_resources),
|
|
|
+ .resource = bf52x_ra158z_resources,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
|
|
|
+static struct mtd_partition ad7160eval_partitions[] = {
|
|
|
+ {
|
|
|
+ .name = "bootloader(nor)",
|
|
|
+ .size = 0x40000,
|
|
|
+ .offset = 0,
|
|
|
+ }, {
|
|
|
+ .name = "linux kernel(nor)",
|
|
|
+ .size = 0x1C0000,
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
+ }, {
|
|
|
+ .name = "file system(nor)",
|
|
|
+ .size = MTDPART_SIZ_FULL,
|
|
|
+ .offset = MTDPART_OFS_APPEND,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct physmap_flash_data ad7160eval_flash_data = {
|
|
|
+ .width = 2,
|
|
|
+ .parts = ad7160eval_partitions,
|
|
|
+ .nr_parts = ARRAY_SIZE(ad7160eval_partitions),
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource ad7160eval_flash_resource = {
|
|
|
+ .start = 0x20000000,
|
|
|
+ .end = 0x203fffff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device ad7160eval_flash_device = {
|
|
|
+ .name = "physmap-flash",
|
|
|
+ .id = 0,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &ad7160eval_flash_data,
|
|
|
+ },
|
|
|
+ .num_resources = 1,
|
|
|
+ .resource = &ad7160eval_flash_resource,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
|
|
|
+static struct mtd_partition partition_info[] = {
|
|
|
+ {
|
|
|
+ .name = "linux kernel(nand)",
|
|
|
+ .offset = 0,
|