On Fri, Aug 19, 2016 at 03:02:34PM +1000, Jonathan Gray wrote:
> On Fri, Aug 19, 2016 at 02:38:32PM +1000, Jonathan Gray wrote:
> > On Thu, Aug 18, 2016 at 04:34:38PM -0400, Ian Sutton wrote:
> > > On Sat, Aug 06, 2016 at 04:26:27AM -0400, Ian Sutton wrote:
> > > > Interestingly, the am335x SoC does not have a HDMI/DP/etc transmitter on
> > > > silicon -- the BBB has its LCDC pins wired to a TDA19988 HDMI
> > > > transmitter which is additionally backwired to one of the am335x's i2c
> > > > ports:
> > > > 
> > > > "nxp,tda998x" at iic0 addr 0x70 not configured
> > > > 
> > > > Without a TDA19988 driver we are unable to probe for an attached
> > > > display's EDID bits thus unable to tailor timing/videomode parameters
> > > > on a per-display basis.
> > > 
> > > The following patch adds the nxptda(4) i2c driver:
> > > 
> > >   nxptda0 at iic0 addr 0x70: rev 0x0301
> > > 
> > > It correctly ascertains the EDID bits of displays connected to the
> > > beaglebone black:
> > > 
> > >         nxptda0 at iic0 addr 0x70                   
> > >         nxptda0: set page to 0x00
> > >         nxptda0: read  0x31 from 0x00 on page 0x00, result: 0
> > >         nxptda0: read  0x03 from 0x02 on page 0x00, result: 0
> > >         nxptda0: rev 0x0301                                  
> > >         nxptda0: read  0x00 from 0x0a on page 0x00, result: 0
> > >         nxptda0: wrote 0x03  to  0x0a on page 0x00, result: 0
> > >         nxptda0: read  0x03 from 0x0a on page 0x00, result: 0
> > >         nxptda0: wrote 0x00  to  0x0a on page 0x00, result: 0
> > > 
> > >           <snip>
> > >         
> > >         nxptda0: read  0x02 from 0x11 on page 0x00, result: 0
> > >         nxptda0: EDID-ready IRQ fired                        
> > >         nxptda0: set page to 0x09    
> > >         nxptda0: ------------- EDID -------------
> > >         nxptda0: 00ffffffffffff0022f05b2801010101
> > >         nxptda0: 1b15010380261e8ceef6b0a3554c9b25
> > >         nxptda0: 115054a1080081808140010101010101
> > >         nxptda0: 010101010101302a009851002a403070
> > >         nxptda0: 13007c2c1100001e000000fd00324c18
> > >         nxptda0: 530e000a202020202020000000fc004c
> > >         nxptda0: 41313935310a202020202020000000ff
> > >         nxptda0: 00434e43313237504c56420a20200022
> > >         nxptda0: --------------------------------
> > >                        ^--matches EDID bits from `xrandr --verbose`
> > > 
> > > 
> > > This will be important for upcoming display support on armv7 (see
> > > amdisplay(4) threads on this list[1]). The following code is
> > > review-ready to some degree, however, I imagine further register
> > > fiddling will be needed to communicate the intended timings perhaps
> > > implicating more externally callable functions.
> > > 
> > > Speaking of which:
> > > 
> > > I am apprehensive of nxptda(4)'s current external interface model. I
> > > currently have the lone nxptda_refresh_edid() function declared in
> > > nxptdavar.h header in sys/dev/i2c/, meant to be included by other drivers
> > > which need the EDID information it provides. No other such foo_var.h
> > > headers appear in that directory which makes me think I am doing
> > > something wrong. nxptda(4) is an i2c driver and must attach to the MI
> > > iic(4) driver precluding a direct attachment interface. Is there a
> > > better way of doing this?
> > 
> > Have you considered directly attaching the i2c bus to your other
> > driver without creating a new driver and using drm_edid.c ?
> 
> Though this would mean not attaching to tiiic, and unlike
> inteldrm/radeondrm there are other things on the i2c bus.

I am not sure what you mean here -- if nxptda doesn't attach to tiiic
then how is nxptda afforded the abstracted i2c subroutines filled in by
tiiic? All the iic-* functions nxptda should use require an i2c_tag_t
which in this case can only be provided by attaching at tiiic.

Reply via email to