Messages in this thread | | | Date | Wed, 18 Oct 2017 13:16:16 +0800 | From | jeffy <> | Subject | Re: [RFC PATCH v4 7/8] pwm: Add dummy pwmchip for orphan pwms |
| |
Hi guys,
On 10/18/2017 03:05 AM, Mark Brown wrote: > On Tue, Oct 17, 2017 at 11:53:01AM -0700, Brian Norris wrote: >> On Tue, Oct 17, 2017 at 07:46:03PM +0100, Mark Brown wrote: > >>> I would expect we can get a long way in the DT by doing a pass over the >>> tree and adding links between device nodes in cases where phandle >>> references exist. There is a potential issue with circular links which >>> I'm just going to handwave away right now but I'd expect that to help >>> otherwise. > >> But I didn't think FDTs encoded type info. So you don't really know >> whether a phandle is a phandle -- it's just an int (which happens to >> have a corresponding property in some other node). Are we trusting our >> DT bindings well enough to say that, for example, we know that in any >> given device node, a property like 'pwms' must be a phandle to a PWM >> provider? OK, maybe 'pwms' is a bad example (it's unlikely to get >> reused, and it has a companion '#pwm-cells' property), but grepping the >> DT bindings directory shows a ton of one-off properties that contain >> phandles. > > If we're going with the 90% thing we can probably get a long way with a > whitelist of properties, and we'll be able to take that a lot further > with the validatable schemas if they ever happen. >
so it looks like we are going to use device link in common code to fix this issue(and also other dependency issue), then i will drop this patch and the followed rockchip drm device link patch in next version :)
also the reason why i try to use dummy chip instead is that:
currently we have these devices: rockchip spi device(master) -> cros_ec_spi device(child) -> cros_ec_pwm(spi based pwm) -> pwm_bl
i added device link to cros_ec_pwm and pwm_bl, that works well for unbind/bind cros_ec_pwm device case, but there's a warning when i try to unbind cros_ec_spi:
static void device_links_purge(struct device *dev) { ... list_for_each_entry_safe_reverse(link, ln, &dev->links.consumers, s_node) { WARN_ON(link->status != DL_STATE_DORMANT && link->status != DL_STATE_NONE); <--- hit warning here! __device_link_del(link); }
but i checked again, that could due to the way spi core unregester children devices. maybe it need to call device_release_driver
| |