Add HS phy init sequence dtsi for Host

Add HS phy init sequence for Host mode to support configure
the HS phy parameters for Host and Device mode separately
from device tree.

Change-Id: Ia532d638c6e32377be9c4062f63f0cf227d55d2c
Signed-off-by: Yonghua Yan <yanyh2@motorola.com>
Reviewed-on: https://gerrit.mot.com/2605855
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Guobin Zhang <zhanggb@motorola.com>
Submit-Approved: Jira Key
Reviewed-on: https://gerrit.mot.com/2677516
Reviewed-by: Zonghua Liu <a17671@motorola.com>
Reviewed-by: Yeqing Wang <wangyq13@motorola.com>
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
This commit is contained in:
Yonghua Yan 2023-05-12 20:04:06 +08:00 • committed by Xiaojun Ji
commit f210f91a8a

View file

@ -114,6 +114,9 @@ struct msm_hsphy {
int *param_override_seq;
int param_override_seq_cnt;
int *host_param_override_seq;
int host_param_override_seq_cnt;
void __iomem *phy_rcal_reg;
u32 rcal_mask;
@ -397,9 +400,14 @@ static int msm_hsphy_init(struct usb_phy *uphy)
VBUSVLDEXT0, VBUSVLDEXT0);
/* set parameter ovrride if needed */
if (phy->param_override_seq)
if ((phy->phy.flags & PHY_HOST_MODE) &&
phy->host_param_override_seq) {
hsusb_phy_write_seq(phy->base, phy->host_param_override_seq,
phy->host_param_override_seq_cnt, 0);
} else if (phy->param_override_seq) {
hsusb_phy_write_seq(phy->base, phy->param_override_seq,
phy->param_override_seq_cnt, 0);
}
if (phy->pre_emphasis) {
u8 val = TXPREEMPAMPTUNE0(phy->pre_emphasis) &
@ -823,6 +831,34 @@ static int msm_hsphy_probe(struct platform_device *pdev)
if (IS_ERR(phy->phy_reset))
return PTR_ERR(phy->phy_reset);
phy->host_param_override_seq_cnt = of_property_count_elems_of_size(
dev->of_node,
"qcom,host-param-override-seq",
sizeof(*phy->host_param_override_seq));
if (phy->host_param_override_seq_cnt > 0) {
phy->host_param_override_seq = devm_kcalloc(dev,
phy->host_param_override_seq_cnt,
sizeof(*phy->host_param_override_seq),
GFP_KERNEL);
if (!phy->host_param_override_seq)
return -ENOMEM;
if (phy->host_param_override_seq_cnt % 2) {
dev_err(dev, "invalid host_param_override_seq_len\n");
return -EINVAL;
}
ret = of_property_read_u32_array(dev->of_node,
"qcom,host-param-override-seq",
phy->host_param_override_seq,
phy->host_param_override_seq_cnt);
if (ret) {
dev_err(dev, "qcom,host_param-override-seq read failed %d\n",
ret);
return ret;
}
}
phy->param_override_seq_cnt = of_property_count_elems_of_size(
dev->of_node,
"qcom,param-override-seq",