Re: [PATCH v10 6/6] usb: typec: tcpm/tcpci_maxim: deprecate WAR for setting charger mode
From: Amit Sunil Dhamne
Date: Thu Apr 02 2026 - 14:53:53 EST
Hi Heikki,
On 4/2/26 7:33 AM, Heikki Krogerus wrote:
Hi Amit,
+static int get_vbus_regulator_handle(struct max_tcpci_chip *chip)Sorry to go back to this, but why can't you just get the regulator in
+{
+ if (IS_ERR_OR_NULL(chip->vbus_reg)) {
+ chip->vbus_reg = devm_regulator_get_exclusive(chip->dev,
+ "vbus");
max_tcpci_probe()?
Thanks for calling this out. This was an intentional design decision to break a circular dependency.
The charger driver is guaranteed to probe after the TCPC driver due to a power supply dependency (the TCPC is a supplier of power for the Battery Charger). However, the charger driver is also the regulator provider for VBUS out (when Type-C goes into source mode).
Because of this, the regulator handle will not be available during the TCPC driver's probe. If we tried to fetch it in max_tcpci_probe() and returned -EPROBE_DEFER, it would create a probe deadlock, as the charger would then never probe. Therefore, I made the decision to get the regulator handle lazily and on-demand.
Thanks,
Amit
thanks,
+ if (IS_ERR_OR_NULL(chip->vbus_reg)) {
+ dev_err(chip->dev,
+ "Failed to get vbus regulator handle\n");
+ return -ENODEV;
+ }
+ }
+
+ return 0;
+}