Root/target/linux/ar71xx/patches-3.6/001-MIPS-ath79-use-a-helper-function-for-USB-resource-in.patch

1From 58a4dbd4160ee4a1428da23b81ff6d94c9a067a8 Mon Sep 17 00:00:00 2001
2From: Gabor Juhos <juhosg@openwrt.org>
3Date: Sat, 4 Aug 2012 15:03:55 +0000
4Subject: [PATCH] MIPS: ath79: use a helper function for USB resource
5 initialization
6
7commit 8d3e03e186cb94a333d0176fe8b22a6df200fcc7 upstream.
8
9This improves code readability, and ensures that
10all resource fields will be initialized correctly.
11Additionally, it helps to reduce the size of the
12kernel image by using uninitialized resource
13variables.
14
15Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
16Patchwork: http://patchwork.linux-mips.org/patch/4171/
17Signed-off-by: John Crispin <blogic@openwrt.org>
18---
19 arch/mips/ath79/dev-usb.c | 64 ++++++++++++++++++++-------------------------
20 1 file changed, 28 insertions(+), 36 deletions(-)
21
22--- a/arch/mips/ath79/dev-usb.c
23+++ b/arch/mips/ath79/dev-usb.c
24@@ -25,17 +25,7 @@
25 #include "common.h"
26 #include "dev-usb.h"
27 
28-static struct resource ath79_ohci_resources[] = {
29- [0] = {
30- /* .start and .end fields are filled dynamically */
31- .flags = IORESOURCE_MEM,
32- },
33- [1] = {
34- .start = ATH79_MISC_IRQ_OHCI,
35- .end = ATH79_MISC_IRQ_OHCI,
36- .flags = IORESOURCE_IRQ,
37- },
38-};
39+static struct resource ath79_ohci_resources[2];
40 
41 static u64 ath79_ohci_dmamask = DMA_BIT_MASK(32);
42 
43@@ -54,17 +44,7 @@ static struct platform_device ath79_ohci
44     },
45 };
46 
47-static struct resource ath79_ehci_resources[] = {
48- [0] = {
49- /* .start and .end fields are filled dynamically */
50- .flags = IORESOURCE_MEM,
51- },
52- [1] = {
53- .start = ATH79_CPU_IRQ_USB,
54- .end = ATH79_CPU_IRQ_USB,
55- .flags = IORESOURCE_IRQ,
56- },
57-};
58+static struct resource ath79_ehci_resources[2];
59 
60 static u64 ath79_ehci_dmamask = DMA_BIT_MASK(32);
61 
62@@ -90,6 +70,20 @@ static struct platform_device ath79_ehci
63     },
64 };
65 
66+static void __init ath79_usb_init_resource(struct resource res[2],
67+ unsigned long base,
68+ unsigned long size,
69+ int irq)
70+{
71+ res[0].flags = IORESOURCE_MEM;
72+ res[0].start = base;
73+ res[0].end = base + size - 1;
74+
75+ res[1].flags = IORESOURCE_IRQ;
76+ res[1].start = irq;
77+ res[1].end = irq;
78+}
79+
80 #define AR71XX_USB_RESET_MASK (AR71XX_RESET_USB_HOST | \
81                  AR71XX_RESET_USB_PHY | \
82                  AR71XX_RESET_USB_OHCI_DLL)
83@@ -114,12 +108,12 @@ static void __init ath79_usb_setup(void)
84 
85     mdelay(900);
86 
87- ath79_ohci_resources[0].start = AR71XX_OHCI_BASE;
88- ath79_ohci_resources[0].end = AR71XX_OHCI_BASE + AR71XX_OHCI_SIZE - 1;
89+ ath79_usb_init_resource(ath79_ohci_resources, AR71XX_OHCI_BASE,
90+ AR71XX_OHCI_SIZE, ATH79_MISC_IRQ_OHCI);
91     platform_device_register(&ath79_ohci_device);
92 
93- ath79_ehci_resources[0].start = AR71XX_EHCI_BASE;
94- ath79_ehci_resources[0].end = AR71XX_EHCI_BASE + AR71XX_EHCI_SIZE - 1;
95+ ath79_usb_init_resource(ath79_ehci_resources, AR71XX_EHCI_BASE,
96+ AR71XX_EHCI_SIZE, ATH79_CPU_IRQ_USB);
97     ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v1;
98     platform_device_register(&ath79_ehci_device);
99 }
100@@ -143,10 +137,8 @@ static void __init ar7240_usb_setup(void
101 
102     iounmap(usb_ctrl_base);
103 
104- ath79_ohci_resources[0].start = AR7240_OHCI_BASE;
105- ath79_ohci_resources[0].end = AR7240_OHCI_BASE + AR7240_OHCI_SIZE - 1;
106- ath79_ohci_resources[1].start = ATH79_CPU_IRQ_USB;
107- ath79_ohci_resources[1].end = ATH79_CPU_IRQ_USB;
108+ ath79_usb_init_resource(ath79_ohci_resources, AR7240_OHCI_BASE,
109+ AR7240_OHCI_SIZE, ATH79_CPU_IRQ_USB);
110     platform_device_register(&ath79_ohci_device);
111 }
112 
113@@ -161,8 +153,8 @@ static void __init ar724x_usb_setup(void
114     ath79_device_reset_clear(AR724X_RESET_USB_PHY);
115     mdelay(10);
116 
117- ath79_ehci_resources[0].start = AR724X_EHCI_BASE;
118- ath79_ehci_resources[0].end = AR724X_EHCI_BASE + AR724X_EHCI_SIZE - 1;
119+ ath79_usb_init_resource(ath79_ehci_resources, AR724X_EHCI_BASE,
120+ AR724X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
121     ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
122     platform_device_register(&ath79_ehci_device);
123 }
124@@ -178,8 +170,8 @@ static void __init ar913x_usb_setup(void
125     ath79_device_reset_clear(AR913X_RESET_USB_PHY);
126     mdelay(10);
127 
128- ath79_ehci_resources[0].start = AR913X_EHCI_BASE;
129- ath79_ehci_resources[0].end = AR913X_EHCI_BASE + AR913X_EHCI_SIZE - 1;
130+ ath79_usb_init_resource(ath79_ehci_resources, AR913X_EHCI_BASE,
131+ AR913X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
132     ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
133     platform_device_register(&ath79_ehci_device);
134 }
135@@ -195,8 +187,8 @@ static void __init ar933x_usb_setup(void
136     ath79_device_reset_clear(AR933X_RESET_USB_PHY);
137     mdelay(10);
138 
139- ath79_ehci_resources[0].start = AR933X_EHCI_BASE;
140- ath79_ehci_resources[0].end = AR933X_EHCI_BASE + AR933X_EHCI_SIZE - 1;
141+ ath79_usb_init_resource(ath79_ehci_resources, AR933X_EHCI_BASE,
142+ AR933X_EHCI_SIZE, ATH79_CPU_IRQ_USB);
143     ath79_ehci_device.dev.platform_data = &ath79_ehci_pdata_v2;
144     platform_device_register(&ath79_ehci_device);
145 }
146

Archive Download this file



interactive