Message ID | 20191024100914.16840-1-grygorii.strashko@ti.com |
---|---|
Headers | show |
Series | net: ethernet: ti: introduce new cpsw switchdev based driver | expand |
On Thu, Oct 24, 2019 at 01:09:06PM +0300, Grygorii Strashko wrote: > As a preparatory patch to add support for a switchdev based cpsw driver, > move common functions to cpsw-priv.c so that they can be used across both > drivers. Hi Grygorii Bike shedding, but it seems odd to move common code into a private file. How common is the current code in cpsw-common.c? Andrew
Hi Florian, On 25/10/2019 20:47, Florian Fainelli wrote: > On 10/24/19 3:09 AM, Grygorii Strashko wrote: >> Add bindings for the new TI CPSW switch driver. Comparing to the legacy >> bindings (net/cpsw.txt): >> - ports definition follows DSA bindings (net/dsa/dsa.txt) and ports can be >> marked as "disabled" if not physically wired. >> - all deprecated properties dropped; >> - all legacy propertiies dropped which represent constant HW cpapbilities >> (cpdma_channels, ale_entries, bd_ram_size, mac_control, slaves, >> active_slave) >> - TI CPTS DT properties are reused as is, but grouped in "cpts" sub-node >> - TI Davinci MDIO DT bindings are reused as is, because Davinci MDIO is >> reused. >> >> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> >> --- > > [snip] >> +- mdio : CPSW MDIO bus block description >> + - bus_freq : MDIO Bus frequency > > clock-frequency is a more typical property to describe the bus clock's > frequency, that is what i2c and spi do. The MDIO is re-used here unchanged (including bindings). i think, I could try to add standard optional property "bus-frequency" to MDIO bindings as separate series, and deprecate "bus_freq". > >> + See bindings/net/mdio.txt and davinci-mdio.txt >> + >> +- cpts : The Common Platform Time Sync (CPTS) module description >> + - clocks : should contain the CPTS reference clock >> + - clock-names : should be "cpts" >> + See bindings/clock/clock-bindings.txt >> + >> + Optional properties - all ports: >> + - cpts_clock_mult : Numerator to convert input clock ticks into ns >> + - cpts_clock_shift : Denominator to convert input clock ticks into ns >> + Mult and shift will be calculated basing on CPTS >> + rftclk frequency if both cpts_clock_shift and >> + cpts_clock_mult properties are not provided. > > Why would those two be needed that would be modeled in the Linux Common > Clock Framework? The CPTS is re-used here unchanged (including bindings). This is very specific tuning options for PHC clock (cyclecounter) which intended to be used in very rare cases with some ref frequencies when automatic calculation is not working properly. -- Best regards, grygorii
hi Andrew, On 29/10/2019 04:23, Andrew Lunn wrote: >> +TI SoC Ethernet Switch Controller Device Tree Bindings (new) >> +------------------------------------------------------ >> + >> +The 3-port switch gigabit ethernet subsystem provides ethernet packet >> +communication and can be configured as an ethernet switch. > > Hi Grygorii > > Maybe referring it to a 3-port switch will cause confusion, since in > this use case, it only has 2 ports, and you only list two ports in the > device tree. Yeah. This is how it's defined in TRM - Port 0 (CPU port) is the same as external Port from CPSW switch core point of view. > >> It provides the >> +gigabit media independent interface (GMII),reduced gigabit media >> +independent interface (RGMII), reduced media independent interface (RMII), [...] >> + >> +&mac_sw { >> + pinctrl-names = "default", "sleep"; >> + status = "okay"; >> +}; >> + >> +&cpsw_port1 { >> + phy-handle = <ðphy0_sw>; >> + phy-mode = "rgmii"; >> + ti,dual_emac_pvid = <1>; >> +}; >> + >> +&cpsw_port2 { >> + phy-handle = <ðphy1_sw>; >> + phy-mode = "rgmii"; >> + ti,dual_emac_pvid = <2>; >> +}; >> + >> +&davinci_mdio_sw { >> + ethphy0_sw: ethernet-phy@0 { >> + reg = <0>; >> + }; >> + >> + ethphy1_sw: ethernet-phy@1 { >> + reg = <1>; >> + }; >> +}; > > In an example, it is unusual to split things up like this. I > understand that parts of this will be in the dtsi file, and parts in > the .dts file, but examples generally keep it all as one. And when you > re-write this in YAML so it can be used to validated real DTs, you > will have to combine it. Thank you. I'll update. -- Best regards, grygorii
On 01/11/2019 19:36, Florian Fainelli wrote: > On 11/1/19 10:25 AM, Grygorii Strashko wrote: >> Hi Florian, >> >> On 25/10/2019 20:47, Florian Fainelli wrote: >>> On 10/24/19 3:09 AM, Grygorii Strashko wrote: >>>> Add bindings for the new TI CPSW switch driver. Comparing to the legacy >>>> bindings (net/cpsw.txt): >>>> - ports definition follows DSA bindings (net/dsa/dsa.txt) and ports >>>> can be >>>> marked as "disabled" if not physically wired. >>>> - all deprecated properties dropped; >>>> - all legacy propertiies dropped which represent constant HW >>>> cpapbilities >>>> (cpdma_channels, ale_entries, bd_ram_size, mac_control, slaves, >>>> active_slave) >>>> - TI CPTS DT properties are reused as is, but grouped in "cpts" sub-node >>>> - TI Davinci MDIO DT bindings are reused as is, because Davinci MDIO is >>>> reused. >>>> >>>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> >>>> --- >>> >>> [snip] >>>> +- mdio : CPSW MDIO bus block description >>>> + - bus_freq : MDIO Bus frequency >>> >>> clock-frequency is a more typical property to describe the bus clock's >>> frequency, that is what i2c and spi do. >> >> The MDIO is re-used here unchanged (including bindings). >> i think, I could try to add standard optional property "bus-frequency" >> to MDIO bindings >> as separate series, and deprecate "bus_freq". > > What is wrong with 'clock-frequency'? > > Documentation/devicetree/bindings/i2c/i2c.txt: > > - clock-frequency > frequency of bus clock in Hz. > > Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt: > > - clock-frequency: the MDIO bus clock that must be output by the MDIO bus > hardware, if absent, the default hardware values are used > > Maybe this is a bit of a misnomer as it is usually considered a > replacement for the lack of a proper "clocks" property with a clock > provider, but we can flip the coin around any way we want, it looks > almost the same. > I can do clock-frequency, but I like more bus-frequency (personally) due to more understandable meaning, and because in "Devicetree Specification v0.2" clock-frequency is defined as more related to clocks. Any way I hope you agree that it should be part separate discussion? -- Best regards, grygorii
Hi Tony, On 24/10/2019 19:05, Tony Lindgren wrote: > Hi, > > * Grygorii Strashko <grygorii.strashko@ti.com> [191024 10:10]: >> This the RFC v5 which introduces new CPSW switchdev based driver which is >> operating in dual-emac mode by default, thus working as 2 individual >> network interfaces. The Switch mode can be enabled by configuring devlink driver >> parameter "switch_mode" to 1/true: >> devlink dev param set platform/48484000.ethernet_switch \ >> name switch_mode value 1 cmode runtime > > Just wondering about the migration plan.. Is this a replacement > driver or used in addition to the old driver? > Sry, I've missed you mail. As it's pretty big change the idea is to keep both drivers at least for sometime. Step 1: add new driver and enable it on one platform. Do announcement. Step 2: switch all one-port and dual mac drivers to the new driver Step 3: switch all other platform to cpsw switchdev and deprecate old driver. -- Best regards, grygorii
* Grygorii Strashko <grygorii.strashko@ti.com> [191109 15:16]: > Hi Tony, > > On 24/10/2019 19:05, Tony Lindgren wrote: > > Hi, > > > > * Grygorii Strashko <grygorii.strashko@ti.com> [191024 10:10]: > > > This the RFC v5 which introduces new CPSW switchdev based driver which is > > > operating in dual-emac mode by default, thus working as 2 individual > > > network interfaces. The Switch mode can be enabled by configuring devlink driver > > > parameter "switch_mode" to 1/true: > > > devlink dev param set platform/48484000.ethernet_switch \ > > > name switch_mode value 1 cmode runtime > > > > Just wondering about the migration plan.. Is this a replacement > > driver or used in addition to the old driver? > > > > Sry, I've missed you mail. > > As it's pretty big change the idea is to keep both drivers at least for sometime. > Step 1: add new driver and enable it on one platform. Do announcement. > Step 2: switch all one-port and dual mac drivers to the new driver > Step 3: switch all other platform to cpsw switchdev and deprecate old driver. OK sounds good to me. So for the dts changes, we keep the old binding and just add a new module there? Or do you also have to disable some parts of the old dts? Regards, Tony