Commit Graph

663 Commits

Author SHA1 Message Date
Rafał Miłecki
5c809ecfe7 b53: Allow using all 8 ports on BCM53011
On two tested devices: Netgear R6250 (BCM53011 rev 2) and Luxul XWC-1000
(BCM53011 rev 3) it was possible to use port 7 and eth1 (instead of port
5 and eth0). It seems BCM53011 just like BCM53012 has 8 ports and
usually 3 of them are connected to the SoC.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 46104
2015-06-21 21:06:09 +00:00
Felix Fietkau
4a9d726200 ar8216: Fix problem with AR8337 MAC swap handling
AR8337 supports a configuration bit to swap MAC0 and MAC6.
Currently this is set in general if an AR8337 is detected and causes
issues with devices using an AR8334 (internally an AR8337, just
less chip pins).
And it might even cause issues with AR8337-based devices with
different board designs.

Swapping the MAC's however isn't needed for AR8337 in general.
It's just needed in case of certain board designs (affected devices
seem to be based on Atheros reference board AP135/136-010).
Therefore this configuration bit should be moved to platform data.

The patch includes the needed changes to the device initialization
code of affected devices. Hopefully I didn't miss any ..

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 45970
2015-06-14 17:43:50 +00:00
Jonas Gorski
9fbd6d0ba0 b53: fix memory out of bounds access on 64 bit targets
On device reset the sizes for the vlan and port tables were wrongly
calculated based on the pointer size instead of the struct size. This
causes buffer overruns on 64 bit targets, resulting in panics.

Fix this by dereferencing the pointers.

Reported-by: Fedor Konstantinov <blmink@mink.su>
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 45938
2015-06-10 09:21:36 +00:00
Jonas Gorski
d24d5412ff b53: widen stp state mask to 3 bits (instead of 2)
At least on my b53 chip, the mask is 3 bits wide, and because
of this some STP states are not set properly and discarded when read.

Maybe for some other chips it makes sense to have just 2 bits width,
but I don't have other versions around to test/validate.

If that's the case then maybe we could add another STP state mask.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 45937
2015-06-10 09:21:31 +00:00
Rafał Miłecki
e93c68eedd b53: Allow using all ports on BCM53012
This chipset has at least 8 usable ports, e.g. Netgear R8000 has ports
5, 7 and 8 connected to Ethernet interfaces:
vlan1ports=0 1 2 3 5 7 8*
vlan2ports=4 8u
Port 6 seems to be always disabled.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 45676
2015-05-12 13:18:53 +00:00
Rafał Miłecki
06ac2f5c74 b53: improve overriding CPU port state on BCM5301X
On BCM5301X there are two different cases to handle: CPU port 8 vs. any
other one. Support for CPU port 8 was already partially implemented but
it lacked setting some extra bit for 2G speed. It also will need to be
extended to implement "SMP dual core 3 GMAC setup". That's the reason
for handling it in separated code block.
This patch also adds overriding CPU port state for port other than 8. It
requires using recently defined GMII_PORT registers.
It was tested for regressions on BCM53011 revs 2 & 3. It was also
confirmed to fix switch on some internal Broadcom board.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 45402
2015-04-12 20:00:42 +00:00
Jonas Gorski
4e826d8303 b53: clean up code to match kernel style better
* properly enclose macro arguments in paranthesis on use
* remove trailing white space
* convert C99 // comments
* add missing blank lines after declaration
* remove braces from single statement blocks
* split lines > 80 chars (except for one)

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

SVN-Revision: 45356
2015-04-10 10:29:04 +00:00
Jonas Gorski
61885f95f0 b53: define registers available and needed on BCM5301X
They are also present on some BCM63xx switches.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 45355
2015-04-10 10:28:46 +00:00
Jonas Gorski
87568ebeac b53: reverse duplex bit meaning for IMP state override register
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 44875
2015-03-18 10:44:15 +00:00
John Crispin
9a863f803e kernel: mtdsplit: add support for FIT image
If this option is enabled, the FIT image format will be detected and
split by the mtdsplit code. Detection is based upon the FDT magic, which
will trigger the parsing and detection of the rootfs, ending-up in the
creation of the 2 new partitions.

Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>

SVN-Revision: 44792
2015-03-15 19:39:27 +00:00
Jonas Gorski
085b8e0014 b53: global config is part of the management page, not the control page
It will now actually enable the mib counters instead of enabling rx/tx for
the first switch port.

Reported-by: Daniel Gonzalez <dgcbueu@gmail.com>
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 44788
2015-03-15 14:19:28 +00:00
John Crispin
57c7bed820 swconfig: fix build with linux 4.0
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

SVN-Revision: 44617
2015-03-06 07:57:03 +00:00
Jonas Gorski
d75cd5be37 b53: fix mmap register read/writes > 32 bit
For bcm63xx integrated switches, broadcom changed the data endianess
to match the system endianess. But this only applies to within one word,
which causes 48/64 bit values to be still split into their "litte endian"
groups.

E.g. 48 bit values (with 5 being the most significant byte) aligned

0x00 ..01  or   0123
0x04 2345       45..

will become

0x00 ..10 resp. 3210
0x04 5432       54..

Likewise for 64 bit values.

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

SVN-Revision: 44568
2015-02-27 17:40:17 +00:00
Rafał Miłecki
615909819d kernel: mtdsplit_uimage: fix passed info about buf size
We obviously can't use sizeof(*buf) which is always 1.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 44424
2015-02-12 20:13:20 +00:00
Rafał Miłecki
30d6bc1026 kernel: mtdsplit_uimage: read more data to match Edimax needs
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 44415
2015-02-12 07:50:07 +00:00
Rafał Miłecki
072759ff39 kernel: mtdsplit_uimage: use separated buffer for reading data
We shouldn't read data directly into the header struct, as some devices
(e.g. Edimax) need more bytes due to some extra header.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 44414
2015-02-12 07:44:34 +00:00
Rafał Miłecki
5673e0b703 kernel: mtdsplit_uimage: add parser for Edimax devices
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 44413
2015-02-12 07:23:40 +00:00
Rafał Miłecki
1aed104c80 mtdsplit_uimage: more generic header verify function
Some devices have uImage headers after some extra headers (e.g. Edimax
devices). To support such cases our verify callback function should be
allowed to return header offset, not just a boolean value.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 44412
2015-02-12 06:57:24 +00:00
John Crispin
28353b3fc5 kernel: fix compile error inside adm6996.c
drivers/net/phy/adm6996.c:881:5: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'u32' [-Wformat=]

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 44333
2015-02-09 12:09:17 +00:00
John Crispin
31fd66f808 ar71xx: add Netgear WNR1000v2/WNR1000v2-VC support (#18633)
The board is already supported by OpenWrt. WNR1000v2/WNR1000v2-VC are
pretty much the same as WNR2000v3/WNR612v2, therefore the same
initialization code and flash layout is used.

Signed-off-by: Ștefan Rusu <saltwaterc@gmail.com>
Tested-by: Douglas Fraser <1dsfraser@gmail.com>

SVN-Revision: 44221
2015-01-30 08:06:40 +00:00
Felix Fietkau
f7ece95303 ar8216: prefix mii_xxx functions to avoid kernel namespace pollution
Prefix the exported mii_xxx32 functions with ar8xxx_
to avoid kernel namespace pollution.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44105
2015-01-24 19:42:12 +00:00
Felix Fietkau
3a313a3e11 ar8216: add swconfig attribute to display ARL table on AR8327/AR8337
Add global read-only swconfig attribute "arl_table" to display the
address resolution table.
So far the chip-specific part is implemented for AR8327/AR8337 only
as I don't have the datasheets for the other AR8XXX chips.

Successfully tested on TL-WDR4300 (AR8327rev2)
and TL-WDR4900 (AR8327rev4).

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44104
2015-01-24 19:42:06 +00:00
Felix Fietkau
6ce848f622 ar8216: decrease page switch wait time
Until a few years ago the page switch wait time was set to msleep(1)
what was changed to usleep_range(1000, 2000) later.

I can not imagine that a low-level operation like switching page
on register level takes so much time.
Most likely the value of 1ms was initially set to check whether
it fixes an issue and then remained w/o further checking whether
also a smaller value would be sufficient.

Now the wait time is set to 5us and I successfully tested this on
AR8327. IMHO 5us should be plenty of time for all supported chips.
However I couldn't test this due to missing hardware.

If other chips should need a longer wait time we can add the
wait time as a parameter to the ar8xxx_chip struct.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44103
2015-01-24 19:42:01 +00:00
Felix Fietkau
a1fba9dfbe ar8216: add link change detection for switch ports
Check for switch port link changes and
- flush ATU in case of a change
- report link change via syslog

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44102
2015-01-24 19:41:55 +00:00
Felix Fietkau
74146c62c0 ar8216: fix ATU flushing
The functionality to flush the address translation table contains two bugs
which luckily compensate each other.
1. Just setting the operation is not sufficient to perform the flushing.
   The "active" bit needs to be set to actually trigger an action.
   For the vtu operations this is implemented correctly.
2. ar8xxx_phy_read_status is called every 2s by the phy state machine
   to check for link changes. This would have caused an ATU flush
   every 2s.

Fix the chip-specific ATU flush functions and remove the ATU flush call
from ar8xxx_phy_read_status.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44101
2015-01-24 19:41:51 +00:00
Felix Fietkau
6dfea16ab9 ar8216: display flow control info in swconfig get_link in case of autonegatiation too
The swconfig get_link attribute (at least) on AR8327/AR8337 doesn't
consider the autonegotiated flow control.
AR8327/AR8337 provide the info about autonegotiated rx/tx flow control
in bits 10 and 11 of the port status register.
Use these values to display info about autonegotiated rx/tx flow
control as part of the get_link attribute.

Successfully tested on TL-WDR4900 (AR8327 rev.4) and
TL-WDR4300 (AR8327 rev.2).

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44023
2015-01-18 00:54:06 +00:00
Felix Fietkau
53c0c6054f ar8216: add 802.3az EEE info to swconfig get_link attribute
AR8327/AR8337 allow to read the result of EEE autonegotiation.
If EEE is autonegotiated between the link partners, display
this as part of the swconfig get_link attribute.

eee100:  100MBit EEE supported by both link partners
eee1000: 1GBit EEE supported by both link partners

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44022
2015-01-18 00:53:59 +00:00
Felix Fietkau
bdc0750191 ar8216: introduce enable_eee swconfig attribute to control 802.3az EEE per port
Users reported network issues with AR8327 which turned out to be caused
by EEE not working correctly with certain link partners (ticket 14597).
The workaround was to disable EEE on all ports (changeset 41577).

The issue was with certain link partners only, therefore this patch
allows to control usage of EEE per port via swconfig.
Still the default is to initially disable EEE on all ports.

Successfully tested on a TL-WDR4900 (AR8327 rev.4)

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44021
2015-01-18 00:53:53 +00:00
John Crispin
64ccdb98fb ar8216: introduce ar8xxx_reg_clear complementing ar8xxx_reg_set
Introduce ar8xxx_reg_clear complementing ar8xxx_reg_set.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44004
2015-01-17 14:24:56 +00:00
John Crispin
0fb39e6f4b ar8216: replace ar8xxx_rmw with ar8xxx_reg_set where appropriate
Replace ar8xxx_rmw with ar8xxx_reg_set where appropriate.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44003
2015-01-17 14:24:47 +00:00
John Crispin
1cb2596f19 ar8216: define all switch_addr structs as const
Define all switch_addr structs as const.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 44002
2015-01-17 14:24:40 +00:00
Luka Perkov
9db3df9d6b mvsw61xx: track and set per-VLAN port state in STU
Since the driver doesn't know anything about (M)STP
we just hard-set the ports to be enabled if they are
part of the VLAN.

Signed-off-by: Claudio Leite <leitec@staticky.com>

SVN-Revision: 43938
2015-01-11 17:20:16 +00:00
Luka Perkov
0b2cbeca7a mvsw61xx: clean up and expand register definitions
- eliminate MV_CPUPORT; not necessary since we define
  the CPU port(s) via Device Tree

- add STU and expand VTU operations

- update register names to match those of 88E61xx rather than
  mvswitch's 88E6060

- use more consistent formatting

Signed-off-by: Claudio Leite <leitec@staticky.com>

SVN-Revision: 43937
2015-01-11 17:20:06 +00:00
Luka Perkov
1e39f3aef8 mvsw61xx: rework chip recognition
Recognizes 88E6171/6172/6176 at the moment.

Signed-off-by: Claudio Leite <leitec@staticky.com>

SVN-Revision: 43936
2015-01-11 17:20:03 +00:00
Luka Perkov
a1872182bb mvsw6171: rename to 'mvsw61xx'
In preparation for properly supporting switches
beyond the 88E6171.

Signed-off-by: Claudio Leite <leitec@staticky.com>

SVN-Revision: 43935
2015-01-11 17:19:58 +00:00
Felix Fietkau
1cbf0fbcb4 ar8216: factor out AR8327/AR8337-specific driver code into ar8327.c
Move all AR8327/AR8337-specific driver code into a separate source file
ar8327.c and adjust patches so that ar8327.c is compiled if
CONFIG_AR8216_PHY is set.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43845
2015-01-05 13:03:07 +00:00
Felix Fietkau
cc02d4c72d ar8216: move definitions from ar8216.c to ar8216.h and introduce ar8327.h
Move several structure definitions and #defines from ar8216.c
to ar8216.h and move AR8327/AR8337 header stuff into a new
header file ar8327.h.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43844
2015-01-05 13:02:57 +00:00
Felix Fietkau
baa3a38ac6 kernel: add mtd split support for trx images
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43809
2015-01-02 21:53:11 +00:00
Felix Fietkau
cc5f89c66a kernel: add a mtdsplit implementation for tp-link firmware headers
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43806
2015-01-02 21:52:44 +00:00
Felix Fietkau
4153c0adff kernel: move mtdsplit files to drivers/mtd/mtdsplit/ to simplify maintenance, unify patches across kernel versions
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43805
2015-01-02 21:52:35 +00:00
Felix Fietkau
5506420980 kernel: remove openwrt micrel.c (replaced by upstream driver)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43762
2014-12-22 14:37:07 +00:00
Luka Perkov
0847247129 mvsw6171: note support for 88E6172 switches
The '6171 and '6172 are similar enough to work
without any changes to the code.

Signed-off-by: Claudio Leite <leitec@staticky.com>

SVN-Revision: 43753
2014-12-19 22:02:59 +00:00
Felix Fietkau
2f9b042d69 ar8216: Inline function ar8xxx_create_mii
Inline function ar8xxx_create_mii.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43743
2014-12-18 11:28:47 +00:00
Felix Fietkau
2289c7a010 ar8216: Remove read/write/rmw member functions from ar8xxx_priv
Remove read/write/rmw member functions from ar8xxx_priv

There seems to be no real benefit of the ar8xxx_priv member functions
read/write/rmw as one implementation exists for each of them only.
Especially ar8xxx_mii_rmw is assigned to priv->rmw first and then
mapped to ar8xxx_rmw.
Rename the ar8xxx_mii_.. functions to ar8xxx_.. and use them directly.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43742
2014-12-18 11:28:39 +00:00
Felix Fietkau
45a494b808 ar8216: Create helpers mii_read32 / mii_write32 for 32 bit MII ops
Create helpers mii_read32 / mii_write32 for 32 bit MII ops.
Rename r3 variable to page in ar8xxx_mii_write to make it consistent
with the other ar8xxx_mii_xxxx functions.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43741
2014-12-18 11:28:34 +00:00
Felix Fietkau
0e7f844c66 ar8216: Factor out chip-specific parameters from ar8xxx_probe_switch
Factor out chip-specific parameters from ar8xxx_probe_switch.
Move the ar8xxx_chip definitions after the swops definitions.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43740
2014-12-18 11:28:28 +00:00
Felix Fietkau
054767cebc ar8216: remove unused function parameter in ar8327_led_register
Remove unused function parameter in ar8327_led_register.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43739
2014-12-18 11:28:20 +00:00
Felix Fietkau
5b16fd1bf8 ar8216: enable cpu port to receive arp and broadcast frames for ar8236
Signed-off-by: Weijie Gao <hackpascal@gmail.com>

SVN-Revision: 43668
2014-12-12 16:23:29 +00:00
John Crispin
9b5f583906 kernel: add driver for Marvell 88E6171 switch
This is a swconfig driver for the Marvell 88E6171 switch,
which is a 7-port GigE switch with two CPU ports and 64
802.1q VLANs.

Signed-off-by: Claudio Leite <leitec@staticky.com>

SVN-Revision: 43486
2014-12-01 21:30:35 +00:00
John Crispin
ecd27db757 ar8216: factor out reg_port_stats_base parameters to ar8xxx_chip
Factor out reg_port_stats_base parameters to ar8xxx_chip.
Remove related chip_is_... checks.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43471
2014-12-01 16:15:08 +00:00
John Crispin
ae15531bd2 ar8216: factor out mii_lo_first to ar8xxx_chip
Factor out mii_lo_first to ar8xxx_chip.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43470
2014-12-01 16:15:02 +00:00
John Crispin
ea9324f3d3 ar8216: factor out chip-specific data structures from ar8xxx_priv
Factor out chip-specific data structures from ar8xxx_priv.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43469
2014-12-01 16:14:54 +00:00
John Crispin
a3b651635f ar8216: factor out set_mirror_regs to ar8xxx_chip
Factor out set_mirror_regs to ar8xxx_chip.
Remove related chip_is_... checks.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43468
2014-12-01 16:14:43 +00:00
John Crispin
b82a08f5b6 ar8216: factor out mib_func to ar8xxx_chip
Factor out mib_func to ar8xxx_chip. Remove related chip_is_... checks.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43467
2014-12-01 16:14:39 +00:00
John Crispin
af003867b1 ar8216: factor out info whether switch should be configured at probe stage to ar8xxx_chip
Factor out info whether switch should be configured at probe stage
to ar8xxx_chip. Remove related chip_is_... checks.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43466
2014-12-01 16:14:32 +00:00
Felix Fietkau
14db2826ad ar8216: suppress PHY reset for linux 3.14
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43410
2014-11-27 18:26:06 +00:00
Felix Fietkau
35902404fc ar8216: Fix issue with autoneg being disabled under 3.14, revert 43332
Patch reverts 43332 which seems to cause issues with VLAN functionality.
Add a specific check to check whether ANEG is still enabled and re-enable
it if necessary. Disable generic phy soft reset for kernel >=3.16.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43356
2014-11-24 09:33:48 +00:00
Felix Fietkau
c9340fd8a9 ar8216: Use generic hw_init from ar8236 for ar8216 too
We should make sure that also for ar8216 hw gets initialized.
For ar8216 hw_init is a dummy currently. The hw_init used for ar8236
should be generic enough to be usable with ar8216 too.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43334
2014-11-20 15:19:15 +00:00
Felix Fietkau
0178b516a2 ar8216: simplify PHY fixup/init
Move the PHY fixup call to the PHY init loop.
Use ar8xxx_has_gige in the PHY init instead of passing the gigE
capability via function parameter.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43333
2014-11-20 15:19:04 +00:00
Felix Fietkau
43e3e88379 ar8216: use genphy_config_aneg also for PHY 0
Kernel 3.14 introduced a switch reset in phy_init_hw in drivers/net/phy
causing BMCR_ANENABLE to get cleared.

Due to the fact that ar8xxx_phy_config_aneg does nothing for
PHY 0 autonegatiation support remains disabled.
This can cause ports to operate at 10MBit/half-duplex only.

Fix this by calling genphy_config_aneg for PHY 0 too as
genphy_config_aneg sets BMCR_ANENABLE if it's not yet set.
Fixes: ticket 17800

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43332
2014-11-19 20:18:01 +00:00
Felix Fietkau
898712f43f ar8216: factor out PHY init code into a generic function
PHY init code in the switch-specific hw_init functions is mainly
identical. Factor it out into a generic ar8xxx_phy_init function.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43331
2014-11-19 20:17:52 +00:00
Felix Fietkau
20baeb5595 ar8216: introduce fixup_phys callback in ar8xxx_chip
Move phy fixup code from the chip-specific hw_init functions into a
fixup_phys callback.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43330
2014-11-19 20:17:43 +00:00
Felix Fietkau
37fefea79b ar8216: after a switch reset poll until BCMR_RESET is cleared
Currently there is a fixed 1000ms wait time after the switch was reset.
Most if not all switches need much less time to perform a reset.
Therefore replace the fixed wait time with polling for BMCR_RESET to
be cleared.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43329
2014-11-19 20:17:37 +00:00
Felix Fietkau
6dcdc2bb05 ar8216: introduce global constant for number of PHYs
All supported switches have 5 PHYs. Currently partially 5 is hardcoded
and partially switch-specific constants exist.
Replace them with a global constant.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43328
2014-11-19 20:17:30 +00:00
John Crispin
76a54a424c ar8216: fix "unused variable" compiler warning
Most likely a copy & paste error when deriving ar8327_sw_set_ports
from ar8xxx_sw_set_ports.
Remove unused variable.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>

SVN-Revision: 43273
2014-11-14 17:06:09 +00:00
John Crispin
2c72ffc154 ar71xx: add support for Netgear WNR2000v4
Signed-off-by: Michaël Burtin <mburtin@gmail.com>

SVN-Revision: 43173
2014-11-03 20:20:56 +00:00
John Crispin
62107ff367 swconfig: last vs tail
sorry .....

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 43107
2014-10-29 19:24:16 +00:00
John Crispin
ab5d70e046 swconfig: "swconfig list" shows devices in reverse order
Boards that have more than one swconfig enabled switch will show the devices in
reverse order when call swconfig list. Fix this by using list_add_tail().

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 43106
2014-10-29 18:51:06 +00:00
Felix Fietkau
156b296b20 ar8216: set the pvid based on runtime state instead of port number to fix learning with enable_vlan = 0
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42753
2014-10-02 20:00:41 +00:00
Felix Fietkau
38a8f5ae63 ar71xx: ar8216: tagged+untagged on ar8327 (#12181)
This allows tagged and untagged traffic together on the same port on ar8327
switch devices.

I looked at the first attempt to do this in r40777 (ar71xx: Fix tagged+untagged
operation on AR8327N (#12181)). I also set the vlan and port egress policies
like that change. But I change vlan_tagged in an less intrusive way. The
tagged/untagged decision is now based on the following rules:
- if vid != pvid then traffic is always tagged
- if vid == pvid then vlan_tagged stores if the traffic should be tagged

Tested on TP-Link WDR-3600 (ar8327N).

Signed-off-by: Valentin Spreckels <Valentin.Spreckels@Informatik.Uni-Oldenburg.DE>

SVN-Revision: 42653
2014-09-23 10:19:58 +00:00
Felix Fietkau
1c675ee9be ar71xx: ar8216: move policies, pvid to setup_port
This moves ingress, egress policy and pvid decisions to setup_port methods.
They arenow device type dependent.

This allows policy changes on only one device type which is needed to allow
tagged + untagged operation on ar8327.

Tested on TP-LINK WDR-3600 (ar8327N).

Signed-off-by: Valentin Spreckels <Valentin.Spreckels@Informatik.Uni-Oldenburg.DE>

SVN-Revision: 42652
2014-09-23 10:18:38 +00:00
John Crispin
c9813699b6 kernel: add own Kconfig for OpenWrt mtdsplit drivers
There are pretty many OpenWrt patches against mtd subsystem resulting
in a bit of mess and growing maintenance cost.
My idea is to use an extra "mtdsplit" directory with OpenWrt specific
files (including Kconfig).
This is the first step to achieve this. This patch adds a "mtdsplit"
directory with Kconfig and replaces 4 patches with a single one.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 42287
2014-08-25 16:30:44 +00:00
John Crispin
de5fd0a189 ar8216: add new phyid 0x004dd043 (ar8326)
Used in ubiquity nanostation xw boards

SVN-Revision: 41635
2014-07-14 07:38:39 +00:00
Felix Fietkau
a17a58e310 ar8216: disable EEE by default on AR8327 to fix stability issues (#14597)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 41577
2014-07-10 21:11:02 +00:00
Hauke Mehrtens
ed0dc1c97e b53: hardcode reset GPIO for Linksys WRT300N 1.1
According to the thread https://forum.openwrt.org/viewtopic.php?id=48281
b53 uses GPIO 7:
[    4.470000] b53_common: [DBG] b53_switch_reset_gpio using 7
and causes device to self-reboot. GPIO 8 was found in CFE boot log:
"Reset switch via GPIO 8 ..."

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 41526
2014-07-06 11:40:51 +00:00
Hauke Mehrtens
286ff7e322 adm6996: the GPIO interface for the adm6996l does not support switch statistics.
This patch deactivates the statistics, adds a missing lock
initialization and fixes a waring.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 41511
2014-07-05 12:13:56 +00:00
Imre Kaloz
e1de4e27c1 coding style cleanups, drop old kernel support
Signed-off-by: Imre Kaloz <kaloz@openwrt.org>

SVN-Revision: 41293
2014-06-21 10:00:07 +00:00
Jo-Philipp Wich
f6e7074924 Revert "ar71xx: Fix tagged+untagged operation on AR8327N (#12181)"
Revert the tagged + untagged rework for now due to regressions in
vlan setup on certain AR83xx switches.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 40842
2014-05-24 17:04:12 +00:00
Jo-Philipp Wich
443b2dfe3c ar71xx: Fix tagged+untagged operation on AR8327N (#12181)
Replace the global "vlan_tagged" variable with an array storing the
tagging state per vlan.

The code was taken from #12181, tested and cleaned up by Saverio Proto
with additional bug fixes supplied by Álvaro Fernández.

Tested-by: Jo-Philipp Wich <jow@openwrt.org>
Signed-off-by: Saverio Proto <zioproto@gmail.com>
Signed-off-by: Álvaro Fernández <noltari@gmail.com>

SVN-Revision: 40777
2014-05-19 15:48:18 +00:00
Hauke Mehrtens
100e795bcc kernel: fix warning in swconfig.c with kernel 3.14
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 40733
2014-05-08 21:52:19 +00:00
Hauke Mehrtens
c09007c1af kernel/generic: modify mtd related patches for 3.14
Function register_mtd_parser always returned 0 (at least since v3.3)
before being changed to return void in v3.14-rc1~65^2~93 (mtd: make
register_mtd_parser return void), so it's not needed to check the
return value of this function. Also add __init flag to caller.

This fix compile errors in 3.14 kernel like:
drivers/mtd/mtdsplit_seama.c: In function 'mtdsplit_seama_init':
drivers/mtd/mtdsplit_seama.c:99:2: error: void value not ignored as it ought to be
  return register_mtd_parser(&mtdsplit_seama_parser);
  ^

Signed-off-by: Zhao, Gang <gamerh2o@gmail.com>

SVN-Revision: 40731
2014-05-08 21:51:36 +00:00
John Crispin
1b96cf30a9 linux/generic: add MIB counters and port status to ADM6996 switch
This patch adds port status information and MIB counters to the ADM6996
switch driver.

The driver supports also the older ADM6996L-variant, but I'm not able to
test this patch on that chip. According to the datasheet the same
registers exist there as well, so I think it should work, but any
feedback is appreciated.

Signed-off-by: Matti Laakso <malaakso at elisanet.fi>

SVN-Revision: 40542
2014-04-22 08:08:02 +00:00
John Crispin
3972b47458 revert: kernel: rtl8306: fix max pvid & remove port isolation
apparently this one was nt a good idea to merge

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 40330
2014-03-30 10:04:55 +00:00
John Crispin
deba38f2a7 kernel: rtl8306: fix vlan support on lantiq ar9 p2601hnfx
If the CPU port is not forced up, the link, at least on this board, is lost after
changes are applied. This makes sure that the link is restored. Regression tests
should confirm it doesn't break other boards.

Signed-off-by: Antonios Vamporakis <ant@area128.com>

SVN-Revision: 40305
2014-03-30 09:15:16 +00:00
John Crispin
72cdb34ae8 kernel: rtl8306: fix max pvid & remove port isolation
- hide port pvid - vlan index relation
- switch initialises with vlans disabled so port isolation is not used
- remove special treatment of cpu port

Signed-off-by: Antonios Vamporakis <ant@area128.com>

SVN-Revision: 40304
2014-03-30 09:15:11 +00:00
John Crispin
6a72dc4082 kernel: rtl8306: cosmetic changes for swconfig
Changes to:
- show the correct "enable_vlan" value under "Global attributes"
- show tagged ports under "Vlan: ports"
- use get_port_link method to report link status

Signed-off-by: Antonios Vamporakis <ant@area128.com>

SVN-Revision: 40303
2014-03-30 09:15:07 +00:00
Jonas Gorski
c1f397e1e1 b53: Make b53_switch_init static
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Patchwork: http://patchwork.openwrt.org/patch/4869/
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 39683
2014-02-22 11:16:58 +00:00
Jonas Gorski
9eb60826f2 b53: Add BCM53128 switch support
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Patchwork: http://patchwork.openwrt.org/patch/4867/
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 39682
2014-02-22 11:16:56 +00:00
Luka Perkov
cde033f918 kernel: rtl8306: update reset function
Signed-off-by: Antonios Vamporakis <ant@area128.com>

SVN-Revision: 39589
2014-02-15 22:54:35 +00:00
Gabor Juhos
7c137c187f ar71xx: swconfig: use the local helper to set LED brightness on link down
Use the 'swconfig_trig_set_brightness' function to set
the brightness value of the LED when the link goes down.
This ensures that the last brighness value is saved into
a local variable which is used to track the actual LED
status.

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

SVN-Revision: 39402
2014-01-26 16:46:21 +00:00
Gabor Juhos
89d60314e7 kernel/3.1x: add split code for LZMA compressed kernel based firmwares
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 39387
2014-01-24 17:14:59 +00:00
Gabor Juhos
e89476e0a8 Revert "kernel: create firmware partition from MyLoader partition parser"
This reverts r38197.

The automatically created firmware partition includes
the partition_table partition. Apart from the partition
table, this partition contains sensitive data on some
Compex devices which data can be destroyed when the
firmware partition gets modified. Revert the change to
prevent that.

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

SVN-Revision: 39382
2014-01-24 08:48:10 +00:00
Zoltan Herpai
f3c07b8621 modules: swconfig.c: update the error path on 3.13, and behave nicely with return
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>

SVN-Revision: 39360
2014-01-21 14:43:50 +00:00
Zoltan Herpai
4d26250db1 modules: update swconfig.c to compile on 3.13 (compile-tested)
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>

SVN-Revision: 39359
2014-01-21 14:24:45 +00:00
Hauke Mehrtens
1f4e6394ed b53: use drvdata to store driver data
we should not abuse the platform_data pointer.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 39354
2014-01-20 20:01:22 +00:00
Hauke Mehrtens
de266cd1c1 b53: make b53_switch_reset_gpio() static
SVN-Revision: 39353
2014-01-20 19:07:18 +00:00
Gabor Juhos
0056ac55af generic: ar8216: add custom LED support for the AR8327 switch
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 39338
2014-01-20 10:22:56 +00:00
Gabor Juhos
15d41de1eb generic: ar8216: allow to use chip specific cleanup callback
It will be used for AR8327.

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

SVN-Revision: 39337
2014-01-20 10:22:55 +00:00
Gabor Juhos
c7652f1f9e generic: ar8216: add optimized rmw operation
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 39336
2014-01-20 10:22:54 +00:00
Gabor Juhos
aeaff0090c generic: ar8216: Enable jumbo frames on AR8327 by default
This patch enables jumbo frames on AR8327 switch by default.
I have tested it on TP-Link TL-WDR3600.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 39076
2013-12-15 22:18:04 +00:00
Gabor Juhos
c378d5e953 generic: ar8216: add AR8337N switch support
This patch is needed to use the switch inside the Sitecom WLR-8100;
it was unusable and detected as Generic-Phy before.

since ar8337 is behaving like ar8327
generally do the same thing
see: https://forum.openwrt.org/viewtopic.php?pid=214218#p214218
forward-ported to trunk

Signed-off-by: Dirk Neukirchen <dirkneukirchen@web.de>
Patchwork: http://patchwork.openwrt.org/patch/4469/
[juhosg: merge chip_is_ar83[23]7 statements in ar8xxx_phy_config_init]
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38952
2013-11-29 20:18:48 +00:00
Gabor Juhos
74a353f64f generic: ar8216: remove trailing whitespaces
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38951
2013-11-29 20:18:46 +00:00
Hauke Mehrtens
0cdab0237d kernel: b53: fix untagged shift for BCM5365
The BCM5365 needs a shift of 7 bits and not 6 bits like the BCM5325 for
the untagged ports.

Thank you Russell for reporting this and testing the patch.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 38793
2013-11-13 18:04:39 +00:00
Hauke Mehrtens
72b47e69c4 kernel: b53: add initial support for switches in BCM5301X
This is also known as BCM470{7,8,9}.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 38712
2013-11-10 23:29:59 +00:00
Hauke Mehrtens
7a82667372 kernel: adm6996: add support for ADM6996L and GPIO interface
This patch makes it possible to use adm6996.c on first generation
BCM47XX devices with ADM switches.
The GPIO bit banging protocol implementation was copied from the old
switch driver and adapted to this driver and changed to the mainline
kernel GPIO interface.
The ADM6996L is different from the ADM6996M which is supported, for
both specs are available in the Internet.

This was tested on a WRT54GS version 1.0, thank you Dirk Neukirchen for
the device.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 38698
2013-11-09 19:27:27 +00:00
Gabor Juhos
2f27f5d404 generic: mtdsplit_uimage: add uImage magic for the WRN2200 board
Should fix boot failure on the WNR2200 boards.
Compile tested only.

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

SVN-Revision: 38594
2013-10-30 06:51:01 +00:00
Florian Fainelli
857a7a0124 kernel: make swconfig checkpath compliant
Fix the warnings and errors reported by checkpatch on swconfig.c

Signed-off-by: Florian Fainelli <florian@openwrt.org>

SVN-Revision: 38523
2013-10-24 00:25:52 +00:00
Hauke Mehrtens
53a2c19c69 kernel: b53: add switch name into printk when it fails.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 38307
2013-10-06 22:35:28 +00:00
Hauke Mehrtens
c75a970337 kernel: b53: add Register Access Bridge Registers (SRAB) interface
The SRAB interface is used on BCM4707 and BCM5301X SoCs.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 38198
2013-09-25 21:44:28 +00:00
Gabor Juhos
fc79d210e0 kernel: create firmware partition from MyLoader partition parser
This is in preparation for sysupgrade support for Compex devices.

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

SVN-Revision: 38197
2013-09-25 20:13:12 +00:00
Gabor Juhos
2e62ff9320 kernel/3.10: add partition parser for Seama firmwares
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38114
2013-09-21 17:56:18 +00:00
Gabor Juhos
2f2ed5c5c1 kernel/3.10: add partition parser for uImage firmwares
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38113
2013-09-21 17:56:09 +00:00
Gabor Juhos
98db90576c kernel/3.10: add default partition name defines to mtdsplit.h
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38112
2013-09-21 17:56:01 +00:00
Gabor Juhos
61c39f923b kernel/3.10: add more helpers to the mtdsplit code
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38111
2013-09-21 17:55:54 +00:00
Gabor Juhos
daec7ad768 kernel/3.10: add separate rootfs partition parser
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38110
2013-09-21 17:55:49 +00:00
Gabor Juhos
d89bea92b3 kernel/3.10: move squashfs check from rootfs split code into a separate file
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38109
2013-09-21 17:55:44 +00:00
Hauke Mehrtens
f5989e7f59 kernel: b53: detect revision of BCM5325
The revision is stored in a different register than it is in other
Broadcom switches.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 37995
2013-09-15 13:30:49 +00:00
Hauke Mehrtens
49d7c57fd1 kernel: b53: fix vlan write for BCM5325 revison 3+
These switches are integrated in some recent BCM53XX and BCM47XX SoCs
like the BCM53572.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 37994
2013-09-15 13:29:14 +00:00
Hauke Mehrtens
cde1d53625 kernel: b53: use hard coded switch reset gpio on some boards.
The Linksys wrt310n v1 does not have a robo_reset config variable in
nvram, but GPIO Pin 8 is the pin needed for resetting the external
switch, Linksys hard coded it into their source code.

Thank you Devastator for testing.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 37988
2013-09-14 16:17:36 +00:00
Hauke Mehrtens
2da56b4ebc kernel: b53: add soft reset for BCM539x switches
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 37987
2013-09-14 16:14:02 +00:00
Jonas Gorski
4b0655500a kernel: b53: support phy ids for BCM5365
BCM5365 (and probably other older variants) use a different phy id, so
the phy driver never attached for them.
Fix this by adding the appropriate phy id to the fixup and the phy
driver.

Reported-by: Russell Senior <russell@personaltelco.net>
Signed-off-by: Jonas Gorski <jogo@openwrt.org>

SVN-Revision: 37906
2013-09-05 20:30:34 +00:00
Hauke Mehrtens
4eced13a37 kernel: b53: allow access the MIB counters on BCM5365
b53_no_ops has no elements and b53_port_ops has one element, this makes
the code access some random memory when trying to access the mib
counter functions.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 37895
2013-09-04 16:15:10 +00:00
Gabor Juhos
0950922925 generic: remove linux version checks from myloader.c
The myloader partition parser code uses ifdef wrappers
to make the code usable on kernels below version 3.2.
All targets are using kernel 3.3 at least so the wraper
is not needed. Remove that.

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

SVN-Revision: 37880
2013-09-02 16:33:13 +00:00
Felix Fietkau
e5fd991c6c rtl8367: add support for configuring the VLAN FID
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 37760
2013-08-12 17:25:25 +00:00
Hauke Mehrtens
8966b86067 kernel: b53: use devm_gpio_request_one() to request gpio
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 37648
2013-08-01 20:46:56 +00:00
Hauke Mehrtens
e1127aca07 kernel: b53: add support for GPIO reset
This is needed for some switches used on bcm47xx SoCs like the one on the Asus RT-N66U.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 37645
2013-08-01 19:05:34 +00:00
John Crispin
4176b6fdd3 strict_strtoul is obsolete, use kstrtoul instead
based on http://patchwork.openwrt.org/patch/3827/

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37562
2013-07-27 09:23:18 +00:00
Lars-Peter Clausen
8fc44d1f5f kernel: Remove gpio-pwm patches
There is no platform using the gpio-pwm driver, yet these patches break the
generic PWM framework that is in upstream. So just remove them.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

SVN-Revision: 37490
2013-07-21 11:43:16 +00:00
Jonas Gorski
29954b9ffc kernel: remove gpio_buttons
It hasn't been buildable for a long time, and there are no users of it
anymore left as all of them have been switched to the upstream accepted
version.

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

SVN-Revision: 37436
2013-07-19 13:20:41 +00:00
Hauke Mehrtens
f8d55e7541 brcm47xx: use b53 phy driver for the switch in kernel 3.10
This makes it possible to use swconfig to controll the switch.

This was tested with devices using b43 and bgmac.
This was not tested on devices using tg3.
This does not support the adm switch used in some very old devices.

SVN-Revision: 37304
2013-07-14 14:11:17 +00:00
Gabor Juhos
d187e3c32e generic: add port mirroring/monitoring capability to rtl8366rb switch
This patch adds swlib attributes to the RTL8366RB switch/PHY found in the
TL-WR1043ND router that allow to mirror ethernet packets to a monitor port.

Signed-off-by: Colin Leitner <colin.leitner@googlemail.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36847
2013-06-04 13:25:52 +00:00
Gabor Juhos
a1f91282b4 generic: ar8216: allow to specify SGMII config via platform data
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36798
2013-05-30 17:38:26 +00:00
Gabor Juhos
c170d3c3e4 generic: ar8216: add get_port_link callback
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36797
2013-05-30 17:38:22 +00:00
Gabor Juhos
8e56b1e742 generic: ar8216: show chip revision in the kernel log
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36791
2013-05-30 16:25:14 +00:00
Luka Perkov
0998065a53 generic: ar8216: add port mirroring
Tested on Buffalo WZR-600DHP with ar8316 switch. Commands used to mirror both
RX and TX traffic from LAN port 1 to LAN port 4:

$ swconfig dev switch0 set enable_mirror_rx 1
$ swconfig dev switch0 set enable_mirror_tx 1
$ swconfig dev switch0 set mirror_monitor_port 4
$ swconfig dev switch0 set mirror_source_port 1

Signed-off-by: Colin Leitner <colin.leitner@googlemail.com>
Tested-by: Luka Perkov <luka@openwrt.org>

SVN-Revision: 36713
2013-05-24 13:10:22 +00:00
Felix Fietkau
2c5a5d8736 kernel: add missing PHY ID for an AR8327 switch variant
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 36630
2013-05-13 19:13:27 +00:00
Hauke Mehrtens
0b161c6f9e kernel: b53: use correct oops for bcm5365 switch
SVN-Revision: 36589
2013-05-09 20:01:58 +00:00
John Crispin
4664e21293 generic: fix rtl8366_smi compile warning
drivers/net/phy/rtl8366_smi.c: In function 'rtl8366_sw_set_vlan_ports':
drivers/net/phy/rtl8366_smi.c:1125:6: warning: 'pvid' may be used uninitialized in this function [-Wuninitialized]

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36442
2013-04-25 19:03:29 +00:00
John Crispin
10f432ba9d fix rtl8366s OF binding
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36323
2013-04-12 18:56:05 +00:00
John Crispin
fb47fd0d6b unbreak portmapping - typo fix
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36293
2013-04-09 14:39:01 +00:00
John Crispin
fff58a5801 allow loading port maps from OF
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36283
2013-04-09 14:19:09 +00:00
Gabor Juhos
747b795b56 generic: rtl8367: add compatible string with vendor prefix
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36230
2013-04-06 17:19:31 +00:00
Gabor Juhos
f5d8d80ca9 generic: rtl8367b: fix rtl8367b_extif_init_of
* disable external interface if its property is not present
* show an error message if the extif property is not valid
* use proper error values intead of -1
* fix memory leak
* wrap long lines

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

SVN-Revision: 36229
2013-04-06 17:03:09 +00:00
Gabor Juhos
38bd9b4337 generic: rtl8367: allow to load extif config from OF
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36220
2013-04-06 12:37:36 +00:00
Gabor Juhos
585d19d168 generic: rtl8367: fix a typo in MODULE_DEVICE_TABLE macro
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36219
2013-04-06 12:37:34 +00:00
Gabor Juhos
68c931c637 generic: rtl8367: add vendor prefix to the compatible string
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36218
2013-04-06 12:37:32 +00:00
John Crispin
1105bd2897 add OF support to rtl8367b driver
Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 36159
2013-04-03 09:58:33 +00:00
Gabor Juhos
72253b9073 generic: ar8216: start AR8327 switch from the probe routine
The AR8327 switch gets its configuration from platform
data or from the device-tree. This allows to start it
from the probe routine. Doing so makes it usable with
ethernet drivers which only connects to the PHY device
when the ethernet interface is opened.

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

SVN-Revision: 36050
2013-03-15 16:06:28 +00:00
Gabor Juhos
5503686f69 generic: ar8216: add ar8xxx_start helper
Move switch starting code into a separate function.
This makes it usable from other places.

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

SVN-Revision: 36049
2013-03-15 16:06:25 +00:00
Gabor Juhos
7ba6a8d8e8 generic: ar8216: add OF configuration support for AR8327
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 36047
2013-03-15 15:50:08 +00:00
Gabor Juhos
ee12b1b7d5 generic: ar8216: separate platform_data based AR8327 code
Move platform_data specific configuration code
into a separate routine. Do it in preparation
for the upcoming OF support.

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

SVN-Revision: 36046
2013-03-15 15:50:05 +00:00
Gabor Juhos
d88f66ae21 generic: ar8216: don't use platform_data in ar8327_init_port
Fetch the PORT_STATUS values in ar8327_hw_init and
store those in a private data stucture for later use.

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

SVN-Revision: 36045
2013-03-15 15:50:02 +00:00
Gabor Juhos
9d3f70d503 generic: ar8216: move the ar8327_get_port_init_status function
It will be used in ar8327_probe routine.

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

SVN-Revision: 36044
2013-03-15 15:50:00 +00:00
Gabor Juhos
17d735fc46 generic: ar8216: simplify and rename ar8327_config_port
Return with the PORT_STATUS register value instead of
writing that directly into the corresponding register.
Also rename the function to ar8327_get_port_init_status.

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

SVN-Revision: 36043
2013-03-15 15:49:57 +00:00
Gabor Juhos
3fee1bddbe generic: ar8216: remove superfluous pdata checks
The presence of the platform data is already verified in
ar8327_hw_init, and the driver does not start without that
anyway.

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

SVN-Revision: 36042
2013-03-15 15:49:55 +00:00
Jonas Gorski
3010a0b616 generic: b53: clear SM_SW_FWD_MODE unconditionally when enabling VLAN
Setting this bit stops BCM53125 (bgmac actually) from receiving any
packets. This bit is cleared conditionally in b53_switch_reset and it
seems the same is done in bcmrobo.c which never sets that bit again.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 35723
2013-02-21 11:45:38 +00:00
Jonas Gorski
23e71c56ba generic: b53: remove empty spaces
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 35722
2013-02-21 11:45:36 +00:00
Gabor Juhos
451dd745bd generic: ar8216: cleanup function/variable names
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35642
2013-02-17 12:48:25 +00:00
Gabor Juhos
51996304c4 generic: ar8216: rename struct ar8216_priv to ar8xxx_priv
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35641
2013-02-17 12:48:23 +00:00
Gabor Juhos
f35c369710 generic: ar8216: move PHY4 RGMII workaround code out of the loop
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35603
2013-02-14 14:55:40 +00:00
Gabor Juhos
d64888ffc0 generic: ar8216: register the switch from the probe routine
Currently the switch gets registered when an ethernet
driver connects to a PHY of the switch. This method does
not work with the ethernet drivers which are connecting
to the PHY from their ndo_open callback. With those
ethernet drivers, the driver tries to register the switch
each time when the etherned device is opened and this causes
a deadlock.

Move the switch registration into the probe routine to fix
this problem.

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

SVN-Revision: 35602
2013-02-14 14:01:24 +00:00
Gabor Juhos
9525a075c1 ar8216: remove superfluous code from ar8216_config_init
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35562
2013-02-11 16:57:31 +00:00
Gabor Juhos
9c86d268eb generic: ar8216: don't use ethernet device name in register_switch
The switches are accessed via an MDIO bus. Set the alias
to the name of the MDIO bus, and show that in the message
along with the name of the switch switch device.

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

SVN-Revision: 35560
2013-02-11 16:11:31 +00:00
Gabor Juhos
3f3eba88f6 generic: ar8216: reuse the private data from ar8216_probe
The private data of the switch is already
allocated in ar8216_priv, assign that to
each PHY on the same MDIO bus. Also remove
the redundant code from ar8216_config_init.

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

SVN-Revision: 35559
2013-02-11 16:11:30 +00:00
Gabor Juhos
1afb759b35 generic: ar8216: use phydev instead of pdev everywhere
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35555
2013-02-11 13:25:43 +00:00
Gabor Juhos
0b1fe07e8e generic: ar8216: use pr_* macros for kernel messages
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35554
2013-02-11 13:14:00 +00:00
Gabor Juhos
eea297884e generic: ar8216: fix PHY features setup
Sujith says:

This commit breaks the WAN port on my AP96 - DHCP fails.
Reverting it fixes the issue.

  commit b67cc3a0cdd02973610d4d5a63226d1c44841e94
  Author: juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
  Date:   Fri Feb 8 09:13:18 2013 +0000

    generic: ar8216: simplify phy features setup

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

    git-svn-id: svn://svn.openwrt.org/openwrt/trunk@355183c298f89-4303-0410-b956-a3cf2f4a3e73

This change restores the previous behaviour and moves
the code into the ar8216_probe function.

Reported-by: Sujith Manoharan <sujith@msujith.org>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Tested-by: Sujith Manoharan <sujith@msujith.org>

SVN-Revision: 35549
2013-02-11 10:05:35 +00:00
Gabor Juhos
617076c613 generic: ar8216: add ar8xxx_probe_switch helper
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35547
2013-02-10 19:02:01 +00:00
Gabor Juhos
98b13e39ac generic: ar8216: rename ar8xxx_mib_cleanup to ar8xxx_mib_stop
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35546
2013-02-10 18:42:08 +00:00
Gabor Juhos
f97170a720 generic: ar8216: free mib counters from ar8xxx_free
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35545
2013-02-10 18:42:07 +00:00
Gabor Juhos
7924e517af generic: ar8216: add ar8xxx_free helper
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35544
2013-02-10 18:42:05 +00:00
Gabor Juhos
77b3c551c4 generic: ar8216: add ar8xxx_create{,mii} helpers
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35543
2013-02-10 18:42:04 +00:00
Gabor Juhos
5f70b1db2a generic: ar8216: remove redundant phy address check
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35542
2013-02-10 18:38:12 +00:00
Gabor Juhos
14fd37258b generic: ar8216: only set phy_ptr if packet mangling is used
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35541
2013-02-10 18:38:10 +00:00
Gabor Juhos
393163b098 generic: ar8216: add defines for the AR8316 POSTRIP register
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35539
2013-02-10 13:18:48 +00:00
Gabor Juhos
5ed480598d generic: ar8216: don't probe the chip multiple times
It is only needed when the private data is allocated.

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

SVN-Revision: 35538
2013-02-10 13:05:15 +00:00
Gabor Juhos
774da6c7a4 generic: ar8216: add sanity check to ar8216_probe
Verify that the mdio bus has PHY devices with
a supported PHY ID at address 0-4.

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

SVN-Revision: 35537
2013-02-10 13:05:14 +00:00
Gabor Juhos
4720c75cf7 generic: ar8216: skip probe on unused PHY addresses
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35536
2013-02-10 13:05:12 +00:00
Jonas Gorski
eedc3554fe generic: b53: fix reverted error check in probe
b53_switch_detect returns value returned by b53_read8, which is 0 for
success. So fail (and return error) only if b53_switch_detect returned
something else than 0. This fixes supported and advertising being zeros
for MDIO access.

Cc: Jonas Gorski <jogo@openwrt.org>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>

SVN-Revision: 35534
2013-02-10 12:31:36 +00:00
Gabor Juhos
de123c4409 generic: ar8216: move sleep out of the loop
It is enough to sleep once after ANEG is enabled on
all PHYs. This reduces boot time on boards with
AR8316 switch.

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

SVN-Revision: 35532
2013-02-09 13:26:04 +00:00
Gabor Juhos
aa04441904 generic: ar8216: simplify phy features setup
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35518
2013-02-08 09:13:18 +00:00
Gabor Juhos
9c1f95a416 generic: ar8216: don't use mdio bus specific functions in ar8216_id_chip
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35517
2013-02-08 09:13:14 +00:00
Gabor Juhos
5393efc0c7 generic: ar8216: use inline function to convert swdev to ar8216
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35514
2013-02-07 15:18:36 +00:00
Gabor Juhos
b87a1c757d generic: ar8216: add mii_bus field to struct ar8216_priv
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35513
2013-02-07 15:18:35 +00:00
Gabor Juhos
c130a3feac generic: mvswitch: add detach callback
Use the detach callback to disable packet mangling
to avoid possible NULL pointer dereference.

Compile tested only.

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

SVN-Revision: 35512
2013-02-07 15:18:34 +00:00
Gabor Juhos
4be8c22e74 generic: ar8216: add detach callback
The current code uses the 'remove' callback to disable
packet mangle on the underlying ethernet device.
However the attached_dev is always NULL when the
'remove' callback is called by phylib, and this causes
NULL pointer dereference, like this:

  [  475.300000] CPU 0 Unable to handle kernel paging request at virtual address 000000f0, epc == 801cdcf0, ra == 801c7eac
  [  475.310000] Oops[#1]:
  [  475.310000] Cpu 0
  [  475.310000] $ 0   : 00000000 00000000 00000000 00000001
  [  475.310000] $ 4   : 828dde00 00000005 828dde08 ffffffff
  [  475.310000] $ 8   : 00380081 00380081 82902a40 00000001
  [  475.310000] $12   : 00000037 00370081 00000001 00000000
  [  475.310000] $16   : 82865000 828dde08 828dde00 00000001
  [  475.310000] $20   : 00000080 00460000 00000002 77151448
  [  475.310000] $24   : 00000000 801abfd4
  [  475.310000] $28   : 82cc2000 82cc3d58 0053c3c4 801c7eac
  [  475.310000] Hi    : 00000007
  [  475.310000] Lo    : 00000004
  [  475.310000] epc   : 801cdcf0 ar8216_remove+0x1c/0x94
  [  475.310000]     Tainted: G           O
  [  475.310000] ra    : 801c7eac phy_remove+0x4c/0x6c
  [  475.310000] Status: 1000cc03    KERNEL EXL IE
  [  475.310000] Cause : 00800008
  [  475.310000] BadVA : 000000f0
  [  475.310000] PrId  : 00019750 (MIPS 74Kc)
  [  475.310000] Modules linked in: ath79_wdt ledtrig_usbdev ledtrig_netdev ag71xx(-) nf_nat_irc nf_nat_ftp nf_conntrack_irc nf_conntrack_ft
  p ipt_MASQUERADE iptable_nat xt_nat nf_nat_ipv4 nf_nat pppoext_conntrack xt_CT iptable_raw xt_state nf_conntrack_ipv4 nf_defrag_ipv4 nf_co
  nntrack ehci_hcd pppox ipt_REJECT xt_TCPMSS xt_LOG xt_comment xt_multiport xt_mac xt_limit iptable_mangle iptable_filter ip_tables xt_tcpu
  dp x_tables ppp_async ppp_generic slhc ath9k(O) ath9k_common(O) ath9k_hw(O) ath(O) mac80211(O) usbcore usb_common nls_base crc_ccitt cfg80
  211(O) compat(O) arc4 crypto_blkcipher aead ledtrig_timer ledtrig_default_on leds_gpio gpio_button_hotplug(O)
  [  475.310000] Process rmmod (pid: 1160, threadinfo=82cc2000, task=83969920, tls=7747c440)
  [  475.310000] Stack : 828dde08 802f5004 802f4680 00000001 828ddf70 801c7eac 802f4680 801ad6d8
          82902940 00000000 828dde08 802f5004 802f4680 801ad770 00000002 80269d94
          00000000 00000001 00000080 828dde08 828dde3c 801ad7fc 82902940 00000000
          83859100 00000000 8384dd2c 8384dd2c 828dde08 801ad230 82902800 00000000
          00000000 001a0041 828dde08 828dde08 802e80e8 801aac44 00000080 00460000
          ...
  [  475.310000] Call Trace:
  [  475.310000] [<801cdcf0>] ar8216_remove+0x1c/0x94
  [  475.310000] [<801c7eac>] phy_remove+0x4c/0x6c
  [  475.310000] [<801ad770>] __device_release_driver+0x6c/0xd0
  [  475.310000] [<801ad7fc>] device_release_driver+0x28/0x40
  [  475.310000] [<801ad230>] bus_remove_device+0xd8/0x10c
  [  475.310000] [<801aac44>] device_del+0x110/0x170
  [  475.310000] [<801aacb8>] device_unregister+0x14/0x28
  [  475.310000] [<801c92b0>] mdiobus_unregister+0x4c/0x70
  [  475.310000] [<82913060>] ag71xx_remove_ar8216_header+0xdc/0x5a8 [ag71xx]
  [  475.310000]
  [  475.310000]
  Code: 1200001c  8c82017c  ac800128 <8c4500f0> 3c03ffdf  3463ffff 00a31824  ac4300f0  ac4000e0

Add a detach callback and disable packet mangling in
that to fix the problem.

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

SVN-Revision: 35511
2013-02-07 15:18:32 +00:00
Gabor Juhos
395d0bdc1f generic: ar8216: clear driver specific data pointer in phy_device
This is needed to avoid a NULL pointer dereference:

  [   19.525270] Unable to handle kernel paging request for data at address 0x00000018
  [   19.532750] Faulting instruction address: 0xc016e104
  [   19.537714] Oops: Kernel access of bad area, sig: 11 [#1]
  [   19.543102] P1010 RDB
  [   19.545365] Modules linked in: booke_wdt nf_nat_irc nf_nat_ftp nf_conntrack_irc nf_conntrack_ftp ipt_MASQUERADE iptable_nat xt_nat d
  [   19.590725] NIP: c016e104 LR: c0171490 CTR: 00000000
  [   19.595681] REGS: c4bc3c10 TRAP: 0300   Tainted: G        W  O (3.7.6)
  [   19.602284] MSR: 00029000 <CE,EE,ME>  CR: 82002022  XER: 20000000
  [   19.608381] DEAR: 00000018, ESR: 00000000
  [   19.612382] TASK = c4cd9c80[2070] 'ifconfig' THREAD: c4bc2000
  GPR00: 00000001 c4bc3cc0 c4cd9c80 00000000 c7811000 00000000 00000000 0000e8ec
  GPR08: 0000e8eb 00000000 00029000 00000001 00000000 100801f8 1005c51c 1005c514
  GPR16: 1005c468 1005c54c 1005c258 1005c530 10060000 00000000 c7811000 ffff8914
  GPR24: c7815030 c793e400 10063adb 00000000 c7811000 c045594c c78ca600 c7815000
  [   19.646352] NIP [c016e104] register_switch+0x98/0x2d0
  [   19.651397] LR [c0171490] ar8216_config_init+0x2d8/0x3f4
  [   19.656697] Call Trace:
  [   19.659138] [c4bc3cc0] [c0170490] ar8216_mii_read+0x64/0xc4 (unreliable)
  [   19.665835] [c4bc3d00] [c0171490] ar8216_config_init+0x2d8/0x3f4
  [   19.671835] [c4bc3d20] [c016cf8c] phy_init_hw+0x50/0x6c
  [   19.677053] [c4bc3d30] [c016d078] phy_attach_direct+0xd0/0xf8
  [   19.682793] [c4bc3d50] [c016d154] phy_connect_direct+0x24/0x68
  [   19.688621] [c4bc3d70] [c0183b70] of_phy_connect+0x48/0x6c
  [   19.694102] [c4bc3d90] [c0175aac] gfar_enet_open+0x254/0x3d8
  [   19.699755] [c4bc3db0] [c019acc4] __dev_open+0xc0/0x120
  [   19.704975] [c4bc3dd0] [c019af98] __dev_change_flags+0xd4/0x15c
  [   19.710888] [c4bc3df0] [c019b0d4] dev_change_flags+0x1c/0x60
  [   19.716544] [c4bc3e10] [c01ebb94] devinet_ioctl+0x290/0x690
  [   19.722111] [c4bc3e70] [c01ec8d4] inet_ioctl+0x88/0xbc
  [   19.727245] [c4bc3e80] [c0186b98] sock_ioctl+0x258/0x294
  [   19.732551] [c4bc3ea0] [c009c00c] do_vfs_ioctl+0x6a4/0x728
  [   19.738031] [c4bc3f10] [c009c0d4] sys_ioctl+0x44/0x70
  [   19.743077] [c4bc3f40] [c000c74c] ret_from_syscall+0x0/0x3c
  [   19.748646] --- Exception: c01 at 0x48091b34
  [   19.748646]     LR = 0x480e4b64
  [   19.756033] Instruction dump:
  [   19.758991] 2f830000 907f0050 3860fff4 419e021c 837f0000 38000000 901f0038 901f0040
  [   19.766744] 901f003c 7f600034 5400d97e 0f000000 <801b0018> 2f800000 40be0010 801b001c

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

SVN-Revision: 35497
2013-02-05 08:39:26 +00:00
Gabor Juhos
2e7f38c243 generic: ar8216: unregister switch on error path
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 35496
2013-02-05 08:39:24 +00:00
Hauke Mehrtens
a9175c90cf kernel: b53: the b53 spi driver depends on spi
SVN-Revision: 35340
2013-01-27 21:39:53 +00:00
Hauke Mehrtens
721bf97863 kernel: remove __devinit, __devexit and __devexit_p for kernel 3.8
These attributes where removed with kernel 3.8 and are now causing compile errors.

SVN-Revision: 35328
2013-01-27 17:48:48 +00:00
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
c92998f9d9 generic: use mtd_read in myloader parser
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 33952
2012-10-27 07:57:59 +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
John Crispin
ba6751058b gpiodev/gpioctl RIP
SVN-Revision: 33725
2012-10-11 11:58:09 +00:00
John Crispin
5f8ffb8873 fixes gpio_dev un/reload balancing
Signed-off-by: SHI Bin <shibin@ctsing.com>

SVN-Revision: 33183
2012-08-14 12:32:11 +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
John Crispin
101766fb00 clean up pwm patches and drivers
SVN-Revision: 32901
2012-07-28 20:47:08 +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
Gabor Juhos
56cacb3b21 generic: ar8216: add caps field to ar8xxx_chip
SVN-Revision: 31003
2012-03-18 22:06:33 +00:00
Gabor Juhos
d1c585d4b1 generic: ar8216: add vtu_load_vlan field to ar8xxx_chip
SVN-Revision: 31002
2012-03-18 22:06:30 +00:00
Gabor Juhos
332310fba2 generic: ar8216: add vtu_flush field to ar8xxx_chip
SVN-Revision: 31001
2012-03-18 22:06:26 +00:00
Gabor Juhos
d964410cbc generic: ar8216: add init_port field to ar8xxx_chip
SVN-Revision: 31000
2012-03-18 22:06:23 +00:00
Gabor Juhos
006b3b846e generic: ar8216: add setup_port field to ar8xxx_chip
SVN-Revision: 30999
2012-03-18 22:06:19 +00:00
Gabor Juhos
eb5f0067b6 generic: ar8216: add hw_init field to ar8xxx_chip
SVN-Revision: 30998
2012-03-18 22:06:15 +00:00
Gabor Juhos
a8371ad566 generic: ar8216: add a separate structure for chip specific stuff
Also add a hw_init function into that.

SVN-Revision: 30997
2012-03-18 22:06:12 +00:00
Gabor Juhos
d18133b32d generic: ar8216: rename chip field of struct ar8216
SVN-Revision: 30996
2012-03-18 22:06:08 +00:00
Gabor Juhos
6e143e467f generic: ar8216: move ar8216_id_chip function
Also remove the inline annotation.

SVN-Revision: 30995
2012-03-18 22:06:05 +00:00
Gabor Juhos
1c99979b2c generic: ar8216: rename ar8216_ops to ar8216_sw_ops
SVN-Revision: 30994
2012-03-18 22:06:03 +00:00
Felix Fietkau
b957208807 swconfig: use a mutex instead of a spinlock, many swconfig calls sleep
SVN-Revision: 30952
2012-03-15 19:32:31 +00:00
Felix Fietkau
404a4c1fcd ar8216: fix a MTU related regression
Switch reset on AR8316 appears to clobber the MTU configuration register
and possibly other global config registers. Move global configuration
register init writes back to the reset callback.

SVN-Revision: 30951
2012-03-15 16:57:27 +00:00
Gabor Juhos
c00b53f3d0 ar71xx: move micrel PHY driver to the generic linux target
SVN-Revision: 30946
2012-03-15 09:25:53 +00:00
Gabor Juhos
e3af7c82f8 generic: ar8216: merge multiple if statements in ar8216_hw_apply
SVN-Revision: 30928
2012-03-13 17:33:12 +00:00
Gabor Juhos
2149facb53 generic: ar8216: use usleep_range in ar8216_mii_{read,write}
msleep(1) can sleep for up to 20ms.

SVN-Revision: 30885
2012-03-11 17:19:14 +00:00
Gabor Juhos
77d0a8ca85 generic: ar8216: add a helper function for writing PHY debug registers
SVN-Revision: 30884
2012-03-11 16:49:35 +00:00
Gabor Juhos
dad19ac8b2 generic: ar8216: add lockep assertion to ar8216_rmw
SVN-Revision: 30883
2012-03-11 16:49:33 +00:00
Gabor Juhos
1ad06d4c3a generic: ar8216: coding style cleanup
SVN-Revision: 30857
2012-03-08 10:21:14 +00:00
Gabor Juhos
e2d3cb69a1 generic: ar8216: don't use static variable in ar8236_hw_init
SVN-Revision: 30856
2012-03-08 10:21:12 +00:00
Gabor Juhos
291e2dd583 generic: ar8216: move register inititalization into hw_init
SVN-Revision: 30855
2012-03-08 10:21:11 +00:00
Gabor Juhos
e3538fa852 generic: ar8216: set chip type directly in ar8216_id_chip
SVN-Revision: 30854
2012-03-08 10:21:10 +00:00
Gabor Juhos
a6c69e63b6 generic: ar8216: simplify ar8216_config_init
SVN-Revision: 30853
2012-03-08 10:21:08 +00:00
Gabor Juhos
52a89cd95c generic: ar8216: move port initialization into a separate function
SVN-Revision: 30848
2012-03-07 16:32:46 +00:00
Gabor Juhos
0097cf7161 generic: ar8216: improve ar8216_wait_bit function
SVN-Revision: 30847
2012-03-07 16:32:45 +00:00
Gabor Juhos
2370828599 generic: ar8216: use ar8216_read_port_link to get the CPU port link parameters
SVN-Revision: 30846
2012-03-07 16:32:43 +00:00
Gabor Juhos
d8a8df51ca generic: ar8216: use the generic get_port_link implementation
SVN-Revision: 30845
2012-03-07 16:32:42 +00:00
Gabor Juhos
215e07177e generic: rtl8367: use the generic get_port_link implementation
SVN-Revision: 30844
2012-03-07 16:32:40 +00:00
Gabor Juhos
9e1be3b809 generic: rtl8366s: use the generic get_port_link implementation
SVN-Revision: 30843
2012-03-07 16:32:38 +00:00
Gabor Juhos
e2f0264afe generic: rtl8366rb: use the generic get_port_link implementation
SVN-Revision: 30842
2012-03-07 16:32:37 +00:00
Gabor Juhos
759c341e68 generic: swconfig: add a generic get_port_link implementation
SVN-Revision: 30839
2012-03-07 16:32:33 +00:00
Gabor Juhos
fc9db6f410 generic: ar8216: use mdiobus_write in ar8236_hw_init
SVN-Revision: 30838
2012-03-07 16:32:31 +00:00
Gabor Juhos
7112130105 generic: ar8216: use bus->mdio_lock directly in ar8216_mii_{read,write}
SVN-Revision: 30837
2012-03-07 16:32:30 +00:00
Gabor Juhos
a31e090255 generic: ar8216: fix phy driver name
SVN-Revision: 30836
2012-03-07 16:32:28 +00:00
Jo-Philipp Wich
e5b04d57ef revert unrelated change in previous commit
SVN-Revision: 30738
2012-02-27 09:34:31 +00:00
Jo-Philipp Wich
47b27500cf partly revert r30708, it breaks various arches
SVN-Revision: 30737
2012-02-27 09:33:36 +00:00
Gabor Juhos
9be1b91644 generic: allow to build myloader mtd parser for 3.2+
SVN-Revision: 29858
2012-01-22 18:36:49 +00:00
Gabor Juhos
4625c9b5a4 generic: rtl8366: add rtl8366_smi_write_reg_noack helper
After issuing a soft reset on the RT8366{S,RB}
switch, waiting for the last acknowlegement fails
in rtl8366_smi_write_reg. Add a _noack version of
the function and use that for issuing a soft reset.

SVN-Revision: 29844
2012-01-21 22:44:09 +00:00
Jo-Philipp Wich
9d497cb132 rtl8366: fix rtl8366_smi_detect() after r29677
SVN-Revision: 29732
2012-01-13 19:17:58 +00:00
Felix Fietkau
e87bb77966 ar8216: use vlan configuration for connecting ports (forced to be untagged) even with vlan_enable=0, but keep them isolated before the switch has been configured this makes enable_vlan=0 practical for vlan passthrough
SVN-Revision: 29719
2012-01-12 10:15:11 +00:00
Felix Fietkau
c33e016fa5 ar8216: do not strip vlan tags when running with vlan_enable=0
SVN-Revision: 29718
2012-01-12 10:15:08 +00:00
Gabor Juhos
8b567fb508 generic: add driver for the RTL8367R/M switches
SVN-Revision: 29678
2012-01-07 19:36:31 +00:00
Gabor Juhos
87fb92ee03 generic: rtl8366: preparing for RTL8367 support
* make clock delay configurable
* make read,write commands configurable
* use u16 for member and untag fields

SVN-Revision: 29677
2012-01-07 19:36:30 +00:00
Gabor Juhos
43196813d7 generic: rtl8366_smi: add timeout message
SVN-Revision: 29676
2012-01-07 19:36:25 +00:00
Gabor Juhos
5fa65cba6e kernel: swconfig: introduce a generic switch LED trigger
SVN-Revision: 29627
2011-12-31 15:02:30 +00:00
Gabor Juhos
bbfaaeffd6 kernel: ar8216: add support for the AR8236 switch
SVN-Revision: 28993
2011-11-12 14:09:52 +00:00
Gabor Juhos
ecb3690d0a kernel: ar8216: move port vlan setup into a separate function
SVN-Revision: 28992
2011-11-12 14:09:50 +00:00
Gabor Juhos
297ac9a7f1 kernel: swconfig: add a missing unlock in error path
SVN-Revision: 28753
2011-11-04 14:38:31 +00:00
Jonas Gorski
b7a2a74823 ar8216: use mdiobus_{read,write} to ensure proper locking
SVN-Revision: 28421
2011-10-11 23:05:10 +00:00
Gabor Juhos
93c093057d generic: jumbo frames support for rtl8366s
This patch adds the option to enable jumbo frames on the rtl8366s
switch. This is almost exactly the same as the first patch at
https://dev.openwrt.org/ticket/7977 and it has been requested
in a comment there.

I have tested this and it successfully allows devices on the switch
using jumbo frames to communicate.

Signed-off-by: Ash Hughes <ashley.hughes@blueyonder.co.uk>

SVN-Revision: 28267
2011-09-21 11:47:38 +00:00
Gabor Juhos
bb64fb2e58 generic: ar8216: add support for get link status
SVN-Revision: 27989
2011-08-15 14:11:41 +00:00
Jonas Gorski
eaa935658b swconfig: Add generic switch identifiers
Also make switches available under a generic name "switch<num>" for device
name agnostic access. The old device name is used as an alias for backward
compatibility.

SVN-Revision: 27800
2011-07-27 18:00:18 +00:00
Felix Fietkau
5b32d62fcf rtl8366_smi: implement a function for detecting whether the attached switch is RTL8366S or RTL8366RB
SVN-Revision: 27755
2011-07-24 14:40:31 +00:00
Felix Fietkau
1afe8a0726 rtl8366: unify rtl8366s and rtl8366rb platform data
SVN-Revision: 27754
2011-07-24 14:40:23 +00:00
Felix Fietkau
a41f80bca1 fix the gpio_dev driver: remove existing forward port patches, use unlocked_ioctl on all platforms and fix the arguments to the ioctl handler (based on patch from #9198)
SVN-Revision: 27322
2011-07-01 03:20:13 +00:00
John Crispin
e3e2a170cd we dont need 1024 bytes buffer. 128 bytes is enough.
SVN-Revision: 27143
2011-06-09 07:08:54 +00:00
John Crispin
60c125b8e6 (respin) 802.1Q VLAN support for ADM6996M/ADM6996FC
This patch adds 802.1Q VLAN support for the ADM6996M chip.

The driver is loaded for both the FC and M model. It will detect which of the
two chips is connected. The FC model is initialised, but no further
functionality is offered.

The PHY driver will always report "100 Mbit/s, link up", for both the M and FC
models. This reflects the fact that the link between switch chip and Ethernet
MAC is always on[1].

Further documentation can be found in the kernel's
Documentation/networking/adm6996.txt

Signed-of-By: Peter Lebbing <peter@digitalbrains.com>

SVN-Revision: 26865
2011-05-09 15:21:58 +00:00
Felix Fietkau
eb270c4d33 ar8316: automatically detect whether port4 is used as PHY or as a switch port
SVN-Revision: 26778
2011-04-28 21:27:37 +00:00
Felix Fietkau
2336d4b438 ar8216: support AR8316 rev 0 devices
SVN-Revision: 26776
2011-04-28 19:30:43 +00:00
Felix Fietkau
9e8cd78944 swconfig: Replace SPIN_LOCK_UNLOCKED with DEFINE_SPINLOCK
SPIN_LOCK_UNLOCKED has been deprecated since 2.6.19 and will get removed
in 2.6.39, so replace it with DEFINE_SPINLOCK().

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>

SVN-Revision: 26770
2011-04-26 23:05:29 +00:00
Gabor Juhos
f358166236 generic: rtl8366{s,rb}: remove the PHY driver.
Since the PHY driver is only used for the WAN port and there is virtually
no difference between it and the generic PHY driver, we can sefely remove
it.

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>

SVN-Revision: 26600
2011-04-12 09:29:07 +00:00
Felix Fietkau
0508ee0c00 rtl8306: do not overwrite registers in the phy fixup, it could mess up other switches (fixes #8911)
SVN-Revision: 26410
2011-04-02 16:35:22 +00:00
Gabor Juhos
4f1f672d9e generic: rtl8366s: allow initial register values to be passed via platform_data
SVN-Revision: 25120
2011-01-26 20:35:46 +00:00
Gabor Juhos
5641e8233e generic: rtl8366: fix build error
SVN-Revision: 24943
2011-01-09 05:36:44 +00:00
Gabor Juhos
792a1fb2c0 generic: rtl8366: enable vlans before enabling the ports
SVN-Revision: 24939
2011-01-08 20:24:29 +00:00
Gabor Juhos
c16715f8d2 generic: rtl8366: enable ports only after VLAN configuration is done
SVN-Revision: 24938
2011-01-08 20:24:26 +00:00
Gabor Juhos
0bcc97ac26 generic: rtl8366: add enable_port helper
SVN-Revision: 24937
2011-01-08 20:24:22 +00:00
Gabor Juhos
5120660512 generic: rtl8366_smi: init VLANs only in first switch initialization
SVN-Revision: 24936
2011-01-08 20:24:18 +00:00
Gabor Juhos
d88fc86fca generic: rtl8366s: use correct bitmasks in sanity checks
SVN-Revision: 24935
2011-01-08 18:04:04 +00:00
Gabor Juhos
ec9b5d6243 generic: rtl8366s: add vlan fid support
SVN-Revision: 24934
2011-01-08 18:04:00 +00:00
Gabor Juhos
72779e560b generic: rtl8366: add debugfs file for VLAN4K table
SVN-Revision: 24933
2011-01-08 18:03:57 +00:00
Gabor Juhos
a4472870bd generic: rtl8366rb: use correct bitmasks in sanity checks
SVN-Revision: 24930
2011-01-08 11:28:35 +00:00
Gabor Juhos
a059a11ee1 generic: add LED trigger for USB device presence/activity
SVN-Revision: 24646
2010-12-17 17:10:11 +00:00
Gabor Juhos
90c0618011 generic: add rtl8366rb switch vlan fid support
Allows to use fids 0 to 7. Default is 0.
Those who will use this don't forget to `set vlan fid` every time
after `set vlan ports` if you want non default behavior.
Minor changes. Version bump.

Signed-off-by: Roman Yeryomin <roman@advem.lv>

SVN-Revision: 24125
2010-11-24 10:01:21 +00:00
Gabor Juhos
1fa8af5e9f generic: update gpio_buttons driver
SVN-Revision: 23984
2010-11-12 18:53:01 +00:00
Florian Fainelli
edcbafc836 fix mvswitch PHY polling setting (#8133)
SVN-Revision: 23862
2010-11-04 14:09:20 +00:00
Felix Fietkau
0ee2fda5e1 rt8366*: use __devinit instead of __init for the probe function to fix a section mismatch
SVN-Revision: 23573
2010-10-21 18:42:05 +00:00
Jo-Philipp Wich
352fea83d9 unify extended vlan id swconfig attributes. AR8216 and PSB6970 used "pvid", IP17xx used "tag" and RTL8306 called it "vid". Change all to "vid" and annotate the description with the valid ID range.
SVN-Revision: 23419
2010-10-12 20:49:35 +00:00
Gabor Juhos
dc4df4ca65 generic: RTL8366S/RB: Fix autonegotiation for the WAN port.
The RTL8366S/RB support connecting a second mac to it and using the 5th
port as an independent phy. Therefore we need to handle autonegotiation
changes for phy 4 like on a single phy device.

This fixes #7980, verified on a WNDR3700.

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@gmail.com>

SVN-Revision: 23127
2010-09-27 14:42:05 +00:00
Gabor Juhos
5721f06fe1 generic: add rtl8366rb switch port rate, port and qos enable/disable support
Patch-by: Roman Yeryomin <roman@advem.lv>

SVN-Revision: 23126
2010-09-27 14:41:54 +00:00
Florian Fainelli
0ca31140aa add switch driver for Lantiq PSB6970
Tested on ifxmips based board. The PSB6970 is also known as the Infineon Tantos switch.

Signed-off-by: Ithamar R. Adema <ithamar.adema@team-embedded.nl>

SVN-Revision: 22914
2010-09-04 18:06:01 +00:00
Felix Fietkau
08755b8858 rtl8366_smi: when setting VLAN ports, always initialize the PVID to ensure that the VLAN MC entry gets allocated. Fixes problems with tagged-only ports (#7795)
SVN-Revision: 22856
2010-08-31 19:04:02 +00:00
Gabor Juhos
0826570bc4 generic: rtl8366: allow use of VIDs 16-4095 if vlan4k is enabled
SVN-Revision: 22704
2010-08-18 16:00:39 +00:00
Gabor Juhos
08c5588cd2 generic: rtl8366: add generic code to enable VLANs
SVN-Revision: 22703
2010-08-18 16:00:37 +00:00
Gabor Juhos
77d6cd0feb generic: rtl8366: add enable_vlan{,4k} to smi_ops
SVN-Revision: 22702
2010-08-18 16:00:34 +00:00
Gabor Juhos
e01649c7cc generic: fix LED control on the RTL8366 switches
* patch from #7713

SVN-Revision: 22656
2010-08-15 06:47:42 +00:00
Felix Fietkau
f8c4bf89b9 rtl8366: re-enable learning by default, disabling it broke switching functionality. add a configuration option for dynamically enabling/disabling this feature. based on patch from #7637
SVN-Revision: 22545
2010-08-08 20:15:10 +00:00
Felix Fietkau
bd6324190f swconfig: cleanup of kernel drivers and interface - add some comments to a few data structures - add a switch_dev_ops data structure for attributes and callback to replace the stupid template memcpy - get rid of the switch_dev.priv pointer - using container_of() is better
SVN-Revision: 22476
2010-08-04 00:43:40 +00:00
Jo-Philipp Wich
bf1db57017 ip17xx: r21709 broke VLAN functionality on the IP175C switch, add back mdelay() to wait before reading back the phy state, fixes ethernet on the DIR-300 and possibly others
SVN-Revision: 22468
2010-08-03 03:04:34 +00:00
Claudio Mignanti
3f25930247 pwm: export the generic pwm api as module
SVN-Revision: 22297
2010-07-19 21:14:24 +00:00
Gabor Juhos
9445ce43a6 generic: rtl8366: add debugfs file to show PVIDs
SVN-Revision: 22206
2010-07-15 13:05:56 +00:00
Gabor Juhos
9a92e1a32c generic: rtl8366: make rtl8366_set_vlan static
SVN-Revision: 22205
2010-07-15 13:05:53 +00:00
Gabor Juhos
48934bbd88 generic: rtl8366: add common rtl8366_sw_{get,set}_vlan_ports functions
SVN-Revision: 22204
2010-07-15 13:05:50 +00:00
Gabor Juhos
d4e0b75dda generic: rtl8366: add common rtl8366_sw_get_vlan_info
SVN-Revision: 22203
2010-07-15 13:05:47 +00:00
Gabor Juhos
a59fa57985 generic: rtl8366: use smi->num_ports and smi->ops->get_vlan_4k
SVN-Revision: 22202
2010-07-15 13:05:43 +00:00
Gabor Juhos
ce7eca2dff generic: rtl8366: add is_vlan_valid function to smi_ops
SVN-Revision: 22201
2010-07-15 13:05:39 +00:00
Gabor Juhos
dffd45dc61 generic: rtl8366: add common rtl8366_sw_get_port_mib function
SVN-Revision: 22200
2010-07-15 13:05:36 +00:00
Gabor Juhos
0049e74882 generic: rtl8366: generealize rtl8366{s,rb}_sw_get_port_mib functions
SVN-Revision: 22199
2010-07-15 13:05:32 +00:00
Gabor Juhos
e110321fce generic: rtl8366: make rtl8366_{g,s}et_pvid static
SVN-Revision: 22198
2010-07-15 13:05:29 +00:00
Gabor Juhos
e561b18521 generic: rtl8366: add common rtl8366_sw_{get,set}_port_pvid functions
SVN-Revision: 22197
2010-07-15 13:05:25 +00:00
Gabor Juhos
534480d3fb generic: rtl8366: add setup to rtl8366_smi_ops struct
SVN-Revision: 22196
2010-07-15 13:05:21 +00:00
Gabor Juhos
b093cec6cc generic: rtl8366: introduce rtl8366_smi_alloc
SVN-Revision: 22195
2010-07-15 13:05:16 +00:00
Gabor Juhos
c7bc8fb46c generic: rtl8366: get rid of private rtl8366{s,rb} structs
SVN-Revision: 22194
2010-07-15 13:05:10 +00:00
Gabor Juhos
008c81b859 generic: rtl8366: move switch device to the rtl8366_smi struct
SVN-Revision: 22193
2010-07-15 13:05:06 +00:00
Gabor Juhos
5508b23aaf generic: rtl8366: get rid of private vlan_{mc,4k} structs
The usage of bitfields causes problems in Little-Endian mode. Remove
them and manipulate the bits directly in the appropriate functions. This
change also reduces the size of the binary a bit.

SVN-Revision: 22192
2010-07-15 13:05:02 +00:00
Gabor Juhos
540b3e6419 generic: rtl8366: use SWITCH_TYPE_NOVAL for reset_mib attributes
SVN-Revision: 22191
2010-07-15 13:04:57 +00:00
Claudio Mignanti
86f3d57a00 pwm: use coherent naming to avoid conflicts
SVN-Revision: 22142
2010-07-12 13:19:57 +00:00