Hi Russel: On 2014?12?04? 07:40, Russell King - ARM Linux wrote: > On Thu, Dec 04, 2014 at 12:56:24AM +0800, Andy Yan wrote: >> Hi Russell: >> On 2014?12?04? 00:33, Russell King - ARM Linux wrote: >>> On Thu, Dec 04, 2014 at 12:30:23AM +0800, Andy Yan wrote: >>>> On 2014?12?04? 00:11, Russell King - ARM Linux wrote: >>>>> I meant that imx_hdmi_bind should be passed these, so that it needs to >>>>> know nothing about the struct device beyond the generic device structure. >>>>> In other words, the dw-hdmi core should not assume that the struct device >>>>> is part of a platform device. >>>>> >>>> if so, how about the device tree properties ddc-i2c-bus, reg-io-width, >>>> iahb, isfr, >>>> they are all found by device? >>> If the device has a device tree node associated with it, it will have a >>> non-NULL dev->of_node - which is part of the generic device structure. >>> >> so , I just need get the resource and irq number in the >> dw_hdmi-imx/rockchip ,than >> pass them to imx_hdmi_bind, as the properties ddc-i2c-bus, reg-io-width, >> iahb,isfr, they >> are still can be handled in imx_hdmi_bind ? > Basically, what I'm suggesting is just this change to imx_hdmi_bind(): > > int imx_hdmi_bind(struct device *dev, struct device *master, > void *data, struct drm_encoder *encoder, > + const struct resource *iores, int irq, > const struct imx_hdmi_plat_data *plat_data) > { > - struct platform_device *pdev = to_platform_device(dev); > ... > } > > - irq = platform_get_irq(pdev, 0); > if (irq < 0) > return irq; > ... > return ret; > > - iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); > hdmi->regs = devm_ioremap_resource(dev, iores); > if (IS_ERR(hdmi->regs)) > > and supplying those as arguments from the caller. > got it, thanks, and also many thanks for Philipp