mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 30b15d9a4b05e38ae19e340b63e1a2bca917d557 Mon Sep 17 00:00:00 2001
 | 
						|
From: Gabor Juhos <juhosg@openwrt.org>
 | 
						|
Date: Wed, 28 Mar 2012 14:15:23 +0200
 | 
						|
Subject: [PATCH 38/47] MIPS: ath79: use a helper function for USB resource initialization
 | 
						|
 | 
						|
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>
 | 
						|
---
 | 
						|
 arch/mips/ath79/dev-usb.c |   64 +++++++++++++++++++-------------------------
 | 
						|
 1 files 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);
 | 
						|
 }
 |