On 10/25/2018 08:55 AM, thesven73@xxxxxxxxx wrote: > Hi Linus, thank you for the patch review !! > >>> + - pwms : the pwm connected to the bridge's 'pwm input'. >> >> That is really unintuitive and needs a detailed explanation. What >> is a bridge doing with a PWM? Is it 100% certain this is a PWM, >> it's not just a .... clock? A pwm is a pule WIDTH modulator and >> I can't for my life understand why a bus bridge needs a signal >> with variable pulse width, but surprise me! :D > > You are 100% correct, this is a clock ! > The hardware designers attached the bridge's clock input to an iMX pwm output, > and instructed us to provide a clock with 50% duty cycle and a certain freq. > > The only way I know to activate a pwm is to connect it to a driver in the fdt, > then inside the driver enable the pwm, like so: > > + /* PWM */ > + pwm = devm_pwm_get(dev, NULL); > + if (IS_ERR(pwm)) { > + dev_err(dev, "pwm not found\n"); > + return -EINVAL; > + } > + pwm_get_args(pwm, &pargs); > + period = pargs.period; > + err = pwm_config(pwm, period/2, period); > + if (err) > + return err; > + err = pwm_enable(pwm); > + if (err) > + return err; > > This is why the bridge driver has a dependency on a pwm. > If the pwm could be enabled individually, I could drop this dependency. > Can you think of a way? How about using the pwm-clock device tree binding to turn the PWM into a clock? Documentation/devicetree/bindings/clock/pwm-clock.txt