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.
This commit is contained in:
@@ -19,7 +19,29 @@
|
||||
#ifndef __ASM_BCM47XX_H
|
||||
#define __ASM_BCM47XX_H
|
||||
|
||||
/* SSB bus */
|
||||
extern struct ssb_bus ssb_bcm47xx;
|
||||
#include <linux/ssb/ssb.h>
|
||||
#include <linux/bcma/bcma.h>
|
||||
#include <linux/bcma/bcma_soc.h>
|
||||
|
||||
enum bcm47xx_bus_type {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
BCM47XX_BUS_TYPE_SSB,
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
BCM47XX_BUS_TYPE_BCMA,
|
||||
#endif
|
||||
};
|
||||
|
||||
union bcm47xx_bus {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
struct ssb_bus ssb;
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
struct bcma_soc bcma;
|
||||
#endif
|
||||
};
|
||||
|
||||
extern union bcm47xx_bus bcm47xx_bus;
|
||||
extern enum bcm47xx_bus_type bcm47xx_bus_type;
|
||||
|
||||
#endif /* __ASM_BCM47XX_H */
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#define __BCM47XX_GPIO_H
|
||||
|
||||
#include <linux/ssb/ssb_embedded.h>
|
||||
#include <linux/bcma/bcma.h>
|
||||
#include <asm/mach-bcm47xx/bcm47xx.h>
|
||||
|
||||
#define BCM47XX_EXTIF_GPIO_LINES 5
|
||||
@@ -21,41 +22,118 @@ extern int gpio_to_irq(unsigned gpio);
|
||||
|
||||
static inline int gpio_get_value(unsigned gpio)
|
||||
{
|
||||
return ssb_gpio_in(&ssb_bcm47xx, 1 << gpio);
|
||||
switch (bcm47xx_bus_type) {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
case BCM47XX_BUS_TYPE_SSB:
|
||||
return ssb_gpio_in(&bcm47xx_bus.ssb, 1 << gpio);
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
case BCM47XX_BUS_TYPE_BCMA:
|
||||
return bcma_chipco_gpio_in(&bcm47xx_bus.bcma.bus.drv_cc,
|
||||
1 << gpio);
|
||||
#endif
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline void gpio_set_value(unsigned gpio, int value)
|
||||
{
|
||||
ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0);
|
||||
switch (bcm47xx_bus_type) {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
case BCM47XX_BUS_TYPE_SSB:
|
||||
ssb_gpio_out(&bcm47xx_bus.ssb, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
return;
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
case BCM47XX_BUS_TYPE_BCMA:
|
||||
bcma_chipco_gpio_out(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static inline int gpio_direction_input(unsigned gpio)
|
||||
{
|
||||
ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 0);
|
||||
return 0;
|
||||
switch (bcm47xx_bus_type) {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
case BCM47XX_BUS_TYPE_SSB:
|
||||
ssb_gpio_outen(&bcm47xx_bus.ssb, 1 << gpio, 0);
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
case BCM47XX_BUS_TYPE_BCMA:
|
||||
bcma_chipco_gpio_outen(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
|
||||
0);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int gpio_direction_output(unsigned gpio, int value)
|
||||
{
|
||||
/* first set the gpio out value */
|
||||
ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0);
|
||||
/* then set the gpio mode */
|
||||
ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 1 << gpio);
|
||||
return 0;
|
||||
switch (bcm47xx_bus_type) {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
case BCM47XX_BUS_TYPE_SSB:
|
||||
/* first set the gpio out value */
|
||||
ssb_gpio_out(&bcm47xx_bus.ssb, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
/* then set the gpio mode */
|
||||
ssb_gpio_outen(&bcm47xx_bus.ssb, 1 << gpio, 1 << gpio);
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
case BCM47XX_BUS_TYPE_BCMA:
|
||||
/* first set the gpio out value */
|
||||
bcma_chipco_gpio_out(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
/* then set the gpio mode */
|
||||
bcma_chipco_gpio_outen(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
|
||||
1 << gpio);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int gpio_intmask(unsigned gpio, int value)
|
||||
{
|
||||
ssb_gpio_intmask(&ssb_bcm47xx, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
return 0;
|
||||
switch (bcm47xx_bus_type) {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
case BCM47XX_BUS_TYPE_SSB:
|
||||
ssb_gpio_intmask(&bcm47xx_bus.ssb, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
case BCM47XX_BUS_TYPE_BCMA:
|
||||
bcma_chipco_gpio_intmask(&bcm47xx_bus.bcma.bus.drv_cc,
|
||||
1 << gpio, value ? 1 << gpio : 0);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int gpio_polarity(unsigned gpio, int value)
|
||||
{
|
||||
ssb_gpio_polarity(&ssb_bcm47xx, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
return 0;
|
||||
switch (bcm47xx_bus_type) {
|
||||
#ifdef CONFIG_BCM47XX_SSB
|
||||
case BCM47XX_BUS_TYPE_SSB:
|
||||
ssb_gpio_polarity(&bcm47xx_bus.ssb, 1 << gpio,
|
||||
value ? 1 << gpio : 0);
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef CONFIG_BCM47XX_BCMA
|
||||
case BCM47XX_BUS_TYPE_BCMA:
|
||||
bcma_chipco_gpio_polarity(&bcm47xx_bus.bcma.bus.drv_cc,
|
||||
1 << gpio, value ? 1 << gpio : 0);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user