[PATCH v4 06/12] arm: mvebu: clearfog: Add option for 2.5 Gbps SFP
Joel Johnson
mrjoel at lixil.net
Mon Jan 27 17:27:06 CET 2020
On 2020-01-27 00:20, Baruch Siach wrote:
> Hi Joel,
>
> On Mon, Jan 27 2020, Joel Johnson wrote:
>> On 2020-01-26 22:29, Baruch Siach wrote:
>>> On Mon, Jan 27 2020, Joel Johnson wrote:
>>>> While newer Linux kernels provide autoconfiguration of SFP, provide
>>>> an option for setting in U-Boot Kconfig for use prior to booting.
>>>>
>>>> Signed-off-by: Joel Johnson <mrjoel at lixil.net>
>>>>
>>>> ---
>>>>
>>>> v2 changes:
>>>> - fixed help indentation
>>>> v3 changes:
>>>> - none
>>>> v4 changes:
>>>> - adjust static SerDes configuration at runtime instead of #ifdef
>>>>
>>>> ---
>>>> board/solidrun/clearfog/Kconfig | 7 +++++++
>>>> board/solidrun/clearfog/clearfog.c | 3 +++
>>>> 2 files changed, 10 insertions(+)
>>>>
>>>> diff --git a/board/solidrun/clearfog/Kconfig
>>>> b/board/solidrun/clearfog/Kconfig
>>>> index 936d5918f8..c910e17093 100644
>>>> --- a/board/solidrun/clearfog/Kconfig
>>>> +++ b/board/solidrun/clearfog/Kconfig
>>>> @@ -15,4 +15,11 @@ config TARGET_CLEARFOG_BASE
>>>> detection via additional EEPROM hardware. This option enables
>>>> selecting
>>>> the Base variant for older hardware revisions.
>>>>
>>>> +config CLEARFOG_SFP_25GB
>>>> + bool "Enable 2.5 Gbps mode for SFP"
>>>> + help
>>>> + Set the SFP module connection to support 2.5 Gbps transfer speed
>>>> for
>>>> the
>>>> + SGMII connection (requires a supporting SFP). By default,
>>>> transfer
>>>> speed
>>>> + of 1.25 Gbps is used, suitable for a more common 1 Gbps SFP
>>>> module.
>>>> +
>>>> endmenu
>>>> diff --git a/board/solidrun/clearfog/clearfog.c
>>>> b/board/solidrun/clearfog/clearfog.c
>>>> index 4019e37016..6c5b9a784f 100644
>>>> --- a/board/solidrun/clearfog/clearfog.c
>>>> +++ b/board/solidrun/clearfog/clearfog.c
>>>> @@ -59,6 +59,9 @@ void config_static_serdes_map(void)
>>>> board_serdes_map[4].serdes_speed = SERDES_SPEED_5_GBPS;
>>>> board_serdes_map[4].serdes_mode = SERDES_DEFAULT_MODE;
>>>> }
>>>> +
>>>> + if (IS_ENABLED(CONFIG_CLEARFOG_SFP_25GB))
>>>> + board_serdes_map[5].serdes_speed = SERDES_SPEED_3_125_GBPS;
>>>
>>> config_static_serdes_map() is not called only when TLV EEPROM is
>>> present. So CONFIG_CLEARFOG_SFP_25GB has no effect in that case. This
>>> code should move to hws_board_topology_load() to avoid that.
>>
>> Yeah, that's what I was trying to ask with the question below embedded
>> in
>> patch 4.
>>
>> "Note that this approach *does not* currently provide any
>> mechanism
>> for EEPROM detected boards to have their SFP speed changed or
>> switch
>> between PCIE/SATA signalling. I'm assuming that will be done based
>> on
>> hardware detection, but confirmation/acceptance in review would be
>> appreciated so it can be revisited if needed.
>>
>> After sending the series and thinking about it more, I didn't see any
>> other
>> mechanism by which the configuration would be changed. The question
>> was really
>> to confirm what I had inferred from code, namely that Pro/Base boards
>> even
>> with EEPROM would still have to have a U-Boot built with custom
>> options in
>> order to change the PCIe/SATA or SFP options. I would like to confirm
>> with you
>> that is desired and expected even in the cases of EEPROM supporting
>> units. If
>> that's the case, I'll rework the location of setting, along with
>> updating the
>> help text for those options. Pending your confirmation, I plan to get
>> rid of
>> the separate config_static_serdes_map function and fold it back in,
>> with the
>> SATA and SFP options coming before the board runtime detection
>> configuration.
>
> My thinking is that EEPROM TLV is only meant to describe the hardware
> as
> manufactured, and never change. SATA (read mSATA) and SFP are user
> setup
> that TLV can't cover. So I think that SATA and SFP build time selection
> should apply regardless of TLV.
>
> In theory it could have been even better to store SATA/SFP selection in
> environment variables. But that is not currently possible, since serdes
> configuration takes place at SPL phase where the environment is not
> accessible.
>
> baruch
Yeah, that makes sense and as I thought further on it is the only
logical option based at least on what's currently exposed for runtime
detction. I'll send out the updated series with this change and a few
code style cleanups after completing the SATA testing, hopefully later
today.
Any other items pending for this series? I think it's in good shape,
pending any further thoughts or discussion on the Pro DT by default
change.
Joel
More information about the U-Boot
mailing list