On Thu, Apr 28, 2022 at 3:00 AM Dusty Mabe <dusty(a)dustymabe.com> wrote:
On 4/27/22 12:27, Ian McInerney wrote:
> On Wed, Apr 27, 2022 at 4:06 PM Peter Robinson <pbrobinson(a)gmail.com
<mailto:pbrobinson@gmail.com>> wrote:
>
> Hey Dusty,
>
> > > Hey jforbes,
> > >
> > > I'm looking at buying a quartz64 ARM board (relatively new board
> > > from pine64 kind of like a Raspberry Pi) [1]. I think there are
> > > some config options in the kernel that need to be set. I found
where
> > > someone opened a PR for Arch [2]. I compared that with what we
have
> > > in the Fedora aarch64 kernel config and here's what would need
to change:
> > >
> > > CONFIG_MMC_SDHCI_OF_DWCMSHC is not set -> y
> > > CONFIG_MOTORCOMM_PHY=m -> y
> > >
> > > Is changing kernel config options a big ask or a reasonable
request?
>
> Is it a big ask? No, is it a reasonable request? No.
>
> These are arm devices so please come to the arm list/maintainers with
> these requests?
>
>
> IMO asking Justin was a perfectly valid start to exploring these
options, because he is the Fedora kernel maintainer. And Justin reached out
to this list to solicit input and opinions, so was there really any harm
done?
>
>
>
> > This should not be a problem. I am CCing
arm(a)lists.fedoraproject.org <mailto:arm@lists.fedoraproject.org>
> > so that others are aware. I will try to remember for 5.17.5
tomorrow,
> > but on vacation travelling by motorcycle this week, so if I forget,
> > remind me early next week.
>
> Why do they need to be built in? They don't. One is a SDHCI driver
and
> the other is an ethernet PHY, both are dealt with in initrd just fine
> and have no reason to be built in, we deal with these just fine
across
> 100s of other devices in initrd.
>
>
> Link [2] provided in the initial email forwarded to the list says that
module loading for the motorcomm PHY does not work because the chip has a
zeroed out manufacturer ID and so it gets associated to the generic driver
first and then can't be associated with the proper driver later. Moving the
driver from a module to being built into the kernel is mentioned under the
troubleshooting section of the Pine64 wiki (
https://wiki.pine64.org/wiki/Quartz64#No_Ethernet_Connectivity <
https://wiki.pine64.org/wiki/Quartz64#No_Ethernet_Connectivity>) as being
the fix for this issue.
>
> Looking at the driver history, it was noted that the OUI is empty during
the initial driver review
https://lkml.org/lkml/2021/5/14/522 <
https://lkml.org/lkml/2021/5/14/522>, and nothing further was noted other
than the possibility of an OUI conflict. So this appears to be needed to
fix a quirk in the hardware where motorcomm didn't include their OUI even
though they were assigned one.
>
> That being said, I am not sure what the likelihood of a conflict with
another PHY reporting the same (empty) OUI part would be, and so I am not
sure if this would usurp the generic driver in any cases it shouldn't if it
were to be built into the kernel instead of as a module.
>
> As for the other config (CONFIG_MMC_SDHCI_OF_DWCMSHC), there is no note
about if it needs to be a module or built-in, so it can probably be loaded
by the Quartz64 as a module. The original requester probably suggested it
as a built-in because that is what the other enablement PR in the other
distro did.
Thanks Ian.
From your evaluation does it look like the following is true:
CONFIG_MOTORCOMM_PHY=m -> y - might be needed for this specific hardware
but we don't know if it's safe to do.
CONFIG_MMC_SDHCI_OF_DWCMSHC needs to be set and having it be a loadable
module should be fine?
That summary makes sense to me, and I think the one that could be done
immediately would be setting CONFIG_MMC_SDHCI_OF_DWCMSHC=m, since enabling
a new module is probably not controversial.
As for the CONFIG_MOTORCOMM_PHY entry, I did see that there is a device
tree currently under review upstream for the Quartz64-B (
https://patchwork.kernel.org/project/linux-rockchip/patch/20220425171344....),
but it doesn't include any compatibility entry for selecting the motorcomm
PHY driver. I haven't experimented with this yet, but I wonder if adding an
entry to the device tree would allow the proper driver to be loaded from a
module once this device tree is accepted into upstream. I have reached out
to the original device tree author (who also contributed the motorcomm
driver) to get their thoughts on this. If the device tree entry will work,
then it means the motorcomm driver could be built as a module instead.
-Ian
Thanks for the help!
Dusty