TJA1120ドライバ(Linux 6.6用)をLinux 5.15に適用する際に、エラーコード-110のソフトウェアリセット問題が発生しました。原因と解決方法がわかりません。
こちらの投稿「NXP_C45_TJA11XX ドライバのソフトリセット問題」を参考に、nxp_c45_soft_reset を修正しましたが、うまくいきませんでした。コードは以下の通りです。
static int nxp_c45_soft_reset(struct phy_device *phydev)
{
int ret;
ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, VEND1_DEVICE_CONTROL,
DEVICE_CONTROL_RESET);
if (ret)
return ret;
usleep_range(2000, 2050);
return phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1,
VEND1_DEVICE_CONTROL, ret,
!(ret & DEVICE_CONTROL_RESET), 20000,
240000, true);
}:エラーメッセージ:
[6.188117] sunxi-mdio 4500048.mdio0:sunxi_mdio_probe() 開始
[6.265731] sunxi-mdio 4500048.mdio0:PHY ID: 0x001bb031、アドレス: 0x1b、デバイス: 4500048.mdio0-mii:1b、ドライバー: NXP C45 TJA1120
[6.278218] sunxi-mdio 4500048.mdio0:sunxi_mdio_probe() 成功
[ 47.166283] NXP C45 TJA1120 4500048.mdio0-mii:1b:nxp_c45_soft_reset 失敗: -110
こんにちは、
私の知る限り、tja1120 は 5.15 ではサポートされていません。それで、最新の BSP からドライバをバックポートしましたか?動作していますか?
よろしくお願いします!
よろしくお願いいたします。
こんにちは@miipoさん、
私がサポートできるのはデバイスの観点からのみです。
エラー コードが phy_write_mmd によって生成されたのか、それとも phy_read_mmd_poll_timeout によって生成されたのかをCAN区別できますか?
usleep_range の時間を増やしてみたことはありますか?
よろしくお願いいたします。
パベル