dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* connector - encoder relationship
@ 2011-05-25  8:36 Sascha Hauer
  2011-05-25 16:07 ` Alex Deucher
  0 siblings, 1 reply; 3+ messages in thread
From: Sascha Hauer @ 2011-05-25  8:36 UTC (permalink / raw)
  To: dri-devel

Hi All,

I'm currently looking into implementing a SoC graphics core with KMS.

What I wonder about is the relationship between connectors and encoders.
On my board I have a sii9022 HDMI encoder connected via i2c. This chip
supports reading edid data, tracks the connection status of the display
and needs to be configured when the resolution changes. So my first
guess is that I have to implement an encoder. looking at struct
drm_encoder_funcs there are no callbacks suitable for this. struct
drm_connector_funcs on the other hand has all the callbacks I need.
Now I look at drivers/gpu/drm/i2c. The drivers there implement a
drm_encoder_slave which also has all the callbacks I need. So from
one point of view the functions should be implemented in the connector,
while in the i2c case it's implemented in the (slave-) encoder.
Generally I have the feeling that my sii9022 should be both an encoder
and a connector, but this doesn't fit into the current scheme.

I'm confused. Could someone clarify this a bit?

Thanks
 Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: connector - encoder relationship
  2011-05-25  8:36 connector - encoder relationship Sascha Hauer
@ 2011-05-25 16:07 ` Alex Deucher
  2011-05-27  8:03   ` Sascha Hauer
  0 siblings, 1 reply; 3+ messages in thread
From: Alex Deucher @ 2011-05-25 16:07 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: dri-devel

On Wed, May 25, 2011 at 4:36 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> Hi All,
>
> I'm currently looking into implementing a SoC graphics core with KMS.
>
> What I wonder about is the relationship between connectors and encoders.
> On my board I have a sii9022 HDMI encoder connected via i2c. This chip
> supports reading edid data, tracks the connection status of the display
> and needs to be configured when the resolution changes. So my first
> guess is that I have to implement an encoder. looking at struct
> drm_encoder_funcs there are no callbacks suitable for this. struct
> drm_connector_funcs on the other hand has all the callbacks I need.
> Now I look at drivers/gpu/drm/i2c. The drivers there implement a
> drm_encoder_slave which also has all the callbacks I need. So from
> one point of view the functions should be implemented in the connector,
> while in the i2c case it's implemented in the (slave-) encoder.
> Generally I have the feeling that my sii9022 should be both an encoder
> and a connector, but this doesn't fit into the current scheme.
>
> I'm confused. Could someone clarify this a bit?

The general idea is this:
framebuffer -> crtc -> encoder -> connector -> monitor

- The framebuffer is just a buffer vram that has an image encoded in
it as an array of pixels.
- The crtc reads the data out of the framebuffer and generates the
video mode timing in conjunction with a PLL.  The crtc also determines
what part of the framebuffer is read; e.g., when multi-head is
enabled, each crtc scans out of a different part of vram; in clone
mode, each crtc scans out of the same part of vram.
- The encoder takes the digital bitstream from the crtc and converts
it to the appropriate analog levels for transmission across the
connector to the monitor.
- The connector provides the appropriate physical plug (HDMI, DVI-D,
VGA, S-video, etc.) for the monitor to connect to.

crtcs are usually routeable and can be connected to one or many
encoders simultaneously.  The encoders can also be connected to one or
more connectors (e.g., you might have a single TMDS encoder that is
connected to the digital portion of a DVI-I port and also to a HDMI
port, or you might have a DAC that is connected to a VGA port and an
S-video port).  Finally i2c lines are associated with connectors,
since generally the i2c pins are wired to the connector and in many
cases, each connectors has it's own i2c line.  For example, you might
have a single TMDS encoder that is wired to a DVI-D port with its own
i2c line and an HDMI port with its own i2c line.  Each connector may
have it's own hotplug (HPD) pin as well.  That way you could query the
EDID from each connector separately for example.

Is the sii9022 being driven by the output of a DVO encoder from your
display hw?  If so your display path would look like:

crtc -> DVO (master encoder) -> sii9022 (slave encoder) -> HDMI plug -> monitor

The general GPU driver might register the i2c buses that are used by
the various parts (encoder, connector), then it's just a matter of
plugging in the right parts for each component (e.g. you'd hook up the
sii9022 i2c control bus to the DVO encoder, and the ddc i2c bus to the
hdmi connector object, etc.).

I hope this helps.


>
> Thanks
>  Sascha
>
> --
> Pengutronix e.K.                           |                             |
> Industrial Linux Solutions                 | http://www.pengutronix.de/  |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: connector - encoder relationship
  2011-05-25 16:07 ` Alex Deucher
@ 2011-05-27  8:03   ` Sascha Hauer
  0 siblings, 0 replies; 3+ messages in thread
From: Sascha Hauer @ 2011-05-27  8:03 UTC (permalink / raw)
  To: Alex Deucher; +Cc: dri-devel

On Wed, May 25, 2011 at 12:07:33PM -0400, Alex Deucher wrote:
> On Wed, May 25, 2011 at 4:36 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> > Hi All,
> >
> > I'm currently looking into implementing a SoC graphics core with KMS.
> >
> > What I wonder about is the relationship between connectors and encoders.
> > On my board I have a sii9022 HDMI encoder connected via i2c. This chip
> > supports reading edid data, tracks the connection status of the display
> > and needs to be configured when the resolution changes. So my first
> > guess is that I have to implement an encoder. looking at struct
> > drm_encoder_funcs there are no callbacks suitable for this. struct
> > drm_connector_funcs on the other hand has all the callbacks I need.
> > Now I look at drivers/gpu/drm/i2c. The drivers there implement a
> > drm_encoder_slave which also has all the callbacks I need. So from
> > one point of view the functions should be implemented in the connector,
> > while in the i2c case it's implemented in the (slave-) encoder.
> > Generally I have the feeling that my sii9022 should be both an encoder
> > and a connector, but this doesn't fit into the current scheme.
> >
> > I'm confused. Could someone clarify this a bit?
> 
> The general idea is this:
> framebuffer -> crtc -> encoder -> connector -> monitor
> 
> - The framebuffer is just a buffer vram that has an image encoded in
> it as an array of pixels.
> - The crtc reads the data out of the framebuffer and generates the
> video mode timing in conjunction with a PLL.  The crtc also determines
> what part of the framebuffer is read; e.g., when multi-head is
> enabled, each crtc scans out of a different part of vram; in clone
> mode, each crtc scans out of the same part of vram.
> - The encoder takes the digital bitstream from the crtc and converts
> it to the appropriate analog levels for transmission across the
> connector to the monitor.
> - The connector provides the appropriate physical plug (HDMI, DVI-D,
> VGA, S-video, etc.) for the monitor to connect to.
> 
> crtcs are usually routeable and can be connected to one or many
> encoders simultaneously.  The encoders can also be connected to one or
> more connectors (e.g., you might have a single TMDS encoder that is
> connected to the digital portion of a DVI-I port and also to a HDMI
> port, or you might have a DAC that is connected to a VGA port and an
> S-video port).  Finally i2c lines are associated with connectors,
> since generally the i2c pins are wired to the connector and in many
> cases, each connectors has it's own i2c line.  For example, you might
> have a single TMDS encoder that is wired to a DVI-D port with its own
> i2c line and an HDMI port with its own i2c line.  Each connector may
> have it's own hotplug (HPD) pin as well.  That way you could query the
> EDID from each connector separately for example.
> 
> Is the sii9022 being driven by the output of a DVO encoder from your
> display hw?  If so your display path would look like:
> 
> crtc -> DVO (master encoder) -> sii9022 (slave encoder) -> HDMI plug -> monitor
> 
> The general GPU driver might register the i2c buses that are used by
> the various parts (encoder, connector), then it's just a matter of
> plugging in the right parts for each component (e.g. you'd hook up the
> sii9022 i2c control bus to the DVO encoder, and the ddc i2c bus to the
> hdmi connector object, etc.).
> 
> I hope this helps.

Thanks, that helped a lot. There are most probably more questions but
for the moment I'll continue digging myself through the maze ;)

Thanks
 Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-05-27  8:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-25  8:36 connector - encoder relationship Sascha Hauer
2011-05-25 16:07 ` Alex Deucher
2011-05-27  8:03   ` Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox