aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/patches-3.6/001-MIPS-ath79-use-a-helper-function-for-USB-resource-in.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ar71xx/patches-3.6/001-MIPS-ath79-use-a-helper-function-for-USB-resource-in.patch')
-rw-r--r--target/linux/ar71xx/patches-3.6/001-MIPS-ath79-use-a-helper-function-for-USB-resource-in.patch145
1 files changed, 145 insertions, 0 deletions
diff --git a/target/linux/ar71xx/patches-3.6/001-MIPS-ath79-use-a-helper-function-for-USB-resource-in.patch b/target/linux/ar71xx/patches-3.6/001-MIPS-ath79-use-a-helper-function-for-USB-resource-in.patch
new file mode 100644
index 0000000000..1d6d1c5bc5
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.6/001-MIPS-ath79-use-a-helper-function-for-USB-resource-in.patch
@@ -0,0 +1,145 @@
+From 58a4dbd4160ee4a1428da23b81ff6d94c9a067a8 Mon Sep 17 00:00:00 2001
+From: Gabor Juhos <juhosg@openwrt.org>
+Date: Sat, 4 Aug 2012 15:03:55 +0000
+Subject: [PATCH] MIPS: ath79: use a helper function for USB resource
+ initialization
+
+commit 8d3e03e186cb94a333d0176fe8b22a6df200fcc7 upstream.
+
+This improves code readability, and ensures that
+all resource fields will be initialized correctly.
+Additionally, it helps to reduce the size of the
+kernel image by using uninitialized resource
+variables.
+
+Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+Patchwork: http://patchwork.linux-mips.org/patch/4171/
+Signed-off-by: John Crispin <blogic@openwrt.org>
+---
+ arch/mips/ath79/dev-usb.c | 64 ++++++++++++++++++++-------------------------
+ 1 file changed, 28 insertions(+), 36 deletions(-)
+
+--- a/arch/mips/ath79/dev-usb.c
++++ b/arch/mips/ath79/dev-usb.c
+@@ -25,17 +25,7 @@
+ #include "common.h"
+ #include "dev-usb.h"
+
+-static struct resource ath79_ohci_resources[] = {
+- [0] = {
+- /* .start and .end fields are filled dynamically */
+- .flags = IORESOURCE_MEM,
+- },
+- [1] = {
+- .start = ATH79_MISC_IRQ_OHCI,
+- .end = ATH79_MISC_IRQ_OHCI,
+- .flags = IORESOURCE_IRQ,
+- },
+-};
++static struct resource ath79_ohci_resources[2];
+
+ static u64 ath79_ohci_dmamask = DMA_BIT_MASK(32);
+
+@@ -54,17 +44,7 @@ static struct platform_device ath79_ohci
+ },
+ };
+
+-static struct resource ath79_ehci_resources[] = {
+- [0] = {
+- /* .start and .end fields are filled dynamically */
+- .flags = IORESOURCE_MEM,
+- },
+- [1] = {
+- .start = ATH79_CPU_IRQ_USB,
+- .end = ATH79_CPU_IRQ_USB,
+- .flags = IORESOURCE_IRQ,
+- },
+-};
++static struct resource ath79_ehci_resources[2];
+
+ static u64 ath79_ehci_dmamask = DMA_BIT_MASK(32);
+
+@@ -90,6 +70,20 @@ static struct platform_device ath79_ehci
+ },
+ };
+
++static void __init ath79_usb_init_resource(struct resource res[2],
++ unsigned long base,
++ unsigned long size,
++ int irq)
++{
++ res[0].flags = IORESOURCE_MEM;
++ res[0].start = base;
++ res[0].end = base + size - 1;
++
++ res[1].flags = IORESOURCE_IRQ;
++ res[1].start = irq;
++ res[1].end = irq;
++}
++
+ #define AR71XX_USB_RESET_MASK (AR71XX_RESET_USB_HOST | \
+ AR71XX_RESET_USB_PHY | \
+ AR71XX_RESET_USB_OHCI_DLL)
+@@ -114,12 +108,12 @@ static void __init ath79_usb_setup(void)
+
+ mdelay(900);
+
+- ath79_ohci_resources[0].start = AR71XX_OHCI_BASE;
+- ath79_ohci_resources[0].end = AR71XX_OHCI_BASE + AR71XX_OHCI_SIZE - 1;
++ ath79_usb_init_resource(ath79_ohci_resources, AR71XX_OHCI_BASE,
++ AR71XX_OHCI_SIZE, ATH79_MISC_IRQ_OHCI);
+ platform_device_register(&ath79_ohci_device);
+
+- ath79_ehci_resources[0].start = AR71XX_EHCI_BASE;
+- ath79_ehci_resources[0].end = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1;
++ ath79_usb_init_resource(ath79_ehci_resources, AR71XX_EHCI_BASE,
++ AR71XX_EHCI_SIZE, ATH79_CPU_IRQ_USB);
+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v1;
+ platform_device_register(&ath79_ehci_device);
+ }
+@@ -143,10 +137,8 @@ static void __init ar7240_usb_setup(void
+
+ iounmap(usb_ctrl_base);
+
+- ath79_ohci_resources[0].start = AR7240_OHCI_BASE;
+- ath79_ohci_resources[0].end = AR7240_OHCI_BASE + AR7240_OHCI_SIZE - 1;
+- ath79_ohci_resources[1].start = ATH79_CPU_IRQ_USB;
+- ath79_ohci_resources[1].end = ATH79_CPU_IRQ_USB;
++ ath79_usb_init_resource(ath79_ohci_resources, AR7240_OHCI_BASE,
++ AR7240_OHCI_SIZE, ATH79_CPU_IRQ_USB);
+ platform_device_register(&ath79_ohci_device);
+ }
+
+@@ -161,8 +153,8 @@ static void __init ar724x_usb_setup(void
+ ath79_device_reset_clear(AR724X_RESET_USB_PHY);
+ mdelay(10);
+
+- ath79_ehci_resources[0].start = AR724X_EHCI_BASE;
+- ath79_ehci_resources[0].end = AR724X_EHCI_BASE + AR724X_EHCI_SIZE - 1;
++ ath79_usb_init_resource(ath79_ehci_resources, AR724X_EHCI_BASE,
++ AR724X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
+ platform_device_register(&ath79_ehci_device);
+ }
+@@ -178,8 +170,8 @@ static void __init ar913x_usb_setup(void
+ ath79_device_reset_clear(AR913X_RESET_USB_PHY);
+ mdelay(10);
+
+- ath79_ehci_resources[0].start = AR913X_EHCI_BASE;
+- ath79_ehci_resources[0].end = AR913X_EHCI_BASE + AR913X_EHCI_SIZE - 1;
++ ath79_usb_init_resource(ath79_ehci_resources, AR913X_EHCI_BASE,
++ AR913X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
+ platform_device_register(&ath79_ehci_device);
+ }
+@@ -195,8 +187,8 @@ static void __init ar933x_usb_setup(void
+ ath79_device_reset_clear(AR933X_RESET_USB_PHY);
+ mdelay(10);
+
+- ath79_ehci_resources[0].start = AR933X_EHCI_BASE;
+- ath79_ehci_resources[0].end = AR933X_EHCI_BASE + AR933X_EHCI_SIZE - 1;
++ ath79_usb_init_resource(ath79_ehci_resources, AR933X_EHCI_BASE,
++ AR933X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
+ ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
+ platform_device_register(&ath79_ehci_device);
+ }