linux-mips
[Top] [All Lists]

[PATCH 1/2] ar7: make board code register ar7_wdt as a platform device

To: Ralf Baechle <ralf@linux-mips.org>
Subject: [PATCH 1/2] ar7: make board code register ar7_wdt as a platform device
From: Florian Fainelli <florian@openwrt.org>
Date: Wed, 15 Jul 2009 12:09:34 +0200
Cc: linux-mips@linux-mips.org, Wim Van Sebroeck <wim@iguana.be>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:from:date:subject :mime-version:x-uid:x-length:to:cc:content-type :content-transfer-encoding:content-disposition:message-id; bh=1JTQ7VZ4Zf19SH/A/VR5mf8T7vMGfhJ8AxcOMZ36cek=; b=iI2YUueP79yDibpphbY55qrdUBn/Lxqzdu8AEJOgMtAJRcjnp6FGaPpwk69qRzg/2x Wl8ORhsMtlvtmaWtTMLy9t1OgVSzlzkoqoKQzSaJDITyqPjkGKgRW9pCYZepd5UFpigB /k7DPRo+Uc0EJthCp2k0QRAnlmQ2oDg8ZiOJY=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:date:subject:mime-version:x-uid:x-length:to:cc :content-type:content-transfer-encoding:content-disposition :message-id; b=An47pX1ynXC0zWc2VzobwYfauCxQFb1IfByUqRIAuoAUJf0KlPEvRTTMX3wYOJbKFi SMygdGy9oFw2nQ9G1HrGQ6gmq3sE7fd4OqEj9mnkjrHu8/Q0aSGRZd2eW4pT6YcVEqaX gH7XhzKvj0ktlQVYdtyEkHQxckWbsaee/TsOU=
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
This patch makes the board code register the ar7_wdt
driver as a platform device. We move the dynamic
resource calculation here since the driver should not be
aware of the AR7 SoC version it is running on.

Signed-off-by: Florian Fainelli <florian@openwrt.org>
---
diff --git a/arch/mips/ar7/platform.c b/arch/mips/ar7/platform.c
index 5422449..06e3147 100644
--- a/arch/mips/ar7/platform.c
+++ b/arch/mips/ar7/platform.c
@@ -410,6 +410,20 @@ static struct platform_device ar7_udc = {
        .num_resources = ARRAY_SIZE(usb_res),
 };
 
+static struct resource ar7_wdt_res = {
+       .name = "regs",
+       .start = -1, /* Filled at runtime */
+       .end = -1, /* Filled at runtime */
+       .flags = IORESOURCE_MEM,
+};
+
+static struct platform_device ar7_wdt = {
+       .id = -1,
+       .name  = "ar7_wdt",
+       .resource = &ar7_wdt_res,
+       .num_resources = 1,
+};
+
 static inline unsigned char char2hex(char h)
 {
        switch (h) {
@@ -482,6 +496,7 @@ static int __init ar7_register_devices(void)
 {
        int res;
        static struct uart_port uart_port[2];
+       u16 chip_id;
 
        memset(uart_port, 0, sizeof(struct uart_port) * 2);
 
@@ -550,6 +565,23 @@ static int __init ar7_register_devices(void)
 
        res = platform_device_register(&ar7_udc);
 
+       chip_id = ar7_chip_id();
+       switch (chip_id) {
+       case AR7_CHIP_7100:
+       case AR7_CHIP_7200:
+               ar7_wdt_res.start = AR7_REGS_WDT;
+               break;
+       case AR7_CHIP_7300:
+               ar7_wdt_res.start = UR8_REGS_WDT;
+               break;
+       default:
+               break;
+       }
+
+       ar7_wdt_res.end = ar7_wdt_res.start + 0x20;
+
+       res = platform_device_register(&ar7_wdt);
+
        return res;
 }
 arch_initcall(ar7_register_devices);

<Prev in Thread] Current Thread [Next in Thread>