Re: [RFC v2 2/2] usb: typec: tcpm: Add support for parsing time dt properties

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dmitry,

Thanks for the review!

On 9/19/24 1:56 AM, Dmitry Baryshkov wrote:
On Thu, Sep 19, 2024 at 12:51:14AM GMT, Amit Sunil Dhamne wrote:
Add support for DT time properties to allow users to define platform
specific timing deadlines of certain timers rather than using hardcoded
ones. For values that have not been explicitly defined in DT using this
property, default values will be set therefore, making this change
backward compatible.

Signed-off-by: Amit Sunil Dhamne <amitsd@xxxxxxxxxx>
---
  drivers/usb/typec/tcpm/tcpm.c | 81 ++++++++++++++++++++++++++++-------
  1 file changed, 65 insertions(+), 16 deletions(-)
@@ -7053,6 +7068,35 @@ static int tcpm_port_register_pd(struct tcpm_port *port)
  	return ret;
  }
+static int tcpm_fw_get_timings(struct tcpm_port *port, struct fwnode_handle *fwnode)
+{
+	int ret;
+	u32 val;
+
+	if (!fwnode)
+		return -EINVAL;
I think this check isn't really necessary here. Other than that:

Acked-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>

Will remove this check in next rev as suggested in https://lore.kernel.org/all/Zuwn1Fn1DrLGvPK9@xxxxxxxxxxxxxxxxx/ .


Regards,

Amit

+
+	ret = fwnode_property_read_u32(fwnode, "sink-wait-cap-time-ms", &val);
+	if (!ret)
+		port->timings.sink_wait_cap_time = val;
+	else
+		port->timings.sink_wait_cap_time = PD_T_SINK_WAIT_CAP;
+
+	ret = fwnode_property_read_u32(fwnode, "ps-source-off-time-ms", &val);
+	if (!ret)
+		port->timings.ps_src_off_time = val;
+	else
+		port->timings.ps_src_off_time = PD_T_PS_SOURCE_OFF;
+
+	ret = fwnode_property_read_u32(fwnode, "cc-debounce-time-ms", &val);
+	if (!ret)
+		port->timings.cc_debounce_time = val;
+	else
+		port->timings.cc_debounce_time = PD_T_CC_DEBOUNCE;
+
+	return 0;
+}
+
  static int tcpm_fw_get_caps(struct tcpm_port *port, struct fwnode_handle *fwnode)
  {
  	struct fwnode_handle *capabilities, *child, *caps = NULL;
@@ -7608,9 +7652,14 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
  	init_completion(&port->pps_complete);
  	tcpm_debugfs_init(port);
+ err = tcpm_fw_get_timings(port, tcpc->fwnode);
+	if (err < 0)
+		goto out_destroy_wq;
+
  	err = tcpm_fw_get_caps(port, tcpc->fwnode);
  	if (err < 0)
  		goto out_destroy_wq;
+
  	err = tcpm_fw_get_snk_vdos(port, tcpc->fwnode);
  	if (err < 0)
  		goto out_destroy_wq;
--
2.46.0.792.g87dc391469-goog





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux