* [bug report] phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support [not found] <caa37f28-a2e8-4e0a-a9ce-a365ce805e4b@stanley.mountain> @ 2026-02-06 13:39 ` Dan Carpenter 2026-02-17 15:27 ` Konrad Dybcio 2026-02-06 13:40 ` [bug report] phy: apple: Add Apple Type-C PHY Dan Carpenter 1 sibling, 1 reply; 6+ messages in thread From: Dan Carpenter @ 2026-02-06 13:39 UTC (permalink / raw) To: Xiangxu Yin; +Cc: Neil Armstrong, linux-arm-msm, linux-phy, linux-kernel [ Smatch checking is paused while we raise funding. #SadFace https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ] Hello Xiangxu Yin, Commit 81791c45c8e0 ("phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support") from Dec 15, 2025 (linux-next), leads to the following Smatch static checker warning: drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:803 qmp_v2_configure_dp_swing() index hardmax out of bounds '(*cfg->swing_tbl)[v_level]' size=4 max='4' rl='0-4' drivers/phy/qualcomm/phy-qcom-qmp-usbc.c 777 static int qmp_v2_configure_dp_swing(struct qmp_usbc *qmp) 778 { 779 const struct qmp_phy_cfg *cfg = qmp->cfg; 780 const struct phy_configure_opts_dp *dp_opts = &qmp->dp_opts; 781 void __iomem *tx = qmp->dp_tx; 782 void __iomem *tx2 = qmp->dp_tx2; 783 unsigned int v_level = 0, p_level = 0; 784 u8 voltage_swing_cfg, pre_emphasis_cfg; 785 int i; 786 787 if (dp_opts->lanes > 4) { 788 dev_err(qmp->dev, "Invalid lane_num(%d)\n", dp_opts->lanes); 789 return -EINVAL; 790 } 791 792 for (i = 0; i < dp_opts->lanes; i++) { 793 v_level = max(v_level, dp_opts->voltage[i]); 794 p_level = max(p_level, dp_opts->pre[i]); 795 } 796 797 if (v_level > 4 || p_level > 4) { These should be >= 4 instead of >. 798 dev_err(qmp->dev, "Invalid v(%d) | p(%d) level)\n", 799 v_level, p_level); 800 return -EINVAL; 801 } 802 --> 803 voltage_swing_cfg = (*cfg->swing_tbl)[v_level][p_level]; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This is a 4x4 array. 804 pre_emphasis_cfg = (*cfg->pre_emphasis_tbl)[v_level][p_level]; 805 806 voltage_swing_cfg |= DP_PHY_TXn_TX_DRV_LVL_MUX_EN; 807 pre_emphasis_cfg |= DP_PHY_TXn_TX_EMP_POST1_LVL_MUX_EN; 808 809 if (voltage_swing_cfg == 0xff && pre_emphasis_cfg == 0xff) 810 return -EINVAL; 811 812 writel(voltage_swing_cfg, tx + QSERDES_V2_TX_TX_DRV_LVL); 813 writel(pre_emphasis_cfg, tx + QSERDES_V2_TX_TX_EMP_POST1_LVL); 814 writel(voltage_swing_cfg, tx2 + QSERDES_V2_TX_TX_DRV_LVL); 815 writel(pre_emphasis_cfg, tx2 + QSERDES_V2_TX_TX_EMP_POST1_LVL); 816 817 return 0; 818 } regards, dan carpenter -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [bug report] phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support 2026-02-06 13:39 ` [bug report] phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support Dan Carpenter @ 2026-02-17 15:27 ` Konrad Dybcio 2026-02-27 5:11 ` Xiangxu Yin 0 siblings, 1 reply; 6+ messages in thread From: Konrad Dybcio @ 2026-02-17 15:27 UTC (permalink / raw) To: Dan Carpenter, Xiangxu Yin Cc: Neil Armstrong, linux-arm-msm, linux-phy, linux-kernel, Dmitry Baryshkov On 2/6/26 2:39 PM, Dan Carpenter wrote: > [ Smatch checking is paused while we raise funding. #SadFace > https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ] > > Hello Xiangxu Yin, > > Commit 81791c45c8e0 ("phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY > config and DP mode support") from Dec 15, 2025 (linux-next), leads to > the following Smatch static checker warning: > > drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:803 qmp_v2_configure_dp_swing() > index hardmax out of bounds '(*cfg->swing_tbl)[v_level]' size=4 max='4' rl='0-4' > > drivers/phy/qualcomm/phy-qcom-qmp-usbc.c > 777 static int qmp_v2_configure_dp_swing(struct qmp_usbc *qmp) > 778 { > 779 const struct qmp_phy_cfg *cfg = qmp->cfg; > 780 const struct phy_configure_opts_dp *dp_opts = &qmp->dp_opts; > 781 void __iomem *tx = qmp->dp_tx; > 782 void __iomem *tx2 = qmp->dp_tx2; > 783 unsigned int v_level = 0, p_level = 0; > 784 u8 voltage_swing_cfg, pre_emphasis_cfg; > 785 int i; > 786 > 787 if (dp_opts->lanes > 4) { > 788 dev_err(qmp->dev, "Invalid lane_num(%d)\n", dp_opts->lanes); > 789 return -EINVAL; > 790 } > 791 > 792 for (i = 0; i < dp_opts->lanes; i++) { > 793 v_level = max(v_level, dp_opts->voltage[i]); > 794 p_level = max(p_level, dp_opts->pre[i]); > 795 } > 796 > 797 if (v_level > 4 || p_level > 4) { > > These should be >= 4 instead of >. > > 798 dev_err(qmp->dev, "Invalid v(%d) | p(%d) level)\n", > 799 v_level, p_level); > 800 return -EINVAL; > 801 } > 802 > --> 803 voltage_swing_cfg = (*cfg->swing_tbl)[v_level][p_level]; > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > This is a 4x4 array. Thanks Dan for the report Xiangxu, are you planning to send a patch to address that? Konrad -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [bug report] phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support 2026-02-17 15:27 ` Konrad Dybcio @ 2026-02-27 5:11 ` Xiangxu Yin 0 siblings, 0 replies; 6+ messages in thread From: Xiangxu Yin @ 2026-02-27 5:11 UTC (permalink / raw) To: Konrad Dybcio, Dan Carpenter Cc: Neil Armstrong, linux-arm-msm, linux-phy, linux-kernel, Dmitry Baryshkov, li.liu On 2/17/2026 11:27 PM, Konrad Dybcio wrote: > On 2/6/26 2:39 PM, Dan Carpenter wrote: >> [ Smatch checking is paused while we raise funding. #SadFace >> https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ] >> >> Hello Xiangxu Yin, >> >> Commit 81791c45c8e0 ("phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY >> config and DP mode support") from Dec 15, 2025 (linux-next), leads to >> the following Smatch static checker warning: >> >> drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:803 qmp_v2_configure_dp_swing() >> index hardmax out of bounds '(*cfg->swing_tbl)[v_level]' size=4 max='4' rl='0-4' >> >> drivers/phy/qualcomm/phy-qcom-qmp-usbc.c >> 777 static int qmp_v2_configure_dp_swing(struct qmp_usbc *qmp) >> 778 { >> 779 const struct qmp_phy_cfg *cfg = qmp->cfg; >> 780 const struct phy_configure_opts_dp *dp_opts = &qmp->dp_opts; >> 781 void __iomem *tx = qmp->dp_tx; >> 782 void __iomem *tx2 = qmp->dp_tx2; >> 783 unsigned int v_level = 0, p_level = 0; >> 784 u8 voltage_swing_cfg, pre_emphasis_cfg; >> 785 int i; >> 786 >> 787 if (dp_opts->lanes > 4) { >> 788 dev_err(qmp->dev, "Invalid lane_num(%d)\n", dp_opts->lanes); >> 789 return -EINVAL; >> 790 } >> 791 >> 792 for (i = 0; i < dp_opts->lanes; i++) { >> 793 v_level = max(v_level, dp_opts->voltage[i]); >> 794 p_level = max(p_level, dp_opts->pre[i]); >> 795 } >> 796 >> 797 if (v_level > 4 || p_level > 4) { >> >> These should be >= 4 instead of >. >> >> 798 dev_err(qmp->dev, "Invalid v(%d) | p(%d) level)\n", >> 799 v_level, p_level); >> 800 return -EINVAL; >> 801 } >> 802 >> --> 803 voltage_swing_cfg = (*cfg->swing_tbl)[v_level][p_level]; >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> This is a 4x4 array. > Thanks Dan for the report > > Xiangxu, are you planning to send a patch to address that? > > Konrad Thanks for the notice, Dan & Konrad. I just got back from a long leave and will submit the relevant patches as soon as possible. -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy ^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug report] phy: apple: Add Apple Type-C PHY [not found] <caa37f28-a2e8-4e0a-a9ce-a365ce805e4b@stanley.mountain> 2026-02-06 13:39 ` [bug report] phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support Dan Carpenter @ 2026-02-06 13:40 ` Dan Carpenter 2026-02-06 21:47 ` Janne Grunau 1 sibling, 1 reply; 6+ messages in thread From: Dan Carpenter @ 2026-02-06 13:40 UTC (permalink / raw) To: Sven Peter Cc: Neal Gompa, Neil Armstrong, asahi, linux-arm-kernel, linux-phy, linux-kernel [ Smatch checking is paused while we raise funding. #SadFace https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ] Hello Sven Peter, Commit 8e98ca1e74db ("phy: apple: Add Apple Type-C PHY") from Dec 14, 2025 (linux-next), leads to the following Smatch static checker warning: drivers/phy/apple/atc.c:2209 atcphy_map_resources() warn: 'resources[i]->addr' isn't an ERR_PTR drivers/phy/apple/atc.c 2191 static int atcphy_map_resources(struct platform_device *pdev, struct apple_atcphy *atcphy) 2192 { 2193 struct { 2194 const char *name; 2195 void __iomem **addr; 2196 struct resource **res; 2197 } resources[] = { 2198 { "core", &atcphy->regs.core, &atcphy->res.core }, 2199 { "lpdptx", &atcphy->regs.lpdptx, NULL }, 2200 { "axi2af", &atcphy->regs.axi2af, &atcphy->res.axi2af }, 2201 { "usb2phy", &atcphy->regs.usb2phy, NULL }, 2202 { "pipehandler", &atcphy->regs.pipehandler, NULL }, 2203 }; 2204 struct resource *res; 2205 2206 for (int i = 0; i < ARRAY_SIZE(resources); i++) { 2207 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, resources[i].name); 2208 *resources[i].addr = devm_ioremap_resource(&pdev->dev, res); --> 2209 if (IS_ERR(resources[i].addr)) This is checking the wrong variable. The * is missing. if (IS_ERR(*resources[i].addr)) { 2210 return dev_err_probe(atcphy->dev, PTR_ERR(resources[i].addr), 2211 "Unable to map %s regs", resources[i].name); 2212 2213 if (resources[i].res) 2214 *resources[i].res = res; 2215 } 2216 2217 return 0; 2218 } regards, dan carpenter -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [bug report] phy: apple: Add Apple Type-C PHY 2026-02-06 13:40 ` [bug report] phy: apple: Add Apple Type-C PHY Dan Carpenter @ 2026-02-06 21:47 ` Janne Grunau 2026-02-06 21:48 ` Sven Peter 0 siblings, 1 reply; 6+ messages in thread From: Janne Grunau @ 2026-02-06 21:47 UTC (permalink / raw) To: Dan Carpenter Cc: Sven Peter, Neal Gompa, Neil Armstrong, asahi, linux-arm-kernel, linux-phy, linux-kernel On Fri, Feb 06, 2026 at 04:40:47PM +0300, Dan Carpenter wrote: > [ Smatch checking is paused while we raise funding. #SadFace > https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ] This is unfortunate, there have been useful bug reports. > Commit 8e98ca1e74db ("phy: apple: Add Apple Type-C PHY") from Dec 14, > 2025 (linux-next), leads to the following Smatch static checker > warning: > > drivers/phy/apple/atc.c:2209 atcphy_map_resources() > warn: 'resources[i]->addr' isn't an ERR_PTR > > drivers/phy/apple/atc.c > 2191 static int atcphy_map_resources(struct platform_device *pdev, struct apple_atcphy *atcphy) > 2192 { > 2193 struct { > 2194 const char *name; > 2195 void __iomem **addr; > 2196 struct resource **res; > 2197 } resources[] = { > 2198 { "core", &atcphy->regs.core, &atcphy->res.core }, > 2199 { "lpdptx", &atcphy->regs.lpdptx, NULL }, > 2200 { "axi2af", &atcphy->regs.axi2af, &atcphy->res.axi2af }, > 2201 { "usb2phy", &atcphy->regs.usb2phy, NULL }, > 2202 { "pipehandler", &atcphy->regs.pipehandler, NULL }, > 2203 }; > 2204 struct resource *res; > 2205 > 2206 for (int i = 0; i < ARRAY_SIZE(resources); i++) { > 2207 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, resources[i].name); > 2208 *resources[i].addr = devm_ioremap_resource(&pdev->dev, res); > --> 2209 if (IS_ERR(resources[i].addr)) > > This is checking the wrong variable. The * is missing. > if (IS_ERR(*resources[i].addr)) { This issue was identified by testing and is fixed in next by commit 7d55b44e2be1 ("phy: apple: atc: Actually check return value of devm_apple_tunable_parse"). https://lore.kernel.org/all/20260104-atcphy-tunable-fix-v2-1-84e5c2a57aaa@kernel.org/ Thanks for the report Janne -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [bug report] phy: apple: Add Apple Type-C PHY 2026-02-06 21:47 ` Janne Grunau @ 2026-02-06 21:48 ` Sven Peter 0 siblings, 0 replies; 6+ messages in thread From: Sven Peter @ 2026-02-06 21:48 UTC (permalink / raw) To: Janne Grunau, Dan Carpenter Cc: Neal Gompa, Neil Armstrong, asahi, linux-arm-kernel, linux-phy, linux-kernel On 06.02.26 22:47, Janne Grunau wrote: > On Fri, Feb 06, 2026 at 04:40:47PM +0300, Dan Carpenter wrote: >> [ Smatch checking is paused while we raise funding. #SadFace >> https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ -dan ] > > This is unfortunate, there have been useful bug reports. > >> Commit 8e98ca1e74db ("phy: apple: Add Apple Type-C PHY") from Dec 14, >> 2025 (linux-next), leads to the following Smatch static checker >> warning: >> >> drivers/phy/apple/atc.c:2209 atcphy_map_resources() >> warn: 'resources[i]->addr' isn't an ERR_PTR >> >> drivers/phy/apple/atc.c >> 2191 static int atcphy_map_resources(struct platform_device *pdev, struct apple_atcphy *atcphy) >> 2192 { >> 2193 struct { >> 2194 const char *name; >> 2195 void __iomem **addr; >> 2196 struct resource **res; >> 2197 } resources[] = { >> 2198 { "core", &atcphy->regs.core, &atcphy->res.core }, >> 2199 { "lpdptx", &atcphy->regs.lpdptx, NULL }, >> 2200 { "axi2af", &atcphy->regs.axi2af, &atcphy->res.axi2af }, >> 2201 { "usb2phy", &atcphy->regs.usb2phy, NULL }, >> 2202 { "pipehandler", &atcphy->regs.pipehandler, NULL }, >> 2203 }; >> 2204 struct resource *res; >> 2205 >> 2206 for (int i = 0; i < ARRAY_SIZE(resources); i++) { >> 2207 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, resources[i].name); >> 2208 *resources[i].addr = devm_ioremap_resource(&pdev->dev, res); >> --> 2209 if (IS_ERR(resources[i].addr)) >> >> This is checking the wrong variable. The * is missing. >> if (IS_ERR(*resources[i].addr)) { > > This issue was identified by testing and is fixed in next by commit > 7d55b44e2be1 ("phy: apple: atc: Actually check return value of > devm_apple_tunable_parse"). > > https://lore.kernel.org/all/20260104-atcphy-tunable-fix-v2-1-84e5c2a57aaa@kernel.org/ I think I actually messed this up *twice*! Once for the tunables and once again for the resources here :( Sven -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-02-27 5:11 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <caa37f28-a2e8-4e0a-a9ce-a365ce805e4b@stanley.mountain>
2026-02-06 13:39 ` [bug report] phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support Dan Carpenter
2026-02-17 15:27 ` Konrad Dybcio
2026-02-27 5:11 ` Xiangxu Yin
2026-02-06 13:40 ` [bug report] phy: apple: Add Apple Type-C PHY Dan Carpenter
2026-02-06 21:47 ` Janne Grunau
2026-02-06 21:48 ` Sven Peter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox