Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 9 Mar 2014 13:18:43 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Milan Obuch <freebsd-mips@dino.sk>
Cc:        "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org>
Subject:   Re: I (think) the AR8327 switch support now works
Message-ID:  <CAJ-VmomEzc=PNkTCS-OfJB9U6zO%2B2ZYisd22aq8fYPvks%2BOpAg@mail.gmail.com>
In-Reply-To: <20140309083919.2810fa97@zeta.dino.sk>
References:  <CAJ-Vmok0cVLnH9DQh%2Bz6XF-NQmPKy_Ez37kLtuCSRThwjQHTJQ@mail.gmail.com> <20140301143607.13a96bd6@zeta.dino.sk> <CAJ-Vmom2coTLFn0zcTa=BzxAOopMjCDUBOtQwOVOyQmCeB19wA@mail.gmail.com> <20140301200546.7ff373d1@zeta.dino.sk> <20140301231239.023b8733@zeta.dino.sk> <CAJ-VmoknT-SWVmcDX-Cx8StUVuZNX%2BqNPzLcMBdLxN7qwssNoA@mail.gmail.com> <20140307140432.0a460da1@zeta.dino.sk> <CAJ-Vmok-nF4QdVmUMGJxt4tX=X%2Bvc4_-G100ZPRnQ-2aWyNCog@mail.gmail.com> <20140307204230.3c86b9b1@zeta.dino.sk> <CAJ-Vmo=B0CG1FSCKYeaCmORJuWbJ24g=%2BQkHV7WC8DTV9m1zKA@mail.gmail.com> <20140308140901.19782009@zeta.dino.sk> <CAJ-VmokM5mPxMbbVyaSpyDcn-Fs32g4heWMPZF7n2OpnFK31oA@mail.gmail.com> <20140308173642.0a48d2c2@zeta.dino.sk> <CAJ-VmomnycSYbhf4aKaiK%2BUL%2B-aWXy_tXioRUjMVO62r%2BDpEUA@mail.gmail.com> <20140308234129.76800b5c@zeta.dino.sk> <CAJ-Vmok6gEG0rMSdAccQZkD-McTY8y7LktE1xQsXy7MNODxP2g@mail.gmail.com> <20140309083919.2810fa97@zeta.dino.sk>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

Yes, I do think you're right. I think the MDIO IO is not being terribly stable.

Unfortunately I don't have the time to figure it out. So if someone
wants to buy/ship me an RB2011 of some flavour, I'll likely have a
much better chance of figuring out what's going on.



Thanks,



-a


On 8 March 2014 23:39, Milan Obuch <freebsd-mips@dino.sk> wrote:
> On Sat, 8 Mar 2014 14:50:14 -0800
> Adrian Chadd <adrian@freebsd.org> wrote:
>
>> Ok, well now let's figure out if the reset is working or not.
>>
>> look at arswitch_attach():
>>
>> * It sets up the default methods;
>> * it calls ar8327_attach();
>> * it resets the switch via arswitch_reset();
>> * it calls the HAL methods to set things up;
>> * it attaches the PHYs;
>> * it attaches said PHYs;
>> * it starts the periodic checks via arswitch_tick().
>>
>> So, I'd add some printf()s in arswitch_attach() to see where it's
>> getting to before it calls return (ENXIO) or return (err).
>>
>>
>> -a
>>
>
> OK, so I patched said function with some printf's (in attachment),
> built new kernel and got following result:
>
> mdio0: <MDIO> on argemdio0
> mdioproxy0: <MII/MDIO proxy, MDIO side> on mdio0
> arswitch0: readreg 0x00000000: 0x12041204
> arswitch0: readreg 0x00000000: 0x00000000
> arswitch0: <Atheros AR8327 Ethernet Switch> on mdio0
> arswitch0: arswitch_attach 1
> device_attach: arswitch0 attach returned 6
>
> Now I put there some more printf's (in arswitch_probe) and things go a
> bit stranger. I've got:
>
> mdio0: <MDIO> on argemdio0
> mdioproxy0: <MII/MDIO proxy, MDIO side> on mdio0
> unknown: arswitch_probe 1
> arswitch0: readreg 0x00000000: 0x00000000
> unknown: arswitch_probe 2 0
>
> and for the second time, just doing one more reboot:
>
> mdio0: <MDIO> on argemdio0
> mdioproxy0: <MII/MDIO proxy, MDIO side> on mdio0
> unknown: arswitch_probe 1
> arswitch0: readreg 0x00000000: 0x12041204
> unknown: arswitch_probe 2 6
> unknown: arswitch_probe 1
> arswitch0: readreg 0x00000000: 0x00000000
> unknown: arswitch_probe 2 0
> arswitch0: <Atheros AR8327 Ethernet Switch> on mdio0
> arswitch0: arswitch_attach 1 0
> device_attach: arswitch0 attach returned 6
>
> Next reboot brings again the first result, next one the second, again
> the second, again the first one etc. It looks like two two
> possibilities are alternating with some level of randomness. To me this
> tells that mdio does not work reliably in this case - am I right
> thinking that reading register 0 should always return the same value,
> 0x12041204, at least when no other register is touched in between?
>
> Well, this was with soft reset - I got every time mountroot promp, so
> just pressing enter gives me panic and then I typed reboot. when doing
> power-cycle, things are a bit deterministic - three time in a row I got
> the first result.
>
> Next question - why is arswitch_probe function called second time? It
> is called twice for both switches, so it is probably by design, and as
> the second switch is only 'hint probed', it does not matter. But for
> 8327, register is read, unfortunatelly not the same result is given
> both times.
>
> Also, I played with if_arge.c - arge_fetch_mdiobus_clock_rate()
> function a bit, but no matter the clock divider I used, the results are
> still the same. I see in next function, arge_reset_miibus a comment
> about resetting the mdio block(s), so I suspect it is something to be
> done, maybe, but is not yet. I have no idea how to try it, however. I
> can just wait for next hint, now.
>
> Regards,
> Milan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmomEzc=PNkTCS-OfJB9U6zO%2B2ZYisd22aq8fYPvks%2BOpAg>