embedded.c (da733563be5a9da26fe81d9f007262d00b846e22) embedded.c (bde327eff8a722df1198df9b14464f84f1adfb65)
1/*
2 * Sonics Silicon Backplane
3 * Embedded systems support code
4 *
5 * Copyright 2005-2008, Broadcom Corporation
6 * Copyright 2006-2008, Michael Buesch <m@bues.ch>
1/*
2 * Sonics Silicon Backplane
3 * Embedded systems support code
4 *
5 * Copyright 2005-2008, Broadcom Corporation
6 * Copyright 2006-2008, Michael Buesch <m@bues.ch>
7 * Copyright 2012, Hauke Mehrtens <hauke@hauke-m.de>
7 *
8 * Licensed under the GNU/GPL. See COPYING for details.
9 */
10
11#include <linux/export.h>
8 *
9 * Licensed under the GNU/GPL. See COPYING for details.
10 */
11
12#include <linux/export.h>
13#include <linux/platform_device.h>
12#include <linux/ssb/ssb.h>
13#include <linux/ssb/ssb_embedded.h>
14#include <linux/ssb/ssb_driver_pci.h>
15#include <linux/ssb/ssb_driver_gige.h>
16#include <linux/pci.h>
17
18#include "ssb_private.h"
19

--- 7 unchanged lines hidden (view full) ---

27 if (ssb_extif_available(&bus->extif)) {
28 ssb_extif_watchdog_timer_set(&bus->extif, ticks);
29 return 0;
30 }
31 return -ENODEV;
32}
33EXPORT_SYMBOL(ssb_watchdog_timer_set);
34
14#include <linux/ssb/ssb.h>
15#include <linux/ssb/ssb_embedded.h>
16#include <linux/ssb/ssb_driver_pci.h>
17#include <linux/ssb/ssb_driver_gige.h>
18#include <linux/pci.h>
19
20#include "ssb_private.h"
21

--- 7 unchanged lines hidden (view full) ---

29 if (ssb_extif_available(&bus->extif)) {
30 ssb_extif_watchdog_timer_set(&bus->extif, ticks);
31 return 0;
32 }
33 return -ENODEV;
34}
35EXPORT_SYMBOL(ssb_watchdog_timer_set);
36
37int ssb_watchdog_register(struct ssb_bus *bus)
38{
39 struct bcm47xx_wdt wdt = {};
40 struct platform_device *pdev;
41
42 if (ssb_chipco_available(&bus->chipco)) {
43 wdt.driver_data = &bus->chipco;
44 wdt.timer_set = ssb_chipco_watchdog_timer_set_wdt;
45 wdt.timer_set_ms = ssb_chipco_watchdog_timer_set_ms;
46 wdt.max_timer_ms = bus->chipco.max_timer_ms;
47 } else if (ssb_extif_available(&bus->extif)) {
48 wdt.driver_data = &bus->extif;
49 wdt.timer_set = ssb_extif_watchdog_timer_set_wdt;
50 wdt.timer_set_ms = ssb_extif_watchdog_timer_set_ms;
51 wdt.max_timer_ms = SSB_EXTIF_WATCHDOG_MAX_TIMER_MS;
52 } else {
53 return -ENODEV;
54 }
55
56 pdev = platform_device_register_data(NULL, "bcm47xx-wdt",
57 bus->busnumber, &wdt,
58 sizeof(wdt));
59 if (IS_ERR(pdev)) {
60 ssb_dprintk(KERN_INFO PFX
61 "can not register watchdog device, err: %li\n",
62 PTR_ERR(pdev));
63 return PTR_ERR(pdev);
64 }
65
66 bus->watchdog = pdev;
67 return 0;
68}
69
35u32 ssb_gpio_in(struct ssb_bus *bus, u32 mask)
36{
37 unsigned long flags;
38 u32 res = 0;
39
40 spin_lock_irqsave(&bus->gpio_lock, flags);
41 if (ssb_chipco_available(&bus->chipco))
42 res = ssb_chipco_gpio_in(&bus->chipco, mask);

--- 182 unchanged lines hidden ---
70u32 ssb_gpio_in(struct ssb_bus *bus, u32 mask)
71{
72 unsigned long flags;
73 u32 res = 0;
74
75 spin_lock_irqsave(&bus->gpio_lock, flags);
76 if (ssb_chipco_available(&bus->chipco))
77 res = ssb_chipco_gpio_in(&bus->chipco, mask);

--- 182 unchanged lines hidden ---