fsl diu, edid info and i2c platform data
kari.davidsson at marel.com
Fri Nov 27 01:34:43 EST 2009
I am messing about with the fsl-diu-fb.c which handles the display on mpc512x platforms.
The display panels we are using provide EDID information and I would like to use that to setup
the display modes etc. The current fsl-diu-fb.c is hard coding display modes into the driver.
I have started this and it is working more or less but I appreciate all input from more knowledgeable people
about how to do this "correctly" with the aim that others could benefit.
I have the feeling I am not approaching this correctly.
One option I was looking into was to use platform data for the i2c edid driver, e.g. for the platform to provide
default fb_mode. But I have a big problem on how to attach the platform data to the i2cedid driver.
I tried few options and while I think using code like :
np = of_find_compatible_node( NULL, NULL, "vesa,edid" );
if( np )
struct i2c_client * tsc2007 = NULL;
// tsc2007 = of_find_i2c_device_by_node( np );
if( tsc2007 )
tsc2007->dev.platform_data = &v39_edid_data;
put_device( &tsc2007->dev );
of_node_put( np );
is the correct way to do it. The function of_find_i2c_device_by_node() hangs the kernel.
Attached is the patch as I have it now. It compiles and works on our custom mpc5121 board for two different LCD panels.
More information about the Linuxppc-dev