histb-mainline / linux

Linux mainline kernel fork for various HiSilicon Hi3716 / Hi3796 / Hi3798 devices
Other
10 stars 5 forks source link

USB2 INNO PHY 驱动修改 #9

Open 185264646 opened 4 months ago

185264646 commented 4 months ago

海思原来写的代码把PHY和测试总线驱动混一块了,比较好的做法应该是分开成两部分。hisi_inno_phy_write_reg函数拆分到单独的总线驱动里面去,phy驱动只保留hisi_inno_phy_setup()逻辑就可以了。我打算把驱动修改成这种结构,接下来添加其他设备支持会容易一些。

@yangfl 如果有空的话,能否帮忙测试一下这一版本的驱动能否在mv100上正常运行?设备树修改可以直接看提交记录里的binding。

当然,测试完后会加上你的Tested-by标签。

能测试一下读取函数能否正常工作的话更好,可惜这需要再写代码了。


重新revert回原来的版本了,方便的话可以review一下。

yangfl commented 4 months ago

ok,我目前在外,下个月能做

yangfl commented 4 months ago

这未免有点太小题大做了。目前test bus完全看不出在其他类似设备上有应用,或者有进一步phy内部寄存器的资料,真要有更多用途再抽象成regmap感觉更合适。

185264646 commented 4 months ago

这未免有点太小题大做了。目前test bus完全看不出在其他类似设备上有应用,或者有进一步phy内部寄存器的资料,真要有更多用途再抽象成regmap感觉更合适。

我刚开始就是把这一坨全放到PHY驱动里,结果跟这位maintainer扯了半天:https://lore.kernel.org/all/20240220-inno-phy-v3-0-893cdf8633b4@outlook.com/

实在说服不了他,只好把bus驱动单独写出来了。

yangfl commented 4 months ago

我感觉你是在yaml误导了他也被他误导了,你的yaml给人感觉就像是有个bus一样,但这个bus其实没必要在dts里体现。 最好还是先看看其他部分,等他忘了这事你再提交一个简单的txt实现方案。

185264646 commented 4 months ago

我感觉你是在yaml误导了他也被他误导了,你的yaml给人感觉就像是有个bus一样,但这个bus其实没必要在dts里体现。 最好还是先看看其他部分,等他忘了这事你再提交一个简单的txt实现方案。

我第一版驱动就这么弄的,结果binding实在糊弄不过去。

这么搞mv200支持不好弄。mv200的inno phy是直接mmio就可以的,设备树怎么写呢?下面的phy port节点的reg到底是写成所谓的phy index还是写成物理地址空间呢?

mv200还多一个reset,这个reset在cv200和mv100上直接由驱动内部代劳了,就是所谓的TEST_PORT_RSTN。但是在mv200上是挂在crg下面的,所以肯定要写进设备树里,然后在驱动里获取。

当然将错就错也可以,就直接假装没有这回事,再给mv200加一个PHY_TYPE_2,然后binding直接别管,邮件不要给这位maintainer发了。试试看能不能糊弄过去。只要phy那边把patch收了,就能进主线。但是我还是希望能把这一块弄清晰一点。

要是有空的话还是帮忙测试一下吧,先发出去试试水,写都写了,说不要就不要也不好。

yangfl commented 4 months ago

行,过几天有设备看看

yangfl commented 4 months ago

638ca8b96876f302fe4eb4f41ef570ac8b5e9f51

[ 15.847568] platform f9890000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@124/usb2phy/phy@1 [ 15.862021] platform f9930000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@158/usb2phy/phy@0 [ 15.876474] platform f9880000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@124/usb2phy/phy@1 [ 15.890921] platform f9920000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@158/usb2phy/phy@0

185264646 commented 4 months ago

638ca8b

[ 15.847568] platform f9890000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@124/usb2phy/phy@1 [ 15.862021] platform f9930000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@158/usb2phy/phy@0 [ 15.876474] platform f9880000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@124/usb2phy/phy@1 [ 15.890921] platform f9920000.usb: deferred probe pending: platform: wait for supplier /soc@f0000000/peripheral-controller@8a20000/usb2-phy-bus@158/usb2phy/phy@0

能找一找原因吗?尤其是帮忙看看bus驱动probe是否成功了。

yangfl commented 4 months ago

大概是clocks没开

185264646 commented 4 months ago

大概是clocks没开

哪一个clock呢?可以把相关的dt node发出来研究一下

yangfl commented 4 months ago

上面那个commit

185264646 commented 4 months ago

@yangfl 现在这个版本如何呢?驱动本身的修改应该对于mv100和cv200是无感知的,而且应该更容易说服binding的maintainer。

yangfl commented 4 months ago

这个应该是没有任何问题