diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-25 07:25:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-25 07:25:22 -0400 |
commit | 8a9ea3237e7eb5c25f09e429ad242ae5a3d5ea22 (patch) | |
tree | a0a63398a9983667d52cbbbf4e2405b4f22b1d83 /arch/mips/include | |
parent | 1be025d3cb40cd295123af2c394f7229ef9b30ca (diff) | |
parent | 8b3408f8ee994973869d8ba32c5bf482bc4ddca4 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1745 commits)
dp83640: free packet queues on remove
dp83640: use proper function to free transmit time stamping packets
ipv6: Do not use routes from locally generated RAs
|PATCH net-next] tg3: add tx_dropped counter
be2net: don't create multiple RX/TX rings in multi channel mode
be2net: don't create multiple TXQs in BE2
be2net: refactor VF setup/teardown code into be_vf_setup/clear()
be2net: add vlan/rx-mode/flow-control config to be_setup()
net_sched: cls_flow: use skb_header_pointer()
ipv4: avoid useless call of the function check_peer_pmtu
TCP: remove TCP_DEBUG
net: Fix driver name for mdio-gpio.c
ipv4: tcp: fix TOS value in ACK messages sent from TIME_WAIT
rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces
ipv4: fix ipsec forward performance regression
jme: fix irq storm after suspend/resume
route: fix ICMP redirect validation
net: hold sock reference while processing tx timestamps
tcp: md5: add more const attributes
Add ethtool -g support to virtio_net
...
Fix up conflicts in:
- drivers/net/Kconfig:
The split-up generated a trivial conflict with removal of a
stale reference to Documentation/networking/net-modules.txt.
Remove it from the new location instead.
- fs/sysfs/dir.c:
Fairly nasty conflicts with the sysfs rb-tree usage, conflicting
with Eric Biederman's changes for tagged directories.
Diffstat (limited to 'arch/mips/include')
-rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/bcm47xx.h | 26 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-bcm47xx/gpio.h | 108 |
2 files changed, 117 insertions, 17 deletions
diff --git a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h index d008f47a28bd..de95e0723e2b 100644 --- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h +++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h | |||
@@ -19,7 +19,29 @@ | |||
19 | #ifndef __ASM_BCM47XX_H | 19 | #ifndef __ASM_BCM47XX_H |
20 | #define __ASM_BCM47XX_H | 20 | #define __ASM_BCM47XX_H |
21 | 21 | ||
22 | /* SSB bus */ | 22 | #include <linux/ssb/ssb.h> |
23 | extern struct ssb_bus ssb_bcm47xx; | 23 | #include <linux/bcma/bcma.h> |
24 | #include <linux/bcma/bcma_soc.h> | ||
25 | |||
26 | enum bcm47xx_bus_type { | ||
27 | #ifdef CONFIG_BCM47XX_SSB | ||
28 | BCM47XX_BUS_TYPE_SSB, | ||
29 | #endif | ||
30 | #ifdef CONFIG_BCM47XX_BCMA | ||
31 | BCM47XX_BUS_TYPE_BCMA, | ||
32 | #endif | ||
33 | }; | ||
34 | |||
35 | union bcm47xx_bus { | ||
36 | #ifdef CONFIG_BCM47XX_SSB | ||
37 | struct ssb_bus ssb; | ||
38 | #endif | ||
39 | #ifdef CONFIG_BCM47XX_BCMA | ||
40 | struct bcma_soc bcma; | ||
41 | #endif | ||
42 | }; | ||
43 | |||
44 | extern union bcm47xx_bus bcm47xx_bus; | ||
45 | extern enum bcm47xx_bus_type bcm47xx_bus_type; | ||
24 | 46 | ||
25 | #endif /* __ASM_BCM47XX_H */ | 47 | #endif /* __ASM_BCM47XX_H */ |
diff --git a/arch/mips/include/asm/mach-bcm47xx/gpio.h b/arch/mips/include/asm/mach-bcm47xx/gpio.h index 98504142124e..76961cabeedf 100644 --- a/arch/mips/include/asm/mach-bcm47xx/gpio.h +++ b/arch/mips/include/asm/mach-bcm47xx/gpio.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #define __BCM47XX_GPIO_H | 10 | #define __BCM47XX_GPIO_H |
11 | 11 | ||
12 | #include <linux/ssb/ssb_embedded.h> | 12 | #include <linux/ssb/ssb_embedded.h> |
13 | #include <linux/bcma/bcma.h> | ||
13 | #include <asm/mach-bcm47xx/bcm47xx.h> | 14 | #include <asm/mach-bcm47xx/bcm47xx.h> |
14 | 15 | ||
15 | #define BCM47XX_EXTIF_GPIO_LINES 5 | 16 | #define BCM47XX_EXTIF_GPIO_LINES 5 |
@@ -21,41 +22,118 @@ extern int gpio_to_irq(unsigned gpio); | |||
21 | 22 | ||
22 | static inline int gpio_get_value(unsigned gpio) | 23 | static inline int gpio_get_value(unsigned gpio) |
23 | { | 24 | { |
24 | return ssb_gpio_in(&ssb_bcm47xx, 1 << gpio); | 25 | switch (bcm47xx_bus_type) { |
26 | #ifdef CONFIG_BCM47XX_SSB | ||
27 | case BCM47XX_BUS_TYPE_SSB: | ||
28 | return ssb_gpio_in(&bcm47xx_bus.ssb, 1 << gpio); | ||
29 | #endif | ||
30 | #ifdef CONFIG_BCM47XX_BCMA | ||
31 | case BCM47XX_BUS_TYPE_BCMA: | ||
32 | return bcma_chipco_gpio_in(&bcm47xx_bus.bcma.bus.drv_cc, | ||
33 | 1 << gpio); | ||
34 | #endif | ||
35 | } | ||
36 | return -EINVAL; | ||
25 | } | 37 | } |
26 | 38 | ||
27 | static inline void gpio_set_value(unsigned gpio, int value) | 39 | static inline void gpio_set_value(unsigned gpio, int value) |
28 | { | 40 | { |
29 | ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0); | 41 | switch (bcm47xx_bus_type) { |
42 | #ifdef CONFIG_BCM47XX_SSB | ||
43 | case BCM47XX_BUS_TYPE_SSB: | ||
44 | ssb_gpio_out(&bcm47xx_bus.ssb, 1 << gpio, | ||
45 | value ? 1 << gpio : 0); | ||
46 | return; | ||
47 | #endif | ||
48 | #ifdef CONFIG_BCM47XX_BCMA | ||
49 | case BCM47XX_BUS_TYPE_BCMA: | ||
50 | bcma_chipco_gpio_out(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio, | ||
51 | value ? 1 << gpio : 0); | ||
52 | return; | ||
53 | #endif | ||
54 | } | ||
30 | } | 55 | } |
31 | 56 | ||
32 | static inline int gpio_direction_input(unsigned gpio) | 57 | static inline int gpio_direction_input(unsigned gpio) |
33 | { | 58 | { |
34 | ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 0); | 59 | switch (bcm47xx_bus_type) { |
35 | return 0; | 60 | #ifdef CONFIG_BCM47XX_SSB |
61 | case BCM47XX_BUS_TYPE_SSB: | ||
62 | ssb_gpio_outen(&bcm47xx_bus.ssb, 1 << gpio, 0); | ||
63 | return 0; | ||
64 | #endif | ||
65 | #ifdef CONFIG_BCM47XX_BCMA | ||
66 | case BCM47XX_BUS_TYPE_BCMA: | ||
67 | bcma_chipco_gpio_outen(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio, | ||
68 | 0); | ||
69 | return 0; | ||
70 | #endif | ||
71 | } | ||
72 | return -EINVAL; | ||
36 | } | 73 | } |
37 | 74 | ||
38 | static inline int gpio_direction_output(unsigned gpio, int value) | 75 | static inline int gpio_direction_output(unsigned gpio, int value) |
39 | { | 76 | { |
40 | /* first set the gpio out value */ | 77 | switch (bcm47xx_bus_type) { |
41 | ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0); | 78 | #ifdef CONFIG_BCM47XX_SSB |
42 | /* then set the gpio mode */ | 79 | case BCM47XX_BUS_TYPE_SSB: |
43 | ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 1 << gpio); | 80 | /* first set the gpio out value */ |
44 | return 0; | 81 | ssb_gpio_out(&bcm47xx_bus.ssb, 1 << gpio, |
82 | value ? 1 << gpio : 0); | ||
83 | /* then set the gpio mode */ | ||
84 | ssb_gpio_outen(&bcm47xx_bus.ssb, 1 << gpio, 1 << gpio); | ||
85 | return 0; | ||
86 | #endif | ||
87 | #ifdef CONFIG_BCM47XX_BCMA | ||
88 | case BCM47XX_BUS_TYPE_BCMA: | ||
89 | /* first set the gpio out value */ | ||
90 | bcma_chipco_gpio_out(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio, | ||
91 | value ? 1 << gpio : 0); | ||
92 | /* then set the gpio mode */ | ||
93 | bcma_chipco_gpio_outen(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio, | ||
94 | 1 << gpio); | ||
95 | return 0; | ||
96 | #endif | ||
97 | } | ||
98 | return -EINVAL; | ||
45 | } | 99 | } |
46 | 100 | ||
47 | static inline int gpio_intmask(unsigned gpio, int value) | 101 | static inline int gpio_intmask(unsigned gpio, int value) |
48 | { | 102 | { |
49 | ssb_gpio_intmask(&ssb_bcm47xx, 1 << gpio, | 103 | switch (bcm47xx_bus_type) { |
50 | value ? 1 << gpio : 0); | 104 | #ifdef CONFIG_BCM47XX_SSB |
51 | return 0; | 105 | case BCM47XX_BUS_TYPE_SSB: |
106 | ssb_gpio_intmask(&bcm47xx_bus.ssb, 1 << gpio, | ||
107 | value ? 1 << gpio : 0); | ||
108 | return 0; | ||
109 | #endif | ||
110 | #ifdef CONFIG_BCM47XX_BCMA | ||
111 | case BCM47XX_BUS_TYPE_BCMA: | ||
112 | bcma_chipco_gpio_intmask(&bcm47xx_bus.bcma.bus.drv_cc, | ||
113 | 1 << gpio, value ? 1 << gpio : 0); | ||
114 | return 0; | ||
115 | #endif | ||
116 | } | ||
117 | return -EINVAL; | ||
52 | } | 118 | } |
53 | 119 | ||
54 | static inline int gpio_polarity(unsigned gpio, int value) | 120 | static inline int gpio_polarity(unsigned gpio, int value) |
55 | { | 121 | { |
56 | ssb_gpio_polarity(&ssb_bcm47xx, 1 << gpio, | 122 | switch (bcm47xx_bus_type) { |
57 | value ? 1 << gpio : 0); | 123 | #ifdef CONFIG_BCM47XX_SSB |
58 | return 0; | 124 | case BCM47XX_BUS_TYPE_SSB: |
125 | ssb_gpio_polarity(&bcm47xx_bus.ssb, 1 << gpio, | ||
126 | value ? 1 << gpio : 0); | ||
127 | return 0; | ||
128 | #endif | ||
129 | #ifdef CONFIG_BCM47XX_BCMA | ||
130 | case BCM47XX_BUS_TYPE_BCMA: | ||
131 | bcma_chipco_gpio_polarity(&bcm47xx_bus.bcma.bus.drv_cc, | ||
132 | 1 << gpio, value ? 1 << gpio : 0); | ||
133 | return 0; | ||
134 | #endif | ||
135 | } | ||
136 | return -EINVAL; | ||
59 | } | 137 | } |
60 | 138 | ||
61 | 139 | ||