El 3/7/20 a les 21:10, John Crispin ha escrit:

On 03.07.20 21:07, Luca Olivetti wrote:
El 3/7/20 a les 20:07, Luca Olivetti ha escrit:
El 3/7/20 a les 20:06, John Crispin ha escrit:

On 03.07.20 19:57, Luca Olivetti wrote:
El 3/7/20 a les 19:49, John Crispin ha escrit:

On 03.07.20 19:47, Luca Olivetti wrote:
El 3/7/20 a les 19:37, John Crispin ha escrit:


Why not use the gpio regulator ?

Because I don't know how :-(

https://www.kernel.org/doc/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml

Oh, I see, but that's the one I had to *remove* because it didn't work.

Bye


CONFIG_REGULATOR_GPIO is not enabled in the kernel config



So it's just a matter of adding it to target/linux/lantiq/xway/config-4.14 after


CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y


?


(and put back the entry I removed in the dts)

Bye


correct



Thank you, I'm building it now (but my system is slow). I'll report back if it works.

Nope, it doesn't


printk the driver with a salt shaker and see if it loads and if so where it breaks

I'm not sure I understand, but I visually checked the code and the only part where it could return -EPROBE_DEFER is here in dwc/hcd.c

static int dwc2_vbus_supply_init(struct dwc2_hsotg *hsotg)
{
        int ret;

hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus");
        if (IS_ERR(hsotg->vbus_supply)) {
                ret = PTR_ERR(hsotg->vbus_supply);
                hsotg->vbus_supply = NULL;
                return ret == -ENODEV ? 0 : ret;
        }

        return regulator_enable(hsotg->vbus_supply);
}


I suppose it's the call to devm_regulator_get_optional, which should lead to regulator/core.c

static struct regulator_dev *regulator_dev_lookup(struct device *dev,
                                                  const char *supply)
{
        struct regulator_dev *r = NULL;
        struct device_node *node;
        struct regulator_map *map;
        const char *devname = NULL;

        regulator_supply_alias(&dev, &supply);

        /* first do a dt based lookup */
        if (dev && dev->of_node) {
                node = of_get_regulator(dev, supply);
                if (node) {
                        r = of_find_regulator_by_node(node);
                        if (r)
                                return r;

                        /*
                         * We have a node, but there is no device.
                         * assume it has not registered yet.
                         */
                        return ERR_PTR(-EPROBE_DEFER);
                }
        }



But since I don't really understand what's happening here, I don't know how to fix it. I only know that if I remove the regulator from the dts the function completes (since "node" is not found) and I can then enable the gpio manually.


Bye
--
Luca

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to