From: Rob Clark <robdclark@gmail.com> To: Daniel Vetter <daniel@ffwll.ch> Cc: dri-devel@lists.freedesktop.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, patches@linaro.org Subject: Re: [PATCH 3/4] drm/tilcdc: add encoder slave Date: Thu, 24 Jan 2013 08:26:16 -0600 [thread overview] Message-ID: <CAF6AEGv_phG61y_cGmP=JZ8ZxbcVpa772xJZCF1x-=cEpbpLag@mail.gmail.com> (raw) In-Reply-To: <20130124124323.GA31306@phenom.ffwll.local> On Thu, Jan 24, 2013 at 6:43 AM, Daniel Vetter <daniel@ffwll.ch> wrote: > On Tue, Jan 22, 2013 at 04:36:24PM -0600, Rob Clark wrote: >> Add output panel driver for i2c encoder slaves. >> >> Signed-off-by: Rob Clark <robdclark@gmail.com> > > A few questions below, otherwise > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> >> --- [snip] >> diff --git a/drivers/gpu/drm/tilcdc/Kconfig b/drivers/gpu/drm/tilcdc/Kconfig >> index ee9b592..99beca2 100644 >> --- a/drivers/gpu/drm/tilcdc/Kconfig >> +++ b/drivers/gpu/drm/tilcdc/Kconfig >> @@ -8,3 +8,15 @@ config DRM_TILCDC >> Choose this option if you have an TI SoC with LCDC display >> controller, for example AM33xx in beagle-bone, DA8xx, or >> OMAP-L1xx. This driver replaces the FB_DA8XX fbdev driver. >> + >> +menu "I2C encoder or helper chips" >> + depends on DRM && DRM_KMS_HELPER && I2C >> + >> +config DRM_I2C_NXP_TDA998X >> + tristate "NXP Semiconductors TDA998X HDMI encoder" >> + default m if DRM_TILCDC >> + help >> + Support for NXP Semiconductors TDA998X HDMI encoders. >> + >> +endmenu >> + > > Shouldn't that hunk be in patch 2? yeah, probably.. I just copied how it was done in nouveau, but I think probably the Kconfig for the i2c encoder slaves should be moved into drivers/gpu/drm/i2c [snip] >> +/* >> + * Encoder: >> + */ >> + >> +struct slave_encoder { >> + struct drm_encoder_slave base; >> + struct slave_module *mod; >> +}; >> +#define to_slave_encoder(x) container_of(to_encoder_slave(x), struct slave_encoder, base) > > Since you have a 1:1:1 relationship between module/drm_encoder, the > drm_encoder_slave and the connector I'd just smash this all into one > struct. Pure bikeshed though ;-) yeah, but drm_encoder_slave is coming from drm core [snip] >> +static struct drm_encoder *slave_encoder_create(struct drm_device *dev, >> + struct slave_module *mod) >> +{ >> + struct slave_encoder *slave_encoder; >> + struct drm_encoder *encoder; >> + int ret; >> + >> + slave_encoder = kzalloc(sizeof(*slave_encoder), GFP_KERNEL); >> + if (!slave_encoder) { >> + dev_err(dev->dev, "allocation failed\n"); >> + return NULL; >> + } >> + >> + slave_encoder->mod = mod; >> + >> + encoder = &slave_encoder->base.base; >> + encoder->possible_crtcs = 1; >> + >> + ret = drm_encoder_init(dev, encoder, &slave_encoder_funcs, >> + DRM_MODE_ENCODER_LVDS); > > DRM_MODE_ENCODER_TMDS? Although I guess adding a new kind of > multi-function encoder type would make more sense and also useful in other > places. E.g. i915-sdvo/dvo just set meaningless types for multi-function > encoders (i.e. more than one connector on the same output), namely the > type which matches the connector last initalized. I suppose TDMS makes more sense.. perhaps getting both this and connector type from the encoder-slave would make the most sense, but I can change it to TDMS for now [snip] >> +static struct drm_connector *slave_connector_create(struct drm_device *dev, >> + struct slave_module *mod, struct drm_encoder *encoder) >> +{ >> + struct slave_connector *slave_connector; >> + struct drm_connector *connector; >> + int ret; >> + >> + slave_connector = kzalloc(sizeof(*slave_connector), GFP_KERNEL); >> + if (!slave_connector) { >> + dev_err(dev->dev, "allocation failed\n"); >> + return NULL; >> + } >> + >> + slave_connector->encoder = encoder; >> + slave_connector->mod = mod; >> + >> + connector = &slave_connector->base; >> + >> + drm_connector_init(dev, connector, &slave_connector_funcs, >> + DRM_MODE_CONNECTOR_HDMIA); > > Shouldn't we get the connector type from the drm_encoder_slave somehow? > Works here for now, so just food for thought for future encoder slave > refactorings and infrastructure work. yeah, getting it from the encoder slave makes the most sense [snip] >> +static struct of_device_id slave_of_match[] = { >> + { .compatible = "tilcdc,slave", }, >> + { }, >> +}; >> +MODULE_DEVICE_TABLE(of, slave_of_match); >> + >> +struct platform_driver slave_driver = { >> + .probe = slave_probe, >> + .remove = slave_remove, >> + .driver = { >> + .owner = THIS_MODULE, >> + .name = "slave", >> + .of_match_table = slave_of_match, >> + }, >> +}; > > No idea how this devicetree matching stuff is supposed to work, but I > guess this needs to be updated in the devictree docs like the base match. yeah, I didn't realize previously about the DT bindings docs, so I need to look into that BR, -R
WARNING: multiple messages have this Message-ID (diff)
From: robdclark@gmail.com (Rob Clark) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 3/4] drm/tilcdc: add encoder slave Date: Thu, 24 Jan 2013 08:26:16 -0600 [thread overview] Message-ID: <CAF6AEGv_phG61y_cGmP=JZ8ZxbcVpa772xJZCF1x-=cEpbpLag@mail.gmail.com> (raw) In-Reply-To: <20130124124323.GA31306@phenom.ffwll.local> On Thu, Jan 24, 2013 at 6:43 AM, Daniel Vetter <daniel@ffwll.ch> wrote: > On Tue, Jan 22, 2013 at 04:36:24PM -0600, Rob Clark wrote: >> Add output panel driver for i2c encoder slaves. >> >> Signed-off-by: Rob Clark <robdclark@gmail.com> > > A few questions below, otherwise > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> >> --- [snip] >> diff --git a/drivers/gpu/drm/tilcdc/Kconfig b/drivers/gpu/drm/tilcdc/Kconfig >> index ee9b592..99beca2 100644 >> --- a/drivers/gpu/drm/tilcdc/Kconfig >> +++ b/drivers/gpu/drm/tilcdc/Kconfig >> @@ -8,3 +8,15 @@ config DRM_TILCDC >> Choose this option if you have an TI SoC with LCDC display >> controller, for example AM33xx in beagle-bone, DA8xx, or >> OMAP-L1xx. This driver replaces the FB_DA8XX fbdev driver. >> + >> +menu "I2C encoder or helper chips" >> + depends on DRM && DRM_KMS_HELPER && I2C >> + >> +config DRM_I2C_NXP_TDA998X >> + tristate "NXP Semiconductors TDA998X HDMI encoder" >> + default m if DRM_TILCDC >> + help >> + Support for NXP Semiconductors TDA998X HDMI encoders. >> + >> +endmenu >> + > > Shouldn't that hunk be in patch 2? yeah, probably.. I just copied how it was done in nouveau, but I think probably the Kconfig for the i2c encoder slaves should be moved into drivers/gpu/drm/i2c [snip] >> +/* >> + * Encoder: >> + */ >> + >> +struct slave_encoder { >> + struct drm_encoder_slave base; >> + struct slave_module *mod; >> +}; >> +#define to_slave_encoder(x) container_of(to_encoder_slave(x), struct slave_encoder, base) > > Since you have a 1:1:1 relationship between module/drm_encoder, the > drm_encoder_slave and the connector I'd just smash this all into one > struct. Pure bikeshed though ;-) yeah, but drm_encoder_slave is coming from drm core [snip] >> +static struct drm_encoder *slave_encoder_create(struct drm_device *dev, >> + struct slave_module *mod) >> +{ >> + struct slave_encoder *slave_encoder; >> + struct drm_encoder *encoder; >> + int ret; >> + >> + slave_encoder = kzalloc(sizeof(*slave_encoder), GFP_KERNEL); >> + if (!slave_encoder) { >> + dev_err(dev->dev, "allocation failed\n"); >> + return NULL; >> + } >> + >> + slave_encoder->mod = mod; >> + >> + encoder = &slave_encoder->base.base; >> + encoder->possible_crtcs = 1; >> + >> + ret = drm_encoder_init(dev, encoder, &slave_encoder_funcs, >> + DRM_MODE_ENCODER_LVDS); > > DRM_MODE_ENCODER_TMDS? Although I guess adding a new kind of > multi-function encoder type would make more sense and also useful in other > places. E.g. i915-sdvo/dvo just set meaningless types for multi-function > encoders (i.e. more than one connector on the same output), namely the > type which matches the connector last initalized. I suppose TDMS makes more sense.. perhaps getting both this and connector type from the encoder-slave would make the most sense, but I can change it to TDMS for now [snip] >> +static struct drm_connector *slave_connector_create(struct drm_device *dev, >> + struct slave_module *mod, struct drm_encoder *encoder) >> +{ >> + struct slave_connector *slave_connector; >> + struct drm_connector *connector; >> + int ret; >> + >> + slave_connector = kzalloc(sizeof(*slave_connector), GFP_KERNEL); >> + if (!slave_connector) { >> + dev_err(dev->dev, "allocation failed\n"); >> + return NULL; >> + } >> + >> + slave_connector->encoder = encoder; >> + slave_connector->mod = mod; >> + >> + connector = &slave_connector->base; >> + >> + drm_connector_init(dev, connector, &slave_connector_funcs, >> + DRM_MODE_CONNECTOR_HDMIA); > > Shouldn't we get the connector type from the drm_encoder_slave somehow? > Works here for now, so just food for thought for future encoder slave > refactorings and infrastructure work. yeah, getting it from the encoder slave makes the most sense [snip] >> +static struct of_device_id slave_of_match[] = { >> + { .compatible = "tilcdc,slave", }, >> + { }, >> +}; >> +MODULE_DEVICE_TABLE(of, slave_of_match); >> + >> +struct platform_driver slave_driver = { >> + .probe = slave_probe, >> + .remove = slave_remove, >> + .driver = { >> + .owner = THIS_MODULE, >> + .name = "slave", >> + .of_match_table = slave_of_match, >> + }, >> +}; > > No idea how this devicetree matching stuff is supposed to work, but I > guess this needs to be updated in the devictree docs like the base match. yeah, I didn't realize previously about the DT bindings docs, so I need to look into that BR, -R
next prev parent reply other threads:[~2013-01-24 14:26 UTC|newest] Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-01-22 22:36 [PATCH 0/4] TI LCDC DRM driver Rob Clark 2013-01-22 22:36 ` Rob Clark 2013-01-22 22:36 ` [PATCH 1/4] drm/tilcdc: add TI LCD Controller DRM driver (v3) Rob Clark 2013-01-22 22:36 ` Rob Clark 2013-01-22 23:41 ` Daniel Vetter 2013-01-22 23:41 ` Daniel Vetter 2013-01-23 7:43 ` Koen Kooi 2013-01-23 7:43 ` Koen Kooi 2013-01-23 9:42 ` Jean-Francois Moine 2013-01-23 9:42 ` Jean-Francois Moine 2013-01-23 13:24 ` Rob Clark 2013-01-23 13:24 ` Rob Clark 2013-01-23 13:36 ` Russell King - ARM Linux 2013-01-23 13:36 ` Russell King - ARM Linux 2013-01-23 14:13 ` Rob Clark 2013-01-23 14:13 ` Rob Clark 2013-01-23 14:37 ` Rob Clark 2013-01-23 14:37 ` Rob Clark 2013-01-25 13:19 ` Mohammed, Afzal 2013-01-25 13:19 ` Mohammed, Afzal 2013-01-25 13:19 ` Mohammed, Afzal 2013-01-25 13:59 ` Rob Clark 2013-01-25 13:59 ` Rob Clark 2013-01-25 13:59 ` Rob Clark 2013-01-25 14:15 ` Mohammed, Afzal 2013-01-25 14:15 ` Mohammed, Afzal 2013-01-25 14:15 ` Mohammed, Afzal 2013-01-25 14:52 ` Rob Clark 2013-01-25 14:52 ` Rob Clark 2013-01-25 14:52 ` Rob Clark 2013-01-28 9:56 ` Mohammed, Afzal 2013-01-28 9:56 ` Mohammed, Afzal 2013-01-28 9:56 ` Mohammed, Afzal 2013-01-28 16:37 ` Rob Clark 2013-01-28 16:37 ` Rob Clark 2013-01-28 16:37 ` Rob Clark 2013-01-22 22:36 ` [PATCH 2/4] drm/i2c: nxp-tda998x (v2) Rob Clark 2013-01-22 22:36 ` Rob Clark 2013-01-23 7:44 ` Koen Kooi 2013-01-23 7:44 ` Koen Kooi 2013-01-23 9:42 ` Jean-Francois Moine 2013-01-23 9:42 ` Jean-Francois Moine 2013-01-23 13:25 ` Rob Clark 2013-01-23 13:25 ` Rob Clark 2013-01-24 11:57 ` Daniel Vetter 2013-01-24 11:57 ` Daniel Vetter 2013-01-24 14:10 ` Rob Clark 2013-01-24 14:10 ` Rob Clark 2013-01-22 22:36 ` [PATCH 3/4] drm/tilcdc: add encoder slave Rob Clark 2013-01-22 22:36 ` Rob Clark 2013-01-24 12:43 ` Daniel Vetter 2013-01-24 12:43 ` Daniel Vetter 2013-01-24 14:26 ` Rob Clark [this message] 2013-01-24 14:26 ` Rob Clark 2013-01-24 13:01 ` Daniel Vetter 2013-01-24 13:01 ` Daniel Vetter 2013-01-24 14:31 ` Rob Clark 2013-01-24 14:31 ` Rob Clark 2013-01-22 22:36 ` [PATCH 4/4] drm/tilcdc: add support for LCD panels (v4) Rob Clark 2013-01-22 22:36 ` Rob Clark 2013-01-24 13:08 ` Daniel Vetter 2013-01-24 13:08 ` Daniel Vetter 2013-01-24 14:40 ` Rob Clark 2013-01-24 14:40 ` Rob Clark 2013-01-23 7:48 ` [PATCH 0/4] TI LCDC DRM driver Sascha Hauer 2013-01-23 7:48 ` Sascha Hauer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAF6AEGv_phG61y_cGmP=JZ8ZxbcVpa772xJZCF1x-=cEpbpLag@mail.gmail.com' \ --to=robdclark@gmail.com \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=patches@linaro.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.