Thread (44 messages) flat view 44 messages, 9 authors, 2020-09-01

Re: [PATCH v3 2/8] net: dsa: Add DSA driver for Hirschmann Hellcreek switches

From: Kurt Kanzenbach <kurt@linutronix.de>
Date: 2020-08-27 10:29:16
Also in: netdev

Hi Andrew,

On Tue Aug 25 2020, Kurt Kanzenbach wrote:
On Tue Aug 25 2020, Andrew Lunn wrote:
quoted
I agree with the check here. The question is about the compatible
string. Should there be a more specific compatible string as well as
the generic one?

There have been a few discussions about how the Marvell DSA driver
does its compatible string. The compatible string tells you where to
find the ID register, not what value to expect in the ID register. The
ID register can currently be in one of three different locations. Do
all current and future Hellcreak devices have the same value for
HR_MODID_C?  If not, now is a good time to add a more specific
compatible string to tell you where to find the ID register.
quoted
My plan was to extend this when I have access to other
revisions. There will be a SPI variant as well. But, I didn't want to
implement it without the ability to test it.
Does the SPI variant use the same value for HR_MODID_C?  Maybe you
need a different compatible, maybe not, depending on how the driver is
structured.

The compatible string is part of the ABI. So thinking about it a bit
now can make things easier later. I just want to make sure you have
thought about this.
I totally agree. The Marvell solution seems to work. For all current
devices the module ID is located at 0x00. Depending on the chip ID the
different properties can be configured later. The SPI variant will have
a different module ID. Anyhow, I'll ask how this will be handled for
future devices and in general.
After further discussion, we cannot use the Marvell solution.

So, the module id doesn't help us in determining anything about the
hardware. The module id can be arbitrarily chosen. A lot of the features
of the switch IP core are compile time options and cannot be read back
via registers. The hardware integrator can chose which features are
used, the precision of the get of the day for the ptp clock, the module
id, the port speed, additional debug options and so on.

All of this depends on how the IP core is integrated into the hardware
most likely an FPGA. My suggestion for now is to use different
compatible strings. Currently two variants exists:

 * An evaluation platform based on a Cyclone V based DE1 board from
   Terasic
 * The kairos chip (via SPI) which I mentioned in the cover letter

More variants are about to come with more ports, etc.

So, we would need different strings to distinguish between them. Proposal:

 * "hirschmann,hellcreek-de1soc-r1"
 * "hirschmann,hellcreek-ksp-rbrb-trsrr-r208"

And create some form of platform_data with:

 * module id
 * amount of ports
 * port speed
 * qbv support
 * ...

Any thoughts on this?

Thanks,
Kurt

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help