diff options
author | Arnd Bergmann <arnd@arndb.de> | 2012-03-16 16:13:43 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2012-03-16 16:13:43 -0400 |
commit | c899445f9783309ac73073282d4c0ae27f51fa9a (patch) | |
tree | 4b414caca7c3879c543d118af43d9c72cc279225 /drivers | |
parent | 5dab643cd67e1a791052d092ab447534937bf3f1 (diff) | |
parent | e871b87a1e978e618c75acd4ceb6cd4699728691 (diff) |
Merge branch 'kirkwood_dt_for_3.4_v3' of git://git.infradead.org/users/jcooper/linux-kirkwood into kirkwood/dt
* 'kirkwood_dt_for_3.4_v3' of git://git.infradead.org/users/jcooper/linux-kirkwood:
ARM: kirkwood: use devicetree for rtc-mv
ARM: kirkwood: rtc-mv devicetree bindings
ARM: kirkwood: fdt: define uart[01] as disabled, enable uart0
ARM: kirkwood: fdt: facilitate new boards during fdt migration
ARM: kirkwood: fdt: absorb kirkwood_init()
ARM: kirkwood: fdt: use mrvl ticker symbol
ARM: orion: wdt: use resource vice direct access
ARM: Kirkwood: Remove tclk from kirkwood_asoc_platform_data.
ARM: orion: spi: remove enable_clock_fix which is not used
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/rtc/rtc-mv.c | 9 | ||||
-rw-r--r-- | drivers/spi/spi-orion.c | 5 | ||||
-rw-r--r-- | drivers/watchdog/orion_wdt.c | 24 |
3 files changed, 24 insertions, 14 deletions
diff --git a/drivers/rtc/rtc-mv.c b/drivers/rtc/rtc-mv.c index 768e2edb9678..0dd8421d41c3 100644 --- a/drivers/rtc/rtc-mv.c +++ b/drivers/rtc/rtc-mv.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/bcd.h> | 12 | #include <linux/bcd.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/of.h> | ||
15 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
16 | #include <linux/gfp.h> | 17 | #include <linux/gfp.h> |
17 | #include <linux/module.h> | 18 | #include <linux/module.h> |
@@ -294,11 +295,19 @@ static int __exit mv_rtc_remove(struct platform_device *pdev) | |||
294 | return 0; | 295 | return 0; |
295 | } | 296 | } |
296 | 297 | ||
298 | #ifdef CONFIG_OF | ||
299 | static struct of_device_id rtc_mv_of_match_table[] = { | ||
300 | { .compatible = "mrvl,orion-rtc", }, | ||
301 | {} | ||
302 | }; | ||
303 | #endif | ||
304 | |||
297 | static struct platform_driver mv_rtc_driver = { | 305 | static struct platform_driver mv_rtc_driver = { |
298 | .remove = __exit_p(mv_rtc_remove), | 306 | .remove = __exit_p(mv_rtc_remove), |
299 | .driver = { | 307 | .driver = { |
300 | .name = "rtc-mv", | 308 | .name = "rtc-mv", |
301 | .owner = THIS_MODULE, | 309 | .owner = THIS_MODULE, |
310 | .of_match_table = of_match_ptr(rtc_mv_of_match_table), | ||
302 | }, | 311 | }, |
303 | }; | 312 | }; |
304 | 313 | ||
diff --git a/drivers/spi/spi-orion.c b/drivers/spi/spi-orion.c index 13448c832c44..e496f799b7a9 100644 --- a/drivers/spi/spi-orion.c +++ b/drivers/spi/spi-orion.c | |||
@@ -359,11 +359,6 @@ static int orion_spi_setup(struct spi_device *spi) | |||
359 | 359 | ||
360 | orion_spi = spi_master_get_devdata(spi->master); | 360 | orion_spi = spi_master_get_devdata(spi->master); |
361 | 361 | ||
362 | /* Fix ac timing if required. */ | ||
363 | if (orion_spi->spi_info->enable_clock_fix) | ||
364 | orion_spi_setbits(orion_spi, ORION_SPI_IF_CONFIG_REG, | ||
365 | (1 << 14)); | ||
366 | |||
367 | if ((spi->max_speed_hz == 0) | 362 | if ((spi->max_speed_hz == 0) |
368 | || (spi->max_speed_hz > orion_spi->max_speed)) | 363 | || (spi->max_speed_hz > orion_spi->max_speed)) |
369 | spi->max_speed_hz = orion_spi->max_speed; | 364 | spi->max_speed_hz = orion_spi->max_speed; |
diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c index 4ad78f868515..1368e4ca3100 100644 --- a/drivers/watchdog/orion_wdt.c +++ b/drivers/watchdog/orion_wdt.c | |||
@@ -28,9 +28,9 @@ | |||
28 | /* | 28 | /* |
29 | * Watchdog timer block registers. | 29 | * Watchdog timer block registers. |
30 | */ | 30 | */ |
31 | #define TIMER_CTRL (TIMER_VIRT_BASE + 0x0000) | 31 | #define TIMER_CTRL 0x0000 |
32 | #define WDT_EN 0x0010 | 32 | #define WDT_EN 0x0010 |
33 | #define WDT_VAL (TIMER_VIRT_BASE + 0x0024) | 33 | #define WDT_VAL 0x0024 |
34 | 34 | ||
35 | #define WDT_MAX_CYCLE_COUNT 0xffffffff | 35 | #define WDT_MAX_CYCLE_COUNT 0xffffffff |
36 | #define WDT_IN_USE 0 | 36 | #define WDT_IN_USE 0 |
@@ -40,6 +40,7 @@ static int nowayout = WATCHDOG_NOWAYOUT; | |||
40 | static int heartbeat = -1; /* module parameter (seconds) */ | 40 | static int heartbeat = -1; /* module parameter (seconds) */ |
41 | static unsigned int wdt_max_duration; /* (seconds) */ | 41 | static unsigned int wdt_max_duration; /* (seconds) */ |
42 | static unsigned int wdt_tclk; | 42 | static unsigned int wdt_tclk; |
43 | static void __iomem *wdt_reg; | ||
43 | static unsigned long wdt_status; | 44 | static unsigned long wdt_status; |
44 | static DEFINE_SPINLOCK(wdt_lock); | 45 | static DEFINE_SPINLOCK(wdt_lock); |
45 | 46 | ||
@@ -48,7 +49,7 @@ static void orion_wdt_ping(void) | |||
48 | spin_lock(&wdt_lock); | 49 | spin_lock(&wdt_lock); |
49 | 50 | ||
50 | /* Reload watchdog duration */ | 51 | /* Reload watchdog duration */ |
51 | writel(wdt_tclk * heartbeat, WDT_VAL); | 52 | writel(wdt_tclk * heartbeat, wdt_reg + WDT_VAL); |
52 | 53 | ||
53 | spin_unlock(&wdt_lock); | 54 | spin_unlock(&wdt_lock); |
54 | } | 55 | } |
@@ -60,7 +61,7 @@ static void orion_wdt_enable(void) | |||
60 | spin_lock(&wdt_lock); | 61 | spin_lock(&wdt_lock); |
61 | 62 | ||
62 | /* Set watchdog duration */ | 63 | /* Set watchdog duration */ |
63 | writel(wdt_tclk * heartbeat, WDT_VAL); | 64 | writel(wdt_tclk * heartbeat, wdt_reg + WDT_VAL); |
64 | 65 | ||
65 | /* Clear watchdog timer interrupt */ | 66 | /* Clear watchdog timer interrupt */ |
66 | reg = readl(BRIDGE_CAUSE); | 67 | reg = readl(BRIDGE_CAUSE); |
@@ -68,9 +69,9 @@ static void orion_wdt_enable(void) | |||
68 | writel(reg, BRIDGE_CAUSE); | 69 | writel(reg, BRIDGE_CAUSE); |
69 | 70 | ||
70 | /* Enable watchdog timer */ | 71 | /* Enable watchdog timer */ |
71 | reg = readl(TIMER_CTRL); | 72 | reg = readl(wdt_reg + TIMER_CTRL); |
72 | reg |= WDT_EN; | 73 | reg |= WDT_EN; |
73 | writel(reg, TIMER_CTRL); | 74 | writel(reg, wdt_reg + TIMER_CTRL); |
74 | 75 | ||
75 | /* Enable reset on watchdog */ | 76 | /* Enable reset on watchdog */ |
76 | reg = readl(RSTOUTn_MASK); | 77 | reg = readl(RSTOUTn_MASK); |
@@ -92,9 +93,9 @@ static void orion_wdt_disable(void) | |||
92 | writel(reg, RSTOUTn_MASK); | 93 | writel(reg, RSTOUTn_MASK); |
93 | 94 | ||
94 | /* Disable watchdog timer */ | 95 | /* Disable watchdog timer */ |
95 | reg = readl(TIMER_CTRL); | 96 | reg = readl(wdt_reg + TIMER_CTRL); |
96 | reg &= ~WDT_EN; | 97 | reg &= ~WDT_EN; |
97 | writel(reg, TIMER_CTRL); | 98 | writel(reg, wdt_reg + TIMER_CTRL); |
98 | 99 | ||
99 | spin_unlock(&wdt_lock); | 100 | spin_unlock(&wdt_lock); |
100 | } | 101 | } |
@@ -102,7 +103,7 @@ static void orion_wdt_disable(void) | |||
102 | static int orion_wdt_get_timeleft(int *time_left) | 103 | static int orion_wdt_get_timeleft(int *time_left) |
103 | { | 104 | { |
104 | spin_lock(&wdt_lock); | 105 | spin_lock(&wdt_lock); |
105 | *time_left = readl(WDT_VAL) / wdt_tclk; | 106 | *time_left = readl(wdt_reg + WDT_VAL) / wdt_tclk; |
106 | spin_unlock(&wdt_lock); | 107 | spin_unlock(&wdt_lock); |
107 | return 0; | 108 | return 0; |
108 | } | 109 | } |
@@ -236,6 +237,7 @@ static struct miscdevice orion_wdt_miscdev = { | |||
236 | static int __devinit orion_wdt_probe(struct platform_device *pdev) | 237 | static int __devinit orion_wdt_probe(struct platform_device *pdev) |
237 | { | 238 | { |
238 | struct orion_wdt_platform_data *pdata = pdev->dev.platform_data; | 239 | struct orion_wdt_platform_data *pdata = pdev->dev.platform_data; |
240 | struct resource *res; | ||
239 | int ret; | 241 | int ret; |
240 | 242 | ||
241 | if (pdata) { | 243 | if (pdata) { |
@@ -245,6 +247,10 @@ static int __devinit orion_wdt_probe(struct platform_device *pdev) | |||
245 | return -ENODEV; | 247 | return -ENODEV; |
246 | } | 248 | } |
247 | 249 | ||
250 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
251 | |||
252 | wdt_reg = ioremap(res->start, resource_size(res)); | ||
253 | |||
248 | if (orion_wdt_miscdev.parent) | 254 | if (orion_wdt_miscdev.parent) |
249 | return -EBUSY; | 255 | return -EBUSY; |
250 | orion_wdt_miscdev.parent = &pdev->dev; | 256 | orion_wdt_miscdev.parent = &pdev->dev; |