* [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
@ 2025-04-05 17:43 ` Pengyu Luo
0 siblings, 0 replies; 9+ messages in thread
From: Pengyu Luo @ 2025-04-05 17:43 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Vinod Koul, Kishon Vijay Abraham I
Cc: Pengyu Luo, linux-arm-msm, devicetree, linux-kernel, linux-phy
In downstream tree, many registers need to be overrided, it varies
from devices and platforms, not only HS trasmit amplitude(0x51),
HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
The device I plan to upstream also uses it, so I write the patch for
it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
in downstream, some crd, mtp, htk devices also use it, I have no
such device, don't set it for them.
Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
---
.../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
.../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
2 files changed, 72 insertions(+), 19 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
index d90dc7b37..99f5fd32c 100644
--- a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
+++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
@@ -673,9 +673,8 @@ cam_pwr_a_cs: cam-pwr-a-cs-state {
};
&pm8550b_eusb2_repeater {
- qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>;
- qcom,tune-usb2-amplitude = /bits/ 8 <0xf>;
- qcom,tune-usb2-preem = /bits/ 8 <0x7>;
+ qcom,param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
+ qcom,host-param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
vdd18-supply = <&pm8550_l15>;
vdd3-supply = <&pm8550_l5>;
};
diff --git a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
index 6bd1b3c75..151e93cd0 100644
--- a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
+++ b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
@@ -76,6 +76,11 @@ struct eusb2_repeater {
const struct eusb2_repeater_cfg *cfg;
u32 base;
enum phy_mode mode;
+
+ u32 *param_override_seq;
+ u32 *host_param_override_seq;
+ u8 param_override_seq_cnt;
+ u8 host_param_override_seq_cnt;
};
static const char * const pm8550b_vreg_l[] = {
@@ -108,6 +113,63 @@ static const struct eusb2_repeater_cfg smb2360_eusb2_cfg = {
.num_vregs = ARRAY_SIZE(pm8550b_vreg_l),
};
+static void eusb2_repeater_write_overrides(struct eusb2_repeater *rptr,
+ u32 *seq, u8 cnt)
+{
+ int i;
+
+ for (i = 0; i < cnt; i += 2)
+ regmap_write(rptr->regmap, rptr->base + seq[i], seq[i + 1]);
+}
+
+static int eusb2_repeater_read_overrides(struct device *dev, const char *prop,
+ u32 **seq, u8 *seq_cnt)
+{
+ int num_elem, ret;
+
+ num_elem = of_property_count_elems_of_size(dev->of_node, prop, sizeof(**seq));
+ if (num_elem > 0) {
+ if (num_elem % 2) {
+ dev_err(dev, "invalid len for %s\n", prop);
+ return -EINVAL;
+ }
+
+ *seq_cnt = num_elem;
+ *seq = devm_kcalloc(dev, num_elem, sizeof(**seq), GFP_KERNEL);
+ if (!*seq)
+ return -ENOMEM;
+
+ ret = of_property_read_u32_array(dev->of_node, prop, *seq, num_elem);
+ if (ret) {
+ dev_err(dev, "%s read failed %d\n", prop, ret);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
+static int eusb2_repeater_parse_dt(struct eusb2_repeater *rptr)
+{
+ int ret;
+
+ ret = of_property_read_u32(rptr->dev->of_node, "reg", &rptr->base);
+ if (ret < 0)
+ return ret;
+
+ ret = eusb2_repeater_read_overrides(rptr->dev, "qcom,param-override-seq",
+ &rptr->param_override_seq,
+ &rptr->param_override_seq_cnt);
+ if (ret < 0)
+ return ret;
+
+ ret = eusb2_repeater_read_overrides(rptr->dev, "qcom,host-param-override-seq",
+ &rptr->host_param_override_seq,
+ &rptr->host_param_override_seq_cnt);
+
+ return ret;
+}
+
static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
{
int num = rptr->cfg->num_vregs;
@@ -127,20 +189,12 @@ static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
static int eusb2_repeater_init(struct phy *phy)
{
struct eusb2_repeater *rptr = phy_get_drvdata(phy);
- struct device_node *np = rptr->dev->of_node;
struct regmap *regmap = rptr->regmap;
const u32 *init_tbl = rptr->cfg->init_tbl;
- u8 tune_usb2_preem = init_tbl[TUNE_USB2_PREEM];
- u8 tune_hsdisc = init_tbl[TUNE_HSDISC];
- u8 tune_iusb2 = init_tbl[TUNE_IUSB2];
u32 base = rptr->base;
u32 val;
int ret;
- of_property_read_u8(np, "qcom,tune-usb2-amplitude", &tune_iusb2);
- of_property_read_u8(np, "qcom,tune-usb2-disc-thres", &tune_hsdisc);
- of_property_read_u8(np, "qcom,tune-usb2-preem", &tune_usb2_preem);
-
ret = regulator_bulk_enable(rptr->cfg->num_vregs, rptr->vregs);
if (ret)
return ret;
@@ -156,10 +210,9 @@ static int eusb2_repeater_init(struct phy *phy)
regmap_write(regmap, base + EUSB2_TUNE_SQUELCH_U, init_tbl[TUNE_SQUELCH_U]);
regmap_write(regmap, base + EUSB2_TUNE_RES_FSDIF, init_tbl[TUNE_RES_FSDIF]);
regmap_write(regmap, base + EUSB2_TUNE_USB2_CROSSOVER, init_tbl[TUNE_USB2_CROSSOVER]);
-
- regmap_write(regmap, base + EUSB2_TUNE_USB2_PREEM, tune_usb2_preem);
- regmap_write(regmap, base + EUSB2_TUNE_HSDISC, tune_hsdisc);
- regmap_write(regmap, base + EUSB2_TUNE_IUSB2, tune_iusb2);
+ regmap_write(regmap, base + EUSB2_TUNE_USB2_PREEM, init_tbl[TUNE_USB2_PREEM]);
+ regmap_write(regmap, base + EUSB2_TUNE_HSDISC, init_tbl[TUNE_HSDISC]);
+ regmap_write(regmap, base + EUSB2_TUNE_IUSB2, init_tbl[TUNE_IUSB2]);
ret = regmap_read_poll_timeout(regmap, base + EUSB2_RPTR_STATUS, val, val & RPTR_OK, 10, 5);
if (ret)
@@ -177,6 +230,8 @@ static int eusb2_repeater_set_mode(struct phy *phy,
switch (mode) {
case PHY_MODE_USB_HOST:
+ eusb2_repeater_write_overrides(rptr, rptr->host_param_override_seq,
+ rptr->host_param_override_seq_cnt);
/*
* CM.Lx is prohibited when repeater is already into Lx state as
* per eUSB 1.2 Spec. Below implement software workaround until
@@ -186,6 +241,8 @@ static int eusb2_repeater_set_mode(struct phy *phy,
regmap_write(regmap, base + EUSB2_FORCE_VAL_5, V_CLK_19P2M_EN);
break;
case PHY_MODE_USB_DEVICE:
+ eusb2_repeater_write_overrides(rptr, rptr->param_override_seq,
+ rptr->param_override_seq_cnt);
/*
* In device mode clear host mode related workaround as there
* is no repeater reset available, and enable/disable of
@@ -222,7 +279,6 @@ static int eusb2_repeater_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct phy_provider *phy_provider;
struct device_node *np = dev->of_node;
- u32 res;
int ret;
rptr = devm_kzalloc(dev, sizeof(*rptr), GFP_KERNEL);
@@ -240,12 +296,10 @@ static int eusb2_repeater_probe(struct platform_device *pdev)
if (!rptr->regmap)
return -ENODEV;
- ret = of_property_read_u32(np, "reg", &res);
+ ret = eusb2_repeater_parse_dt(rptr);
if (ret < 0)
return ret;
- rptr->base = res;
-
ret = eusb2_repeater_init_vregs(rptr);
if (ret < 0) {
dev_err(dev, "unable to get supplies\n");
--
2.49.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
@ 2025-04-05 17:43 ` Pengyu Luo
0 siblings, 0 replies; 9+ messages in thread
From: Pengyu Luo @ 2025-04-05 17:43 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Vinod Koul, Kishon Vijay Abraham I
Cc: Pengyu Luo, linux-arm-msm, devicetree, linux-kernel, linux-phy
In downstream tree, many registers need to be overrided, it varies
from devices and platforms, not only HS trasmit amplitude(0x51),
HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
The device I plan to upstream also uses it, so I write the patch for
it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
in downstream, some crd, mtp, htk devices also use it, I have no
such device, don't set it for them.
Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
---
.../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
.../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
2 files changed, 72 insertions(+), 19 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
index d90dc7b37..99f5fd32c 100644
--- a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
+++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
@@ -673,9 +673,8 @@ cam_pwr_a_cs: cam-pwr-a-cs-state {
};
&pm8550b_eusb2_repeater {
- qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>;
- qcom,tune-usb2-amplitude = /bits/ 8 <0xf>;
- qcom,tune-usb2-preem = /bits/ 8 <0x7>;
+ qcom,param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
+ qcom,host-param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
vdd18-supply = <&pm8550_l15>;
vdd3-supply = <&pm8550_l5>;
};
diff --git a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
index 6bd1b3c75..151e93cd0 100644
--- a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
+++ b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
@@ -76,6 +76,11 @@ struct eusb2_repeater {
const struct eusb2_repeater_cfg *cfg;
u32 base;
enum phy_mode mode;
+
+ u32 *param_override_seq;
+ u32 *host_param_override_seq;
+ u8 param_override_seq_cnt;
+ u8 host_param_override_seq_cnt;
};
static const char * const pm8550b_vreg_l[] = {
@@ -108,6 +113,63 @@ static const struct eusb2_repeater_cfg smb2360_eusb2_cfg = {
.num_vregs = ARRAY_SIZE(pm8550b_vreg_l),
};
+static void eusb2_repeater_write_overrides(struct eusb2_repeater *rptr,
+ u32 *seq, u8 cnt)
+{
+ int i;
+
+ for (i = 0; i < cnt; i += 2)
+ regmap_write(rptr->regmap, rptr->base + seq[i], seq[i + 1]);
+}
+
+static int eusb2_repeater_read_overrides(struct device *dev, const char *prop,
+ u32 **seq, u8 *seq_cnt)
+{
+ int num_elem, ret;
+
+ num_elem = of_property_count_elems_of_size(dev->of_node, prop, sizeof(**seq));
+ if (num_elem > 0) {
+ if (num_elem % 2) {
+ dev_err(dev, "invalid len for %s\n", prop);
+ return -EINVAL;
+ }
+
+ *seq_cnt = num_elem;
+ *seq = devm_kcalloc(dev, num_elem, sizeof(**seq), GFP_KERNEL);
+ if (!*seq)
+ return -ENOMEM;
+
+ ret = of_property_read_u32_array(dev->of_node, prop, *seq, num_elem);
+ if (ret) {
+ dev_err(dev, "%s read failed %d\n", prop, ret);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
+static int eusb2_repeater_parse_dt(struct eusb2_repeater *rptr)
+{
+ int ret;
+
+ ret = of_property_read_u32(rptr->dev->of_node, "reg", &rptr->base);
+ if (ret < 0)
+ return ret;
+
+ ret = eusb2_repeater_read_overrides(rptr->dev, "qcom,param-override-seq",
+ &rptr->param_override_seq,
+ &rptr->param_override_seq_cnt);
+ if (ret < 0)
+ return ret;
+
+ ret = eusb2_repeater_read_overrides(rptr->dev, "qcom,host-param-override-seq",
+ &rptr->host_param_override_seq,
+ &rptr->host_param_override_seq_cnt);
+
+ return ret;
+}
+
static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
{
int num = rptr->cfg->num_vregs;
@@ -127,20 +189,12 @@ static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
static int eusb2_repeater_init(struct phy *phy)
{
struct eusb2_repeater *rptr = phy_get_drvdata(phy);
- struct device_node *np = rptr->dev->of_node;
struct regmap *regmap = rptr->regmap;
const u32 *init_tbl = rptr->cfg->init_tbl;
- u8 tune_usb2_preem = init_tbl[TUNE_USB2_PREEM];
- u8 tune_hsdisc = init_tbl[TUNE_HSDISC];
- u8 tune_iusb2 = init_tbl[TUNE_IUSB2];
u32 base = rptr->base;
u32 val;
int ret;
- of_property_read_u8(np, "qcom,tune-usb2-amplitude", &tune_iusb2);
- of_property_read_u8(np, "qcom,tune-usb2-disc-thres", &tune_hsdisc);
- of_property_read_u8(np, "qcom,tune-usb2-preem", &tune_usb2_preem);
-
ret = regulator_bulk_enable(rptr->cfg->num_vregs, rptr->vregs);
if (ret)
return ret;
@@ -156,10 +210,9 @@ static int eusb2_repeater_init(struct phy *phy)
regmap_write(regmap, base + EUSB2_TUNE_SQUELCH_U, init_tbl[TUNE_SQUELCH_U]);
regmap_write(regmap, base + EUSB2_TUNE_RES_FSDIF, init_tbl[TUNE_RES_FSDIF]);
regmap_write(regmap, base + EUSB2_TUNE_USB2_CROSSOVER, init_tbl[TUNE_USB2_CROSSOVER]);
-
- regmap_write(regmap, base + EUSB2_TUNE_USB2_PREEM, tune_usb2_preem);
- regmap_write(regmap, base + EUSB2_TUNE_HSDISC, tune_hsdisc);
- regmap_write(regmap, base + EUSB2_TUNE_IUSB2, tune_iusb2);
+ regmap_write(regmap, base + EUSB2_TUNE_USB2_PREEM, init_tbl[TUNE_USB2_PREEM]);
+ regmap_write(regmap, base + EUSB2_TUNE_HSDISC, init_tbl[TUNE_HSDISC]);
+ regmap_write(regmap, base + EUSB2_TUNE_IUSB2, init_tbl[TUNE_IUSB2]);
ret = regmap_read_poll_timeout(regmap, base + EUSB2_RPTR_STATUS, val, val & RPTR_OK, 10, 5);
if (ret)
@@ -177,6 +230,8 @@ static int eusb2_repeater_set_mode(struct phy *phy,
switch (mode) {
case PHY_MODE_USB_HOST:
+ eusb2_repeater_write_overrides(rptr, rptr->host_param_override_seq,
+ rptr->host_param_override_seq_cnt);
/*
* CM.Lx is prohibited when repeater is already into Lx state as
* per eUSB 1.2 Spec. Below implement software workaround until
@@ -186,6 +241,8 @@ static int eusb2_repeater_set_mode(struct phy *phy,
regmap_write(regmap, base + EUSB2_FORCE_VAL_5, V_CLK_19P2M_EN);
break;
case PHY_MODE_USB_DEVICE:
+ eusb2_repeater_write_overrides(rptr, rptr->param_override_seq,
+ rptr->param_override_seq_cnt);
/*
* In device mode clear host mode related workaround as there
* is no repeater reset available, and enable/disable of
@@ -222,7 +279,6 @@ static int eusb2_repeater_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct phy_provider *phy_provider;
struct device_node *np = dev->of_node;
- u32 res;
int ret;
rptr = devm_kzalloc(dev, sizeof(*rptr), GFP_KERNEL);
@@ -240,12 +296,10 @@ static int eusb2_repeater_probe(struct platform_device *pdev)
if (!rptr->regmap)
return -ENODEV;
- ret = of_property_read_u32(np, "reg", &res);
+ ret = eusb2_repeater_parse_dt(rptr);
if (ret < 0)
return ret;
- rptr->base = res;
-
ret = eusb2_repeater_init_vregs(rptr);
if (ret < 0) {
dev_err(dev, "unable to get supplies\n");
--
2.49.0
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
2025-04-05 17:43 ` Pengyu Luo
@ 2025-04-06 12:21 ` Krzysztof Kozlowski
-1 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-06 12:21 UTC (permalink / raw)
To: Pengyu Luo, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Vinod Koul,
Kishon Vijay Abraham I
Cc: linux-arm-msm, devicetree, linux-kernel, linux-phy
On 05/04/2025 19:43, Pengyu Luo wrote:
> In downstream tree, many registers need to be overrided, it varies
> from devices and platforms, not only HS trasmit amplitude(0x51),
> HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
>
> The device I plan to upstream also uses it, so I write the patch for
> it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
>
> In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
> in downstream, some crd, mtp, htk devices also use it, I have no
> such device, don't set it for them.
>
> Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
> ---
> .../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
> .../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
DTS is always separate patch.
> 2 files changed, 72 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> index d90dc7b37..99f5fd32c 100644
> --- a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> @@ -673,9 +673,8 @@ cam_pwr_a_cs: cam-pwr-a-cs-state {
> };
>
> &pm8550b_eusb2_repeater {
> - qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>;
> - qcom,tune-usb2-amplitude = /bits/ 8 <0xf>;
> - qcom,tune-usb2-preem = /bits/ 8 <0x7>;
> + qcom,param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
> + qcom,host-param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
There are no such properties.
It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).
Maybe you need to update your dtschema and yamllint. Don't rely on
distro packages for dtschema and be sure you are using the latest
released dtschema.
> vdd18-supply = <&pm8550_l15>;
> vdd3-supply = <&pm8550_l5>;
> };
...
> +
> static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
> {
> int num = rptr->cfg->num_vregs;
> @@ -127,20 +189,12 @@ static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
> static int eusb2_repeater_init(struct phy *phy)
> {
> struct eusb2_repeater *rptr = phy_get_drvdata(phy);
> - struct device_node *np = rptr->dev->of_node;
> struct regmap *regmap = rptr->regmap;
> const u32 *init_tbl = rptr->cfg->init_tbl;
> - u8 tune_usb2_preem = init_tbl[TUNE_USB2_PREEM];
> - u8 tune_hsdisc = init_tbl[TUNE_HSDISC];
> - u8 tune_iusb2 = init_tbl[TUNE_IUSB2];
> u32 base = rptr->base;
> u32 val;
> int ret;
>
> - of_property_read_u8(np, "qcom,tune-usb2-amplitude", &tune_iusb2);
> - of_property_read_u8(np, "qcom,tune-usb2-disc-thres", &tune_hsdisc);
> - of_property_read_u8(np, "qcom,tune-usb2-preem", &tune_usb2_preem);
NAK, that's an ABI break.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
@ 2025-04-06 12:21 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-06 12:21 UTC (permalink / raw)
To: Pengyu Luo, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Vinod Koul,
Kishon Vijay Abraham I
Cc: linux-arm-msm, devicetree, linux-kernel, linux-phy
On 05/04/2025 19:43, Pengyu Luo wrote:
> In downstream tree, many registers need to be overrided, it varies
> from devices and platforms, not only HS trasmit amplitude(0x51),
> HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
>
> The device I plan to upstream also uses it, so I write the patch for
> it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
>
> In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
> in downstream, some crd, mtp, htk devices also use it, I have no
> such device, don't set it for them.
>
> Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
> ---
> .../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
> .../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
DTS is always separate patch.
> 2 files changed, 72 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> index d90dc7b37..99f5fd32c 100644
> --- a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> @@ -673,9 +673,8 @@ cam_pwr_a_cs: cam-pwr-a-cs-state {
> };
>
> &pm8550b_eusb2_repeater {
> - qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>;
> - qcom,tune-usb2-amplitude = /bits/ 8 <0xf>;
> - qcom,tune-usb2-preem = /bits/ 8 <0x7>;
> + qcom,param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
> + qcom,host-param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
There are no such properties.
It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).
Maybe you need to update your dtschema and yamllint. Don't rely on
distro packages for dtschema and be sure you are using the latest
released dtschema.
> vdd18-supply = <&pm8550_l15>;
> vdd3-supply = <&pm8550_l5>;
> };
...
> +
> static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
> {
> int num = rptr->cfg->num_vregs;
> @@ -127,20 +189,12 @@ static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr)
> static int eusb2_repeater_init(struct phy *phy)
> {
> struct eusb2_repeater *rptr = phy_get_drvdata(phy);
> - struct device_node *np = rptr->dev->of_node;
> struct regmap *regmap = rptr->regmap;
> const u32 *init_tbl = rptr->cfg->init_tbl;
> - u8 tune_usb2_preem = init_tbl[TUNE_USB2_PREEM];
> - u8 tune_hsdisc = init_tbl[TUNE_HSDISC];
> - u8 tune_iusb2 = init_tbl[TUNE_IUSB2];
> u32 base = rptr->base;
> u32 val;
> int ret;
>
> - of_property_read_u8(np, "qcom,tune-usb2-amplitude", &tune_iusb2);
> - of_property_read_u8(np, "qcom,tune-usb2-disc-thres", &tune_hsdisc);
> - of_property_read_u8(np, "qcom,tune-usb2-preem", &tune_usb2_preem);
NAK, that's an ABI break.
Best regards,
Krzysztof
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
@ 2025-04-06 20:01 kernel test robot
0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2025-04-06 20:01 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "dtcheck: binding changes may go via different trees"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20250405174319.405975-1-mitltlatltl@gmail.com>
References: <20250405174319.405975-1-mitltlatltl@gmail.com>
TO: Pengyu Luo <mitltlatltl@gmail.com>
TO: Bjorn Andersson <andersson@kernel.org>
TO: Konrad Dybcio <konradybcio@kernel.org>
TO: Rob Herring <robh@kernel.org>
TO: Krzysztof Kozlowski <krzk@kernel.org>
TO: Conor Dooley <conor+dt@kernel.org>
TO: Vinod Koul <vkoul@kernel.org>
TO: Kishon Vijay Abraham I <kishon@kernel.org>
CC: Pengyu Luo <mitltlatltl@gmail.com>
CC: linux-arm-msm@vger.kernel.org
CC: devicetree@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: linux-phy@lists.infradead.org
Hi Pengyu,
kernel test robot noticed the following build warnings:
[auto build test WARNING on robh/for-next]
[also build test WARNING on linus/master v6.14 next-20250404]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Pengyu-Luo/phy-qualcomm-phy-qcom-eusb2-repeater-rework-reg-override-handler/20250406-014621
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20250405174319.405975-1-mitltlatltl%40gmail.com
patch subject: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
:::::: branch date: 26 hours ago
:::::: commit date: 26 hours ago
config: arm64-randconfig-052-20250406 (https://download.01.org/0day-ci/archive/20250407/202504070335.fFATCENZ-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 9.5.0
dtschema version: 2025.3.dev6+gb64c5c3
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250407/202504070335.fFATCENZ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202504070335.fFATCENZ-lkp@intel.com/
dtcheck warnings: (new ones prefixed by >>)
arch/arm64/boot/dts/qcom/sm8550.dtsi:3193.27-3267.6: Warning (avoid_unnecessary_addr_size): /soc@0/display-subsystem@ae00000/dsi@ae94000: unnecessary #address-cells/#size-cells without "ranges", "dma-ranges" or child "reg" property
arch/arm64/boot/dts/qcom/sm8550.dtsi:3288.27-3343.6: Warning (avoid_unnecessary_addr_size): /soc@0/display-subsystem@ae00000/dsi@ae96000: unnecessary #address-cells/#size-cells without "ranges", "dma-ranges" or child "reg" property
arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: display-subsystem@ae00000: interconnects: [[180, 3, 0, 31, 1, 0]] is too short
from schema $id: http://devicetree.org/schemas/display/msm/qcom,sm8550-mdss.yaml#
arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: display-subsystem@ae00000: interconnect-names: ['mdp0-mem'] is too short
from schema $id: http://devicetree.org/schemas/display/msm/qcom,sm8550-mdss.yaml#
>> arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: pmic@7: phy@fd00: 'qcom,host-param-override-seq', 'qcom,param-override-seq' do not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
>> arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: phy@fd00: 'qcom,host-param-override-seq', 'qcom,param-override-seq' do not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/phy/qcom,snps-eusb2-repeater.yaml#
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
2025-04-05 17:43 ` Pengyu Luo
@ 2025-04-06 20:30 ` Dmitry Baryshkov
-1 siblings, 0 replies; 9+ messages in thread
From: Dmitry Baryshkov @ 2025-04-06 20:30 UTC (permalink / raw)
To: Pengyu Luo
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Vinod Koul, Kishon Vijay Abraham I, linux-arm-msm,
devicetree, linux-kernel, linux-phy
On Sun, Apr 06, 2025 at 01:43:18AM +0800, Pengyu Luo wrote:
> In downstream tree, many registers need to be overrided, it varies
> from devices and platforms, not only HS trasmit amplitude(0x51),
> HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
>
> The device I plan to upstream also uses it, so I write the patch for
> it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
>
> In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
> in downstream, some crd, mtp, htk devices also use it, I have no
> such device, don't set it for them.
>
> Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
> ---
> .../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
> .../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
> 2 files changed, 72 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> index d90dc7b37..99f5fd32c 100644
> --- a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> @@ -673,9 +673,8 @@ cam_pwr_a_cs: cam-pwr-a-cs-state {
> };
>
> &pm8550b_eusb2_repeater {
> - qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>;
> - qcom,tune-usb2-amplitude = /bits/ 8 <0xf>;
> - qcom,tune-usb2-preem = /bits/ 8 <0x7>;
> + qcom,param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
> + qcom,host-param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
Other than Krzysztof's comments: In upstream we describe invididual
properties / overrides rather than just dumping the whole register
sequence. So, using a single 'seq' property is not acceptable.
> vdd18-supply = <&pm8550_l15>;
> vdd3-supply = <&pm8550_l5>;
> };
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
@ 2025-04-06 20:30 ` Dmitry Baryshkov
0 siblings, 0 replies; 9+ messages in thread
From: Dmitry Baryshkov @ 2025-04-06 20:30 UTC (permalink / raw)
To: Pengyu Luo
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Vinod Koul, Kishon Vijay Abraham I, linux-arm-msm,
devicetree, linux-kernel, linux-phy
On Sun, Apr 06, 2025 at 01:43:18AM +0800, Pengyu Luo wrote:
> In downstream tree, many registers need to be overrided, it varies
> from devices and platforms, not only HS trasmit amplitude(0x51),
> HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
>
> The device I plan to upstream also uses it, so I write the patch for
> it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
>
> In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
> in downstream, some crd, mtp, htk devices also use it, I have no
> such device, don't set it for them.
>
> Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
> ---
> .../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
> .../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
> 2 files changed, 72 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> index d90dc7b37..99f5fd32c 100644
> --- a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts
> @@ -673,9 +673,8 @@ cam_pwr_a_cs: cam-pwr-a-cs-state {
> };
>
> &pm8550b_eusb2_repeater {
> - qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>;
> - qcom,tune-usb2-amplitude = /bits/ 8 <0xf>;
> - qcom,tune-usb2-preem = /bits/ 8 <0x7>;
> + qcom,param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
> + qcom,host-param-override-seq = <0x51 0x08 0x53 0x06 0x57 0x07>;
Other than Krzysztof's comments: In upstream we describe invididual
properties / overrides rather than just dumping the whole register
sequence. So, using a single 'seq' property is not acceptable.
> vdd18-supply = <&pm8550_l15>;
> vdd3-supply = <&pm8550_l5>;
> };
--
With best wishes
Dmitry
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
2025-04-05 17:43 ` Pengyu Luo
@ 2025-04-07 12:47 ` Rob Herring (Arm)
-1 siblings, 0 replies; 9+ messages in thread
From: Rob Herring (Arm) @ 2025-04-07 12:47 UTC (permalink / raw)
To: Pengyu Luo
Cc: linux-phy, linux-arm-msm, Konrad Dybcio, Vinod Koul,
Krzysztof Kozlowski, Conor Dooley, devicetree, Bjorn Andersson,
linux-kernel, Kishon Vijay Abraham I
On Sun, 06 Apr 2025 01:43:18 +0800, Pengyu Luo wrote:
> In downstream tree, many registers need to be overrided, it varies
> from devices and platforms, not only HS trasmit amplitude(0x51),
> HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
>
> The device I plan to upstream also uses it, so I write the patch for
> it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
>
> In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
> in downstream, some crd, mtp, htk devices also use it, I have no
> such device, don't set it for them.
>
> Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
> ---
> .../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
> .../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
> 2 files changed, 72 insertions(+), 19 deletions(-)
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
This patch series was applied (using b4) to base:
Base: attempting to guess base-commit...
Base: tags/v6.14-rc6-274-gf4e35e5f940c (exact match)
If this is not the correct base, please add 'base-commit' tag
(or use b4 which does this automatically)
New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/qcom/' for 20250405174319.405975-1-mitltlatltl@gmail.com:
arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: pmic@7 (qcom,pm8550): phy@fd00: 'qcom,host-param-override-seq', 'qcom,param-override-seq' do not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: phy@fd00 (qcom,pm8550b-eusb2-repeater): 'qcom,host-param-override-seq', 'qcom,param-override-seq' do not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/phy/qcom,snps-eusb2-repeater.yaml#
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler
@ 2025-04-07 12:47 ` Rob Herring (Arm)
0 siblings, 0 replies; 9+ messages in thread
From: Rob Herring (Arm) @ 2025-04-07 12:47 UTC (permalink / raw)
To: Pengyu Luo
Cc: linux-phy, linux-arm-msm, Konrad Dybcio, Vinod Koul,
Krzysztof Kozlowski, Conor Dooley, devicetree, Bjorn Andersson,
linux-kernel, Kishon Vijay Abraham I
On Sun, 06 Apr 2025 01:43:18 +0800, Pengyu Luo wrote:
> In downstream tree, many registers need to be overrided, it varies
> from devices and platforms, not only HS trasmit amplitude(0x51),
> HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57).
>
> The device I plan to upstream also uses it, so I write the patch for
> it (Oneplus Pad Pro / Oneplus Pad 2, sm8650-mtp based).
>
> In upstream, only Sony Xperia 1 V is using this, so fixing it for sony,
> in downstream, some crd, mtp, htk devices also use it, I have no
> such device, don't set it for them.
>
> Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
> ---
> .../qcom/sm8550-sony-xperia-yodo-pdx234.dts | 5 +-
> .../phy/qualcomm/phy-qcom-eusb2-repeater.c | 86 +++++++++++++++----
> 2 files changed, 72 insertions(+), 19 deletions(-)
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
This patch series was applied (using b4) to base:
Base: attempting to guess base-commit...
Base: tags/v6.14-rc6-274-gf4e35e5f940c (exact match)
If this is not the correct base, please add 'base-commit' tag
(or use b4 which does this automatically)
New warnings running 'make CHECK_DTBS=y for arch/arm64/boot/dts/qcom/' for 20250405174319.405975-1-mitltlatltl@gmail.com:
arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: pmic@7 (qcom,pm8550): phy@fd00: 'qcom,host-param-override-seq', 'qcom,param-override-seq' do not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: phy@fd00 (qcom,pm8550b-eusb2-repeater): 'qcom,host-param-override-seq', 'qcom,param-override-seq' do not match any of the regexes: 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/phy/qcom,snps-eusb2-repeater.yaml#
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-04-07 16:27 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-06 20:01 [PATCH] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2025-04-05 17:43 Pengyu Luo
2025-04-05 17:43 ` Pengyu Luo
2025-04-06 12:21 ` Krzysztof Kozlowski
2025-04-06 12:21 ` Krzysztof Kozlowski
2025-04-06 20:30 ` Dmitry Baryshkov
2025-04-06 20:30 ` Dmitry Baryshkov
2025-04-07 12:47 ` Rob Herring (Arm)
2025-04-07 12:47 ` Rob Herring (Arm)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.