Commit graph

162 commits

Author SHA1 Message Date
Jonas Gorski
bb0118c66f generic: add b53 swconfig switch driver
Add swconfig switch driver for Broadcom BCM53XX switch chips. Supports
switches connected through MDIO, SPI or memory mapped registers, and
supports BCM5325, BCM539x, BCM531x5 and the BCM63XX internal switch
chips.

Tested are BCM5325 trough MDIO, BCM53115 through SPI, and BCM6328.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 35305
2013-01-23 10:12:33 +00:00
Jonas Gorski
c3eeff807f generic: rtl8366_smi: only assign pvid if no pvid was set yet
Only assign a pvid if the current pvid is 0. Fixes using mixed tagged
and untagged traffic on a port and the untagged vlan isn't the last one
of which the port is a member.

Tested on RTL8366S and RTL8367R.

Fixes #8501.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 35227
2013-01-18 15:19:11 +00:00
Gabor Juhos
d4b4c7d102 generic: ar8216: add sgmii_delay_en field to ar8327_platform_data
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34881
2012-12-25 18:45:31 +00:00
Gabor Juhos
c3cb63661f generic: ar8216: don't use 0 as default VID on AR8327
VID0 is reserved for priority-tagged packets.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34862
2012-12-22 18:30:04 +00:00
Gabor Juhos
3931c9524c generic: ar8316: allow to configure port 6 via platform data on AR8327
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34847
2012-12-22 12:12:37 +00:00
Gabor Juhos
a0b31f97bb generic: ar8216: rename cpuport_cfg to port0_cfg in ar8327_platform_data
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34846
2012-12-22 12:12:35 +00:00
John Crispin
123343d424 make to rtl8366_smi of binding use gpio_is_valid
SVN-Revision: 34816
2012-12-21 13:47:14 +00:00
Gabor Juhos
d153bdbba9 generic: rtl836x: fix compiler warnings
CC      drivers/net/phy/rtl8366rb.o
In file included from drivers/net/phy/rtl8366s.c:16:0:
include/linux/of_platform.h:106:13: warning: 'struct device' declared inside parameter list [enabled by default]
include/linux/of_platform.h:106:13: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
drivers/net/phy/rtl8366s.c: In function 'rtl8366s_probe':
drivers/net/phy/rtl8366s.c:1094:2: warning: label 'err_out' defined but not used [-Wunused-label]
drivers/net/phy/rtl8366s.c:1055:32: warning: unused variable 'pdata'[-Wunused-variable]
  CC      drivers/net/phy/rtl8366rb.o
In file included from drivers/net/phy/rtl8366rb.c:17:0:
include/linux/of_platform.h:106:13: warning: 'struct device' declared inside parameter list [enabled by default]
include/linux/of_platform.h:106:13: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
drivers/net/phy/rtl8366rb.c: In function 'rtl8366rb_probe':
drivers/net/phy/rtl8366rb.c:1214:2: warning: label 'err_out' defined but not used [-Wunused-label]
drivers/net/phy/rtl8366rb.c:1175:32: warning: unused variable 'pdata'[-Wunused-variable]
  CC      drivers/net/phy/rtl8367.o
In file included from drivers/net/phy/rtl8367.c:15:0:
include/linux/of_platform.h:106:13: warning: 'struct device' declared inside parameter list [enabled by default]
include/linux/of_platform.h:106:13: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
drivers/net/phy/rtl8367.c: In function 'rtl8367_probe':
drivers/net/phy/rtl8367.c:1712:2: warning: label 'err_out' defined but not used [-Wunused-label]
drivers/net/phy/rtl8367.c:1677:32: warning: unused variable 'pdata' [-Wunused-variable]
  CC      drivers/net/phy/rtl8367b.o
In file included from drivers/net/phy/rtl8367b.c:15:0:
include/linux/of_platform.h:106:13: warning: 'struct device' declared inside parameter list [enabled by default]
include/linux/of_platform.h:106:13: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
drivers/net/phy/rtl8367b.c: In function 'rtl8367b_probe':
drivers/net/phy/rtl8367b.c:1494:2: warning: label 'err_out' defined but not used [-Wunused-label]
drivers/net/phy/rtl8367b.c:1459:32: warning: unused variable 'pdata' [-Wunused-variable]

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34731
2012-12-17 13:02:18 +00:00
Jonas Gorski
eba8cccd88 linux: generic: rtl836*: fix compilation with !CONFIG_OF
fixes the following errors caused by r34682:

  CC [M]  drivers/net/phy/rtl8366_smi.o
In file included from drivers/net/phy/rtl8366_smi.c:26:0:
drivers/net/phy/rtl8366_smi.h:149:46: warning: 'struct platform_device' declared inside parameter list [enabled by default]
drivers/net/phy/rtl8366_smi.h:149:46: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
drivers/net/phy/rtl8366_smi.c:1398:65: warning: 'struct platform_device' declared inside parameter list [enabled by default]
drivers/net/phy/rtl8366_smi.c: In function 'rtl8366_smi_probe_plat':
drivers/net/phy/rtl8366_smi.c:1400:44: error: dereferencing pointer to incomplete type
drivers/net/phy/rtl8366_smi.c:1402:11: error: dereferencing pointer to incomplete type
drivers/net/phy/rtl8366_smi.c:1403:16: error: dereferencing pointer to incomplete type
drivers/net/phy/rtl8366_smi.c: At top level:
drivers/net/phy/rtl8366_smi.c:1415:46: warning: 'struct platform_device' declared inside parameter list [enabled by default]
drivers/net/phy/rtl8366_smi.c:1415:21: error: conflicting types for 'rtl8366_smi_probe'
drivers/net/phy/rtl8366_smi.h:149:21: note: previous declaration of 'rtl8366_smi_probe' was here
drivers/net/phy/rtl8366_smi.c: In function 'rtl8366_smi_probe':
drivers/net/phy/rtl8366_smi.c:1420:31: error: dereferencing pointer to incomplete type
drivers/net/phy/rtl8366_smi.c:1424:10: error: dereferencing pointer to incomplete type
drivers/net/phy/rtl8366_smi.c:1425:3: warning: passing argument 1 of 'rtl8366_smi_probe_of' from incompatible pointer type [enabled by default]
drivers/net/phy/rtl8366_smi.c:1392:19: note: expected 'struct device_node *' but argument is of type 'struct platform_device *'
drivers/net/phy/rtl8366_smi.c:1427:3: warning: passing argument 1 of 'rtl8366_smi_probe_plat' from incompatible pointer type [enabled by default]
drivers/net/phy/rtl8366_smi.c:1398:5: note: expected 'struct platform_device *' but argument is of type 'struct platform_device *'
drivers/net/phy/rtl8366_smi.c: At top level:
drivers/net/phy/rtl8366_smi.c:1438:1: error: conflicting types for 'rtl8366_smi_probe'
drivers/net/phy/rtl8366_smi.h:149:21: note: previous declaration of 'rtl8366_smi_probe' was here
make[7]: *** [drivers/net/phy/rtl8366_smi.o] Error 1
make[6]: *** [drivers/net/phy] Error 2
make[5]: *** [drivers/net] Error 2
make[4]: *** [drivers] Error 2

Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 34703
2012-12-15 13:32:02 +00:00
John Crispin
d8678644f9 make rtl8366 driver OF capable
SVN-Revision: 34682
2012-12-15 01:59:08 +00:00
Gabor Juhos
49d4b5581d generic: ar8216: set delay values for SGMII mode on AR8327
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34315
2012-11-23 20:55:26 +00:00
Gabor Juhos
3205b52d1c generic: ar8216: introduce ar8216_mib_op helper
The ar8216_mib_{capture,flush} functions are similar.
Move the common code into a helper and use that from
the original functions.

This change also fixes a lockdep warning in
ar8216_mib_flush.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34297
2012-11-22 10:33:03 +00:00
Gabor Juhos
10d30f2d2d swconfig: make it compatible with 3.7
swconfig does not compile with 3.7 because

struct netlink_notify->pid    has been renamed to
struct netlink_notify->portid

and

struct genl_info->snd_pid     has been renamed to
struct genl_info->snd_portid

Use the new names and add compatibility patches
to 3.3 and 3.6.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34288
2012-11-21 17:38:11 +00:00
Gabor Juhos
2a792f32b5 generic: ar8216: fix port number check in 'ar8xxx_mib_work_func'
Also add a WARN_ON to 'ar8216_mib_fetch_port_stat'

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34283
2012-11-20 20:40:04 +00:00
Gabor Juhos
258b2f2dc2 generic: ar8216: remove an unblanced mutex_unlock call
Fixes the following warning:

[   94.080000]
[   94.080000] =====================================
[   94.080000] [ BUG: bad unlock balance detected! ]
[   94.080000] 3.3.8 #2 Tainted: G           O
[   94.080000] -------------------------------------
[   94.080000] swconfig/1220 is trying to release lock (&priv->mib_lock) at:
[   94.080000] [<801df8f4>] ar8216_sw_get_port_mib+0x138/0x16c
[   94.080000] but there are no more locks to release!
[   94.080000]
[   94.080000] other info that might help us debug this:
[   94.080000] 2 locks held by swconfig/1220:
[   94.080000]  #0:  (genl_mutex){+.+...}, at: [<80222430>] genl_rcv+0x14/0x34
[   94.080000]  #1:  (&dev->sw_mutex){+.+...}, at: [<801da018>] swconfig_get_dev+0x88/0xb4
[   94.080000]
[   94.080000] stack backtrace:
[   94.080000] Call Trace:
[   94.080000] [<8028dc58>] dump_stack+0x8/0x34
[   94.080000] [<800a5128>] print_unlock_inbalance_bug+0xe0/0xfc
[   94.080000] [<800a82c0>] lock_release+0x18c/0x1c8
[   94.080000] [<80292074>] __mutex_unlock_slowpath+0xd8/0x17c
[   94.080000] [<801df8f4>] ar8216_sw_get_port_mib+0x138/0x16c
[   94.080000] [<801db688>] swconfig_get_attr+0xbc/0x394
[   94.080000] [<8022261c>] genl_rcv_msg+0x1cc/0x214
[   94.080000] [<80221a18>] netlink_rcv_skb+0x6c/0xe8
[   94.080000] [<80222440>] genl_rcv+0x24/0x34
[   94.080000] [<80221370>] netlink_unicast+0x15c/0x22c
[   94.080000] [<8022175c>] netlink_sendmsg+0x240/0x2d0
[   94.080000] [<801ef544>] sock_sendmsg+0x84/0x9c
[   94.080000] [<801f0648>] __sys_sendmsg+0x1cc/0x270
[   94.080000] [<801f207c>] sys_sendmsg+0x48/0x7c
[   94.080000] [<8006ad78>] stack_done+0x20/0x40
[   94.080000]

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34282
2012-11-20 20:40:03 +00:00
Gabor Juhos
82b57b0c28 generic: ar8216: add missing locking calls
Fixes the following lockdep warning:

[   19.160000] ------------[ cut here ]------------
[   19.160000] WARNING: at drivers/net/phy/ar8216.c:322 ar8216_rmw+0x54/0xa4()
[   19.170000] Modules linked in: nf_defrag_ipv4 nf_conntrack ehci_hcd
sd_mod pppox ipt_REJECT xt_TCPMSS ipt_LOG xt_comment xt_multip
ort xt_mac xt_limit iptable_mangle iptable_filter ip_tables xt_tcpudp
x_tables ppp_async ppp_generic slhc ath9k(O) ath9k_common(O) at
h9k_hw(O) ath(O) mac80211(O) usbcore usb_common scsi_mod nls_base crc7
crc_itu_t crc_ccitt cfg80211(O) compat(O) arc4 aes_generic cry
pto_blkcipher cryptomgr aead crypto_hash crypto_algapi ledtrig_timer
ledtrig_default_on leds_gpio gpio_button_hotplug(O)
[   19.210000] Call Trace:
[   19.220000] [<8028dc38>] dump_stack+0x8/0x34
[   19.220000] [<80072da0>] warn_slowpath_common+0x78/0xa4
[   19.230000] [<80072de4>] warn_slowpath_null+0x18/0x24
[   19.230000] [<801de820>] ar8216_rmw+0x54/0xa4
[   19.240000] [<801df460>] ar8216_mib_capture+0x70/0xd0
[   19.240000] [<801df944>] ar8xxx_mib_work_func+0x34/0x98
[   19.250000] [<80089a7c>] process_one_work+0x28c/0x460
[   19.250000] [<8008a630>] worker_thread+0x22c/0x334
[   19.260000] [<8008e544>] kthread+0x88/0x90
[   19.260000] [<80065020>] kernel_thread_helper+0x10/0x18
[   19.270000]
[   19.270000] ---[ end trace 22e9d696adfa6a08 ]---

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34281
2012-11-20 20:40:00 +00:00
Gabor Juhos
863657d040 generic: ar8216: add MIB counter support for the AR8216 switch as well
Thanks to Jonas Gorski for the reference URL.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34245
2012-11-18 16:21:00 +00:00
Gabor Juhos
98f30aac8e generic: ar8216: rename AR8216_*_STATS_* defines
The names are misleading, those are only valid from
AR8236. The AR8216 chip uses different offsets.

Thanks to Jonas Gorski for the report.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34244
2012-11-18 16:20:56 +00:00
Gabor Juhos
9abd8cd004 generic ar8216: allow to read/reset MIB counters via swconfig
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34243
2012-11-18 12:26:35 +00:00
Gabor Juhos
4b17323b51 generic: ar8216: use dynamically allocated private data in ar8216_probe
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34242
2012-11-18 12:26:34 +00:00
Gabor Juhos
ee9376d153 generic: swconfig: use led_set_brightness in LED control code
The 'led_brightness_set' function has
been renamed to 'led_set_brightness'
in recent ernels. Use the new name and
add a compatibility patch for 3.3.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 33946
2012-10-26 18:58:18 +00:00
Florian Fainelli
4afb91a12f swconfig: get rid of the NLA_PUT_* macros
Upstream kernel 3.6 has removed this usage, use the plain functions directly as
intended.

SVN-Revision: 33906
2012-10-24 13:05:04 +00:00
Gabor Juhos
0045449b1b generic: add driver for the the RTL8367R{B,-VB} switches
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 33839
2012-10-18 07:22:56 +00:00
Gabor Juhos
5dd996bc2a generic: rtl8366_smi: increase delay after switch hw reset
SVN-Revision: 33077
2012-08-10 06:32:00 +00:00
Gabor Juhos
e2782eae8e generic: rtl836x: add hw_reset field to struct rtl8366_smi
It will be used to start/stop the switch if that is
supported by the given board.

SVN-Revision: 32943
2012-08-02 09:54:21 +00:00
Gabor Juhos
614ca3cc9e generic: rtl8366_smi: use __rtl8366_smi_cleanup instead of gpio_free calls
SVN-Revision: 32942
2012-08-02 09:54:13 +00:00
Gabor Juhos
6b8392eb12 generic: ar8216: start aneg on each PHY of the AR8327
SVN-Revision: 32604
2012-07-05 08:26:39 +00:00
Gabor Juhos
b934fa2f16 generic: ar8216: allow to configure AR8327 LEDs via platform data
SVN-Revision: 32456
2012-06-19 10:44:16 +00:00
Gabor Juhos
9e02593b70 generic: ar8216: add revision specific PHY fixups for AR8327
SVN-Revision: 32000
2012-05-29 16:39:27 +00:00
Gabor Juhos
0d241e6670 generic: ar8216: replace chip_type field with chip_{ver,rev} in ar8216_priv
SVN-Revision: 31999
2012-05-29 16:39:26 +00:00
Gabor Juhos
b2fce19a70 generic: ar8216: add chip_is_ar8{216,236,316,327} helpers
SVN-Revision: 31998
2012-05-29 16:39:24 +00:00
Gabor Juhos
86dad96fd0 generic: rtl8367: rename a misnamed variable
SVN-Revision: 31917
2012-05-27 17:09:47 +00:00
Gabor Juhos
705d31203c generic: rtl8366_smi: remove duplicated spinlock initialization
SVN-Revision: 31916
2012-05-27 17:09:45 +00:00
Gabor Juhos
9217115687 generic: rtl8366_smi: rename debugfs Kconfig symbol
SVN-Revision: 31915
2012-05-27 17:09:43 +00:00
Gabor Juhos
466ef30173 generic: rtl8367: allow to use VLANs > 31
SVN-Revision: 31914
2012-05-27 17:09:41 +00:00
Felix Fietkau
0ff3c396d3 kernel: rewrite the phy packet hook, put it in the network stack to avoid having to keep non-upstream ethernet driver changes
SVN-Revision: 31637
2012-05-06 21:19:14 +00:00
Felix Fietkau
9b20187ad5 atheros: update to 3.3.4 (based on work by acoul), fix mvswitch driver for newer kernels
SVN-Revision: 31625
2012-05-06 17:08:30 +00:00
Gabor Juhos
e931ffd678 linux: rtl836x: add a generic reset_switch function
SVN-Revision: 31536
2012-04-29 18:29:31 +00:00
Gabor Juhos
1d9400263f linux: rtl836x: rename rtl836*_hw_init to rtl836*_setup
SVN-Revision: 31535
2012-04-29 18:29:29 +00:00
Gabor Juhos
badd7a3cf2 linux: rtl836x: add a reset_chip callback to rtl8366_smi_ops
SVN-Revision: 31534
2012-04-29 18:29:26 +00:00
Felix Fietkau
dcd185c2f8 ar8216: enable forwarding of multicast frames to the cpu port on ar8327 (thx, SeG)
SVN-Revision: 31441
2012-04-22 19:19:49 +00:00
John Crispin
f35b9a9a4c fixes breakage introduced in 776722ce36ac95877efb7fd771dde2f6ffc96433
SVN-Revision: 31054
2012-03-22 13:07:34 +00:00
Gabor Juhos
faf82f3e10 generic: ar8216: add support for the AR8327 chip
SVN-Revision: 31011
2012-03-18 22:06:55 +00:00
Gabor Juhos
fa7a83df4b generic: ar8216: allow to use more ports
SVN-Revision: 31010
2012-03-18 22:06:51 +00:00
Gabor Juhos
2ddbcb98ee generic: ar8216: reorder chip specific functions
SVN-Revision: 31009
2012-03-18 22:06:48 +00:00
Gabor Juhos
552cffd97a generic: ar8216: reorder switch_dev specific functions
SVN-Revision: 31008
2012-03-18 22:06:45 +00:00
Gabor Juhos
71e356029e generic: ar8216: use ar8216_sw_ prefix for switchdev related functions
SVN-Revision: 31007
2012-03-18 22:06:42 +00:00
Gabor Juhos
9a01936724 generic: ar8216: use switch_dev->ports in for loops
SVN-Revision: 31006
2012-03-18 22:06:40 +00:00
Gabor Juhos
2ce9e4753c generic: ar8216: add read_port_status field to ar8xxx_chip
SVN-Revision: 31005
2012-03-18 22:06:39 +00:00
Gabor Juhos
01cad79e03 generic: ar8216: add init_globals field to ar8xxx_chip
SVN-Revision: 31004
2012-03-18 22:06:36 +00:00