diff options
Diffstat (limited to 'target/linux/gemini/patches-3.10/150-gemini-pata.patch')
-rw-r--r-- | target/linux/gemini/patches-3.10/150-gemini-pata.patch | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/target/linux/gemini/patches-3.10/150-gemini-pata.patch b/target/linux/gemini/patches-3.10/150-gemini-pata.patch deleted file mode 100644 index 1f3f451337..0000000000 --- a/target/linux/gemini/patches-3.10/150-gemini-pata.patch +++ /dev/null @@ -1,192 +0,0 @@ ---- a/arch/arm/mach-gemini/include/mach/global_reg.h -+++ b/arch/arm/mach-gemini/include/mach/global_reg.h -@@ -227,7 +227,13 @@ - #define USB0_PLUG_MINIB (1 << 29) - #define GMAC_GMII (1 << 28) - #define GMAC_1_ENABLE (1 << 27) --/* TODO: define ATA/SATA bits */ -+/* 011 - ata0 <-> sata0, sata1; bring out ata1 -+ * 010 - ata1 <-> sata1, sata0; bring out ata0 -+ * 001 - ata0 <-> sata0, ata1 <-> sata1; bring out ata1 -+ * 000 - ata0 <-> sata0, ata1 <-> sata1; bring out ata0 */ -+#define IDE_IOMUX_MASK (7 << 24) -+#define IDE_IOMUX_SATA1_SATA0 (2 << 24) -+#define IDE_IOMUX_SATA0_SATA1 (3 << 24) - #define USB1_VBUS_ON (1 << 23) - #define USB0_VBUS_ON (1 << 22) - #define APB_CLKOUT_ENABLE (1 << 21) ---- a/arch/arm/mach-gemini/irq.c 2013-02-19 13:38:13.263948000 +0100 -+++ b/arch/arm/mach-gemini/irq.c 2013-02-19 18:24:02.912997292 +0100 -@@ -88,6 +88,9 @@ - irq_set_handler(i, handle_edge_irq); - mode |= 1 << i; - level |= 1 << i; -+ } else if (i >= IRQ_IDE0 && i <= IRQ_IDE1) { -+ irq_set_handler(i, handle_edge_irq); -+ mode |= 1 << i; - } else { - irq_set_handler(i, handle_level_irq); - } ---- a/arch/arm/mach-gemini/common.h -+++ b/arch/arm/mach-gemini/common.h -@@ -29,6 +29,7 @@ - extern int platform_register_watchdog(void); - extern int platform_register_ethernet(struct gemini_gmac_platform_data *pdata); - extern int platform_register_usb(unsigned int id); -+extern int platform_register_pata(unsigned int id); - - extern void gemini_restart(char mode, const char *cmd); - ---- a/arch/arm/mach-gemini/devices.c -+++ b/arch/arm/mach-gemini/devices.c -@@ -249,3 +249,67 @@ - return platform_device_register(&usb_device[id]); - } - -+static u64 pata_gemini_dmamask0 = 0xffffffffUL; -+static u64 pata_gemini_dmamask1 = 0xffffffffUL; -+ -+static struct resource pata_gemini_resources0[] = -+{ -+ [0] = { -+ .start = GEMINI_IDE0_BASE, -+ .end = GEMINI_IDE0_BASE + 0x40, -+ .flags = IORESOURCE_MEM, -+ }, -+ [1] = { -+ .start = IRQ_IDE0, -+ .end = IRQ_IDE0, -+ .flags = IORESOURCE_IRQ, -+ }, -+}; -+ -+static struct resource pata_gemini_resources1[] = -+{ -+ [0] = { -+ .start = GEMINI_IDE1_BASE, -+ .end = GEMINI_IDE1_BASE + 0x40, -+ .flags = IORESOURCE_MEM, -+ }, -+ [1] = { -+ .start = IRQ_IDE1, -+ .end = IRQ_IDE1, -+ .flags = IORESOURCE_IRQ, -+ }, -+}; -+ -+static struct platform_device pata_gemini_devices[] = -+{ -+ { -+ .name = "pata-gemini", -+ .id = 0, -+ .dev = -+ { -+ .dma_mask = &pata_gemini_dmamask0, -+ .coherent_dma_mask = 0xffffffff, -+ }, -+ .num_resources = ARRAY_SIZE(pata_gemini_resources0), -+ .resource = pata_gemini_resources0, -+ }, -+ { -+ .name = "pata-gemini", -+ .id = 1, -+ .dev = -+ { -+ .dma_mask = &pata_gemini_dmamask1, -+ .coherent_dma_mask = 0xffffffff, -+ }, -+ .num_resources = ARRAY_SIZE(pata_gemini_resources1), -+ .resource = pata_gemini_resources1, -+ }, -+}; -+ -+int __init platform_register_pata(unsigned int id) -+{ -+ if (id > 1) -+ return -EINVAL; -+ -+ return platform_device_register(&pata_gemini_devices[id]); -+} ---- a/arch/arm/mach-gemini/mm.c -+++ b/arch/arm/mach-gemini/mm.c -@@ -24,6 +24,11 @@ - .length = SZ_512K, - .type = MT_DEVICE, - }, { -+ .virtual = (unsigned long)IO_ADDRESS(GEMINI_SATA_BASE), -+ .pfn = __phys_to_pfn(GEMINI_SATA_BASE), -+ .length = SZ_512K, -+ .type = MT_DEVICE, -+ }, { - .virtual = (unsigned long)IO_ADDRESS(GEMINI_UART_BASE), - .pfn = __phys_to_pfn(GEMINI_UART_BASE), - .length = SZ_512K, ---- a/drivers/ata/Kconfig -+++ b/drivers/ata/Kconfig -@@ -433,6 +433,16 @@ config PATA_EFAR - - If unsure, say N. - -+config PATA_GEMINI -+ tristate "Gemini PATA support (Experimental)" -+ depends on ARCH_GEMINI -+ help -+ This option enables support for the Gemini PATA-Controller. -+ Note that the Gemini SoC has no native SATA-Controller but an -+ onboard PATA-SATA bridge. -+ -+ If unsure, say N. -+ - config PATA_HPT366 - tristate "HPT 366/368 PATA support" - depends on PCI ---- a/drivers/ata/Makefile -+++ b/drivers/ata/Makefile -@@ -45,6 +45,7 @@ - obj-$(CONFIG_PATA_CYPRESS) += pata_cypress.o - obj-$(CONFIG_PATA_EFAR) += pata_efar.o - obj-$(CONFIG_PATA_EP93XX) += pata_ep93xx.o -+obj-$(CONFIG_PATA_GEMINI) += pata_gemini.o - obj-$(CONFIG_PATA_HPT366) += pata_hpt366.o - obj-$(CONFIG_PATA_HPT37X) += pata_hpt37x.o - obj-$(CONFIG_PATA_HPT3X2N) += pata_hpt3x2n.o ---- a/arch/arm/mach-gemini/board-nas4220b.c -+++ b/arch/arm/mach-gemini/board-nas4220b.c -@@ -146,11 +146,28 @@ - GLOBAL_MISC_CTRL)); - } - -+static void __init sata_ib4220b_init(void) -+{ -+ unsigned val; -+ -+ val = readl((void __iomem*)(IO_ADDRESS(GEMINI_GLOBAL_BASE) + -+ GLOBAL_MISC_CTRL)); -+ val &= ~(IDE_IOMUX_MASK | PFLASH_PADS_DISABLE); -+ val |= IDE_PADS_ENABLE; -+ writel(val, (void __iomem*)(IO_ADDRESS(GEMINI_GLOBAL_BASE) + -+ GLOBAL_MISC_CTRL)); -+ -+ /* enabling ports for presence detection, master only */ -+ writel(0x00000001, (void __iomem*)(IO_ADDRESS(GEMINI_SATA_BASE) + 0x18)); -+ writel(0x00000001, (void __iomem*)(IO_ADDRESS(GEMINI_SATA_BASE) + 0x1c)); -+} -+ - static void __init ib4220b_init(void) - { - gemini_gpio_init(); - ib4220b_gmac_init(); - usb_ib4220b_init(); -+ sata_ib4220b_init(); - platform_register_uart(); - platform_register_pflash(SZ_16M, NULL, 0); - platform_device_register(&ib4220b_led_device); -@@ -161,6 +178,8 @@ - platform_register_ethernet(&ib4220b_gmac_data); - platform_register_usb(0); - platform_register_usb(1); -+ platform_register_pata(0); -+ platform_register_pata(1); - } - - MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B") |