Message ID | 20230411092725.104992-1-jiawenwu@trustnetic.com |
---|---|
Headers | show |
Series | TXGBE PHYLINK support | expand |
Hi On 4/11/23 12:32, Jiawen Wu wrote: > +Cc: Jarkko Nikula <jarkko.nikula@linux.intel.com> > >> -----Original Message----- >> From: Jiawen Wu <jiawenwu@trustnetic.com> >> Sent: Tuesday, April 11, 2023 5:27 PM >> To: netdev@vger.kernel.org; linux@armlinux.org.uk >> Cc: linux-i2c@vger.kernel.org; linux-gpio@vger.kernel.org; >> mengyuanlou@net-swift.com; Jiawen Wu <jiawenwu@trustnetic.com> >> Subject: [PATCH net-next v2 2/6] net: txgbe: Implement I2C bus master >> driver >> >> Implement I2C bus driver to send and receive I2C messages. >> >> This I2C license the IP of Synopsys Designware, but without interrupt >> support on the hardware design. It seems that polling mode needs to be >> added in Synopsys Designware I2C driver. But currently it can only be >> driven by this I2C bus master driver. >> >> Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> >> --- >> drivers/net/ethernet/wangxun/Kconfig | 1 + >> .../net/ethernet/wangxun/txgbe/txgbe_phy.c | 153 >> ++++++++++++++++++ >> .../net/ethernet/wangxun/txgbe/txgbe_type.h | 23 +++ >> 3 files changed, 177 insertions(+) >> Looks like your use case has similarities with the commit 17631e8ca2d3 ("i2c: designware: Add driver support for AMD NAVI GPU").
On Tue, Apr 11, 2023 at 05:27:22PM +0800, Jiawen Wu wrote: > Register SFP platform device to get modules information. > > Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
> > > Implement I2C bus driver to send and receive I2C messages. > > > > > > This I2C license the IP of Synopsys Designware, but without interrupt > > > support on the hardware design. It seems that polling mode needs to be > > > added in Synopsys Designware I2C driver. But currently it can only be > > > driven by this I2C bus master driver. > > > > > > Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> > > > --- > > > drivers/net/ethernet/wangxun/Kconfig | 1 + > > > .../net/ethernet/wangxun/txgbe/txgbe_phy.c | 153 > > > ++++++++++++++++++ > > > .../net/ethernet/wangxun/txgbe/txgbe_type.h | 23 +++ > > > 3 files changed, 177 insertions(+) > > > > Looks like your use case has similarities with the commit 17631e8ca2d3 > ("i2c: designware: Add driver support for AMD NAVI GPU"). Yes, can you please check if you can't use the current i2c designware driver?
On Friday, April 14, 2023 12:29 AM, Wolfram Sang wrote: > > > > Implement I2C bus driver to send and receive I2C messages. > > > > > > > > This I2C license the IP of Synopsys Designware, but without interrupt > > > > support on the hardware design. It seems that polling mode needs to be > > > > added in Synopsys Designware I2C driver. But currently it can only be > > > > driven by this I2C bus master driver. > > > > > > > > Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> > > > > --- > > > > drivers/net/ethernet/wangxun/Kconfig | 1 + > > > > .../net/ethernet/wangxun/txgbe/txgbe_phy.c | 153 > > > > ++++++++++++++++++ > > > > .../net/ethernet/wangxun/txgbe/txgbe_type.h | 23 +++ > > > > 3 files changed, 177 insertions(+) > > > > > > Looks like your use case has similarities with the commit 17631e8ca2d3 > > ("i2c: designware: Add driver support for AMD NAVI GPU"). > > Yes, can you please check if you can't use the current i2c designware > driver? Hi Jarkko & Wolfram, I read the i2c designware driver code, and found that 'dev->ss_hcnt' can only be obtained by i2c_dw_acpi_configure() or calculated by clock rate. I don't quite understand how to get the clock rate. I tried to add a software node of clock with property ("clock-frequency", 100000) and referenced by I2C node. But it didn't work. Can I deliver 'dev->ss_hcnt' via platform data? Or how should I fill in the software node?
> I don't quite understand how to get the clock rate. I tried to add a software > node of clock with property ("clock-frequency", 100000) and referenced by > I2C node. But it didn't work. I've not spent the time to fully understand the code, so i could be very wrong....
On Saturday, April 15, 2023 11:11 PM, Andrew Lunn wrote: > > I don't quite understand how to get the clock rate. I tried to add a software > > node of clock with property ("clock-frequency", 100000) and referenced by > > I2C node. But it didn't work. > > I've not spent the time to fully understand the code, so i could be > very wrong.... > > From what you said above, you clock is fixed? So maybe you can do > something like: > > mfld_get_clk_rate_khz() > > https://elixir.bootlin.com/linux/latest/source/drivers/i2c/busses/i2c-designware-pcidrv.c#L97 > > How are you instantiating the driver? Can you add to > i2_designware_pci_ids[]? > > Andrew > There is no PCI ID for our I2C device, so I register the platform I2C device.
On Friday, April 14, 2023 7:05 PM, Jiawen Wu wrote: > On Friday, April 14, 2023 12:29 AM, Wolfram Sang wrote: > > > > > Implement I2C bus driver to send and receive I2C messages. > > > > > > > > > > This I2C license the IP of Synopsys Designware, but without interrupt > > > > > support on the hardware design. It seems that polling mode needs to be > > > > > added in Synopsys Designware I2C driver. But currently it can only be > > > > > driven by this I2C bus master driver. > > > > > > > > > > Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> > > > > > --- > > > > > drivers/net/ethernet/wangxun/Kconfig | 1 + > > > > > .../net/ethernet/wangxun/txgbe/txgbe_phy.c | 153 > > > > > ++++++++++++++++++ > > > > > .../net/ethernet/wangxun/txgbe/txgbe_type.h | 23 +++ > > > > > 3 files changed, 177 insertions(+) > > > > > > > > Looks like your use case has similarities with the commit 17631e8ca2d3 > > > ("i2c: designware: Add driver support for AMD NAVI GPU"). > > > > Yes, can you please check if you can't use the current i2c designware > > driver? > > Hi Jarkko & Wolfram, > > I read the i2c designware driver code, and found that 'dev->ss_hcnt' can > only be obtained by i2c_dw_acpi_configure() or calculated by clock rate. > > I don't quite understand how to get the clock rate. I tried to add a software > node of clock with property ("clock-frequency", 100000) and referenced by > I2C node. But it didn't work. > > Can I deliver 'dev->ss_hcnt' via platform data? Or how should I fill in the > software node? > The above question is in the case of platform driver. Moreover, why 'dev->fs_hcnt' and 'dev->fs_lcont' must be set when I use the standard mode? Should it be set only if I2C_MAX_FAST_MODE_* ?