From patchwork Mon Apr 27 12:20:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Mehlis X-Patchwork-Id: 464971 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 83ABA140318 for ; Mon, 27 Apr 2015 22:20:42 +1000 (AEST) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id F28AD280192; Mon, 27 Apr 2015 14:19:31 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 09D022800D3 for ; Mon, 27 Apr 2015 14:19:20 +0200 (CEST) X-policyd-weight: using cached result; rate: -7.6 Received: from phoenix.uberspace.de (phoenix.uberspace.de [95.143.172.135]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Mon, 27 Apr 2015 14:19:17 +0200 (CEST) Received: (qmail 13809 invoked from network); 27 Apr 2015 12:20:18 -0000 Received: from localhost (HELO ?IPv6:2001:920:18ae:3:f2de:f1ff:fe3b:a8e8?) (127.0.0.1) by phoenix.uberspace.de with SMTP; 27 Apr 2015 12:20:18 -0000 Message-ID: <553E297E.10509@m3hlis.de> Date: Mon, 27 Apr 2015 14:20:14 +0200 From: Christian Mehlis User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Heiner Kallweit References: <553639D5.6090508@m3hlis.de> <553683AB.2030708@m3hlis.de> <5537D3D5.3070104@gmail.com> <5538E8E0.2030702@m3hlis.de> <553A85CD.7000003@gmail.com> In-Reply-To: <553A85CD.7000003@gmail.com> Cc: OpenWrt Development List Subject: Re: [OpenWrt-Devel] AR8334 switch support X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" Am 24.04.2015 um 20:05 schrieb Heiner Kallweit: > Could you please test this patch and provide the dmesg output? I tried your patch - dmesg is attached. After the first run without success: [ 0.890000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Detected AR8337 switch I tweaked your patch a bit to print out more (attached). ############################################################ I also changed: + for (i = 0; i < AR8XXX_NUM_PHYS; i++) { to + for (i = 0; i < AR8327_NUM_PORTS; i++) { with this change we get: [ 0.850000] switch0: Atheros AR833X rev. 2 switch registered on ag71xx-mdio.0 [ 0.860000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 0 available [ 0.860000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 1 available [ 0.870000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 2 available [ 0.880000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 3 available [ 0.890000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 4 available [ 0.890000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 5 available [ 0.900000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 6 available [ 0.910000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Detected AR8337 switch ############################################################# It seems, that your phy based test is not working on ar8334... Can we test other registers? I'll give it a try. Best Christian # dmesg [ 0.000000] Linux version 3.18.11 (c@black) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r45458) ) #1 Mon Apr 27 13:42:01 CEST 2015 [ 0.000000] MyLoader: sysp=cc7dbb0c, boardp=e9f041c4, parts=cbc748d9 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 0001974c (MIPS 74Kc) [ 0.000000] SoC: Atheros AR9344 rev 2 [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 08000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x00000000-0x07ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x00000000-0x07ffffff] [ 0.000000] Initmem setup node 0 [mem 0x00000000-0x07ffffff] [ 0.000000] On node 0 totalpages: 32768 [ 0.000000] free_area_init_node: node 0, pgdat 803560f0, node_mem_map 81000000 [ 0.000000] Normal zone: 256 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 32768 pages, LIFO batch:7 [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 [ 0.000000] Kernel command line: board=WPJ344 console=ttyS0,115200 mtdparts=spi0.0:192k(u-boot)ro,16128k(firmware),64k(art)ro rootfstype=squashfs,jffs2 noinitrd [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes) [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] Memory: 125920K/131072K available (2471K kernel code, 123K rwdata, 528K rodata, 260K init, 188K bss, 5152K reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:51 [ 0.000000] Clocks: CPU:560.000MHz, DDR:450.000MHz, AHB:225.000MHz, Ref:40.000MHz [ 0.000000] Calibrating delay loop... 278.93 BogoMIPS (lpj=1394688) [ 0.070000] pid_max: default: 32768 minimum: 301 [ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.080000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.080000] NET: Registered protocol family 16 [ 0.090000] MIPS: machine is Compex WPJ344 [ 0.100000] ar724x-pci ar724x-pci: PCIe link is down [ 0.100000] registering PCI controller with io_map_base unset [ 0.110000] ar71xx: using random MAC address for eth0 [ 0.330000] ar71xx: using random MAC address for eth1 [ 0.550000] PCI host bridge to bus 0000:00 [ 0.560000] pci_bus 0000:00: root bus resource [mem 0x10000000-0x13ffffff] [ 0.560000] pci_bus 0000:00: root bus resource [io 0x0000] [ 0.570000] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff] [ 0.570000] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00 [ 0.570000] Switched to clocksource MIPS [ 0.580000] NET: Registered protocol family 2 [ 0.580000] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.580000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.590000] TCP: Hash tables configured (established 1024 bind 1024) [ 0.590000] TCP: reno registered [ 0.600000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.600000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.610000] NET: Registered protocol family 1 [ 0.610000] PCI: CLS 0 bytes, default 32 [ 0.610000] futex hash table entries: 256 (order: -1, 3072 bytes) [ 0.630000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.630000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.640000] msgmni has been set to 245 [ 0.660000] io scheduler noop registered [ 0.660000] io scheduler deadline registered (default) [ 0.660000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled [ 0.670000] console [ttyS0] disabled [ 0.690000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 2500000) is a 16550A [ 0.700000] console [ttyS0] enabled [ 0.710000] bootconsole [early0] disabled [ 0.720000] m25p80 spi0.0: found mx25l12805d, expected m25p80 [ 0.730000] m25p80 spi0.0: mx25l12805d (16384 Kbytes) [ 0.730000] 3 cmdlinepart partitions found on MTD device spi0.0 [ 0.740000] Creating 3 MTD partitions on "spi0.0": [ 0.740000] 0x000000000000-0x000000030000 : "u-boot" [ 0.750000] 0x000000030000-0x000000ff0000 : "firmware" [ 0.790000] 2 uimage-fw partitions found on MTD device firmware [ 0.790000] 0x000000030000-0x000000150000 : "kernel" [ 0.800000] 0x000000150000-0x000000ff0000 : "rootfs" [ 0.800000] mtd: device 3 (rootfs) set to be root filesystem [ 0.810000] 1 squashfs-split partitions found on MTD device rootfs [ 0.820000] 0x0000003c0000-0x000000ff0000 : "rootfs_data" [ 0.820000] 0x000000ff0000-0x000001000000 : "art" [ 0.840000] libphy: ag71xx_mdio: probed [ 0.850000] switch0: Atheros AR833X rev. 2 switch registered on ag71xx-mdio.0 [ 0.860000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 0 available [ 0.860000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 1 available [ 0.870000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 2 available [ 0.880000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 3 available [ 0.890000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: PHY 4 available [ 0.890000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Detected AR8337 switch [ 0.960000] libphy: ag71xx_mdio: probed [ 1.560000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd036, driver=Atheros AR8216/AR8236/AR8316] [ 1.570000] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:RGMII [ 2.160000] ag71xx-mdio.1: Found an AR934X built-in switch [ 2.200000] eth1: Atheros AG71xx at 0xba000000, irq 5, mode:GMII [ 2.210000] TCP: cubic registered [ 2.210000] NET: Registered protocol family 17 [ 2.210000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this. [ 2.230000] 8021q: 802.1Q VLAN Support v1.8 [ 2.240000] VFS: Mounted root (squashfs filesystem) readonly on device 31:3. [ 2.250000] Freeing unused kernel memory: 260K (8036f000 - 803b0000) [ 3.270000] init: failed to symlink /tmp -> /var [ 3.270000] init: Console is alive [ 3.270000] init: - watchdog - [ 4.460000] usbcore: registered new interface driver usbfs [ 4.460000] usbcore: registered new interface driver hub [ 4.470000] usbcore: registered new device driver usb [ 4.480000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 4.480000] ehci-platform: EHCI generic platform driver [ 4.490000] ehci-platform ehci-platform: EHCI Host Controller [ 4.500000] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1 [ 4.510000] ehci-platform ehci-platform: irq 3, io mem 0x1b000000 [ 4.530000] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00 [ 4.530000] hub 1-0:1.0: USB hub found [ 4.540000] hub 1-0:1.0: 1 port detected [ 4.540000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 4.550000] ohci-platform: OHCI generic platform driver [ 5.280000] init: - preinit - [ 6.030000] random: procd urandom read with 9 bits of entropy available [ 7.730000] eth0: link up (1000Mbps/Full duplex) [ 9.290000] mount_root: jffs2 not ready yet, using temporary tmpfs overlay [ 9.330000] eth0: link down [ 9.340000] procd: - early - [ 9.340000] procd: - watchdog - [ 9.960000] procd: - ubus - [ 10.980000] procd: - init - [ 11.710000] NET: Registered protocol family 10 [ 11.720000] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 11.740000] Loading modules backported from Linux version master-2015-03-09-0-g141f155 [ 11.750000] Backport generated by backports.git backports-20150129-0-gdd4a670 [ 11.780000] cfg80211: Calling CRDA to update world regulatory domain [ 11.780000] cfg80211: World regulatory domain updated: [ 11.790000] cfg80211: DFS Master region: unset [ 11.790000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [ 11.800000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 11.810000] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 11.820000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A) [ 11.830000] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 11.840000] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s) [ 11.840000] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s) [ 11.850000] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 11.860000] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A) [ 11.970000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 11.980000] nf_conntrack version 0.5.0 (1971 buckets, 7884 max) [ 12.020000] xt_time: kernel timezone is -0000 [ 12.040000] PPP generic driver version 2.4.2 [ 12.050000] NET: Registered protocol family 24 [ 12.070000] ath: EEPROM regdomain: 0x0 [ 12.070000] ath: EEPROM indicates default country code should be used [ 12.070000] ath: doing EEPROM country->regdmn map search [ 12.070000] ath: country maps to regdmn code: 0x3a [ 12.070000] ath: Country alpha2 being used: US [ 12.070000] ath: Regpair used: 0x3a [ 12.080000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 12.080000] ieee80211 phy0: Atheros AR9340 Rev:2 mem=0xb8100000, irq=47 [ 12.090000] cfg80211: Calling CRDA for country: US [ 12.110000] cfg80211: Regulatory domain changed to country: US [ 12.110000] cfg80211: DFS Master region: FCC [ 12.120000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [ 12.130000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 3000 mBm), (N/A) [ 12.130000] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 1700 mBm), (N/A) [ 12.140000] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2300 mBm), (0 s) [ 12.150000] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 3000 mBm), (N/A) [ 12.160000] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A) [ 18.860000] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0 [ 18.880000] jffs2_build_filesystem(): unlocking the mtd device... done. [ 18.880000] jffs2_build_filesystem(): erasing all blocks after the end marker... [ 22.700000] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 22.750000] device eth0.1 entered promiscuous mode [ 22.750000] device eth0 entered promiscuous mode [ 22.790000] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready [ 22.830000] IPv6: ADDRCONF(NETDEV_UP): eth0.2: link is not ready [ 23.880000] eth0: link up (1000Mbps/Full duplex) [ 23.880000] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 23.940000] br-lan: port 1(eth0.1) entered forwarding state [ 23.940000] br-lan: port 1(eth0.1) entered forwarding state [ 23.950000] IPv6: ADDRCONF(NETDEV_CHANGE): eth0.2: link becomes ready [ 23.950000] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready [ 25.920000] Atheros AR8216/AR8236/AR8316 ag71xx-mdio.0:00: Port 3 is up [ 25.940000] br-lan: port 1(eth0.1) entered forwarding state [ 78.810000] done. [ 78.810000] jffs2: notice: (922) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. [ 80.610000] random: nonblocking pool is initialized This patch tries to identify an AR8334/AR8335 by checking for non-existent PHYs. I have systems with AR8327 only, the patch doesn't do any harm on them at least. Could you please test this patch and provide the dmesg output? Rgds, Heiner --- target/linux/generic/files/drivers/net/phy/ar8216.c | 8 ++++---- target/linux/generic/files/drivers/net/phy/ar8216.h | 21 +++++++++++++++++++-- target/linux/generic/files/drivers/net/phy/ar8327.c | 17 ++++++++++++++--- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index e39d540..25bbfc2 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -38,7 +38,7 @@ #include "ar8216.h" extern const struct ar8xxx_chip ar8327_chip; -extern const struct ar8xxx_chip ar8337_chip; +extern const struct ar8xxx_chip ar833x_chip; #define AR8XXX_MIB_WORK_DELAY 2000 /* msecs */ @@ -1576,8 +1576,8 @@ ar8xxx_id_chip(struct ar8xxx_priv *priv) case AR8XXX_VER_AR8327: priv->chip = &ar8327_chip; break; - case AR8XXX_VER_AR8337: - priv->chip = &ar8337_chip; + case AR8XXX_VER_AR833X: + priv->chip = &ar833x_chip; break; default: pr_err("ar8216: Unknown Atheros device [ver=%d, rev=%d]\n", @@ -1856,7 +1856,7 @@ ar8xxx_phy_config_aneg(struct phy_device *phydev) static const u32 ar8xxx_phy_ids[] = { 0x004dd033, 0x004dd034, /* AR8327 */ - 0x004dd036, /* AR8337 */ + 0x004dd036, /* AR833X */ 0x004dd041, 0x004dd042, 0x004dd043, /* AR8236 */ diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.h b/target/linux/generic/files/drivers/net/phy/ar8216.h --- a/target/linux/generic/files/drivers/net/phy/ar8216.h +++ b/target/linux/generic/files/drivers/net/phy/ar8216.h @@ -334,7 +334,7 @@ enum { AR8XXX_VER_AR8236 = 0x03, AR8XXX_VER_AR8316 = 0x10, AR8XXX_VER_AR8327 = 0x12, - AR8XXX_VER_AR8337 = 0x13, + AR8XXX_VER_AR833X = 0x13, }; #define AR8XXX_NUM_ARL_RECORDS 100 @@ -409,6 +409,8 @@ struct ar8xxx_priv { void *chip_data; bool initialized; bool port4_phy; + bool unavailable_phys[AR8XXX_NUM_PHYS]; + int num_unavailable_phys; char buf[2048]; struct arl_entry arl_table[AR8XXX_NUM_ARL_RECORDS]; char arl_buf[AR8XXX_NUM_ARL_RECORDS * 32 + 256]; @@ -562,9 +564,24 @@ static inline bool chip_is_ar8327(struct ar8xxx_priv *priv) return priv->chip_ver == AR8XXX_VER_AR8327; } +static inline bool chip_is_ar833x(struct ar8xxx_priv *priv) +{ + return priv->chip_ver == AR8XXX_VER_AR833X; +} + +static inline bool chip_is_ar8334(struct ar8xxx_priv *priv) +{ + return chip_is_ar833x(priv) && priv->num_unavailable_phys == 3; +} + +static inline bool chip_is_ar8335(struct ar8xxx_priv *priv) +{ + return chip_is_ar833x(priv) && priv->num_unavailable_phys == 2; +} + static inline bool chip_is_ar8337(struct ar8xxx_priv *priv) { - return priv->chip_ver == AR8XXX_VER_AR8337; + return chip_is_ar833x(priv) && priv->num_unavailable_phys == 0; } static inline void diff --git a/target/linux/generic/files/drivers/net/phy/ar8327.c b/target/linux/generic/files/drivers/net/phy/ar8327.c --- a/target/linux/generic/files/drivers/net/phy/ar8327.c +++ b/target/linux/generic/files/drivers/net/phy/ar8327.c @@ -620,7 +620,21 @@ ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np) static int ar8327_hw_init(struct ar8xxx_priv *priv) { - int ret; + int i, ret; + + for (i = 0; i < AR8327_NUM_PORTS; i++) { + /* certain bits are always set if the PHY exists */ + if (!mdiobus_read(priv->mii_bus, i, MII_BMSR)) { + priv->unavailable_phys[i] = true; + priv->num_unavailable_phys++; + dev_info(&priv->phy->dev, "PHY %d not available\n", i); + } else { + dev_info(&priv->phy->dev, "PHY %d available\n", i); + } + } + if (chip_is_ar833x(priv)) + dev_info(&priv->phy->dev, "Detected AR833%d switch\n", + AR8327_NUM_PORTS - priv->num_unavailable_phys); priv->chip_data = kzalloc(sizeof(struct ar8327_data), GFP_KERNEL); if (!priv->chip_data) @@ -1201,12 +1215,12 @@ const struct ar8xxx_chip ar8327_chip = { .mib_func = AR8327_REG_MIB_FUNC }; -const struct ar8xxx_chip ar8337_chip = { +const struct ar8xxx_chip ar833x_chip = { .caps = AR8XXX_CAP_GIGE | AR8XXX_CAP_MIB_COUNTERS, .config_at_probe = true, .mii_lo_first = true, - .name = "Atheros AR8337", + .name = "Atheros AR833X", .ports = AR8327_NUM_PORTS, .vlans = AR8X16_MAX_VLANS, .swops = &ar8327_sw_ops, -- 2.3.5