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

From: Kurt Kanzenbach <[email-masked]>
Date: Thu, 27 Aug 2020 12:29:09 +0200

Hi Andrew,

On Tue Aug 25 2020, Kurt Kanzenbach wrote:
> On Tue Aug 25 2020, Andrew Lunn wrote:
>> 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.
>>
>>> 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