connector - encoder relationship

2011-05-27 Thread Sascha Hauer
On Wed, May 25, 2011 at 12:07:33PM -0400, Alex Deucher wrote:
> On Wed, May 25, 2011 at 4:36 AM, Sascha Hauer  
> 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- |


Re: connector - encoder relationship

2011-05-27 Thread Sascha Hauer
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.ha...@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- |
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


connector - encoder relationship

2011-05-25 Thread Alex Deucher
On Wed, May 25, 2011 at 4:36 AM, Sascha Hauer  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- |
> ___
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>


connector - encoder relationship

2011-05-25 Thread Sascha Hauer
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- |


connector - encoder relationship

2011-05-25 Thread Sascha Hauer
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- |
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: connector - encoder relationship

2011-05-25 Thread Alex Deucher
On Wed, May 25, 2011 at 4:36 AM, Sascha Hauer s.ha...@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- |
 ___
 dri-devel mailing list
 dri-devel@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/dri-devel

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel