On Fri, Aug 29, 2014 at 2:05 PM, Mark Charlebois <charlebm@xxxxxxxxx> wrote: > There is currently a nested function in Russel King's tree > for the msm HDMI driver. > > The last nested function was removed from the Linux kernel > when the Thinkpad driver was fixed. > > I believe nested functions are not desired upstream, and it > also breaks compilation with clang so here is a patch to > change the nested function into static function. The patch > works with both clang and gcc. > > Signed-off-by: Mark Charlebois <charlebm@xxxxxxxxx> Thanks, I've got it queued up for 3.18 BR, -R > --- > drivers/gpu/drm/msm/hdmi/hdmi.c | 46 +++++++++++++++++++++-------------------- > 1 file changed, 24 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c > index a125a7e..c6c9b02e 100644 > --- a/drivers/gpu/drm/msm/hdmi/hdmi.c > +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c > @@ -258,28 +258,30 @@ static void set_hdmi_pdev(struct drm_device *dev, > priv->hdmi_pdev = pdev; > } > > +#ifdef CONFIG_OF > +static int get_gpio(struct device *dev, struct device_node *of_node, const char *name) > +{ > + int gpio = of_get_named_gpio(of_node, name, 0); > + if (gpio < 0) { > + char name2[32]; > + snprintf(name2, sizeof(name2), "%s-gpio", name); > + gpio = of_get_named_gpio(of_node, name2, 0); > + if (gpio < 0) { > + dev_err(dev, "failed to get gpio: %s (%d)\n", > + name, gpio); > + gpio = -1; > + } > + } > + return gpio; > +} > +#endif > + > static int hdmi_bind(struct device *dev, struct device *master, void *data) > { > static struct hdmi_platform_config config = {}; > #ifdef CONFIG_OF > struct device_node *of_node = dev->of_node; > > - int get_gpio(const char *name) > - { > - int gpio = of_get_named_gpio(of_node, name, 0); > - if (gpio < 0) { > - char name2[32]; > - snprintf(name2, sizeof(name2), "%s-gpio", name); > - gpio = of_get_named_gpio(of_node, name2, 0); > - if (gpio < 0) { > - dev_err(dev, "failed to get gpio: %s (%d)\n", > - name, gpio); > - gpio = -1; > - } > - } > - return gpio; > - } > - > if (of_device_is_compatible(of_node, "qcom,hdmi-tx-8074")) { > static const char *hpd_reg_names[] = {"hpd-gdsc", "hpd-5v"}; > static const char *pwr_reg_names[] = {"core-vdda", "core-vcc"}; > @@ -312,12 +314,12 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data) > } > > config.mmio_name = "core_physical"; > - config.ddc_clk_gpio = get_gpio("qcom,hdmi-tx-ddc-clk"); > - config.ddc_data_gpio = get_gpio("qcom,hdmi-tx-ddc-data"); > - config.hpd_gpio = get_gpio("qcom,hdmi-tx-hpd"); > - config.mux_en_gpio = get_gpio("qcom,hdmi-tx-mux-en"); > - config.mux_sel_gpio = get_gpio("qcom,hdmi-tx-mux-sel"); > - config.mux_lpm_gpio = get_gpio("qcom,hdmi-tx-mux-lpm"); > + config.ddc_clk_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-ddc-clk"); > + config.ddc_data_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-ddc-data"); > + config.hpd_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-hpd"); > + config.mux_en_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-mux-en"); > + config.mux_sel_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-mux-sel"); > + config.mux_lpm_gpio = get_gpio(dev, of_node, "qcom,hdmi-tx-mux-lpm"); > > #else > static const char *hpd_clk_names[] = { > -- > 1.9.1 > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel