Re: [RFC 2.6.26-rc9 1/5] pxafb: add shared framebuffer interface
From: Jaya Kumar <hidden>
Date: 2008-07-20 02:41:41
On Wed, Jul 16, 2008 at 7:18 AM, Jaya Kumar [off-list ref] wrote:
On Wed, Jul 16, 2008 at 5:38 PM, Russell King - ARM Linux [off-list ref] wrote:quoted
On Wed, Jul 16, 2008 at 01:59:42AM -0700, Jaya Kumar wrote:quoted
On Wed, Jul 16, 2008 at 12:00 AM, eric miao [off-list ref] wrote:quoted
On Sun, Jul 13, 2008 at 9:26 PM, Jaya Kumar [off-list ref] wrote:quoted
These changes are to make it possible for a secondary driver to share the pxafb framebuffer. The changes include: - adding clkdev entry in pxafb_mach_info so that a driver can pass in the correct struct device owner for the LCDCLK.Is it possible that LCDCLK being requested by device other than pxa_device_fb?? Could you give an example and we may work out a better solution.You're right. I think LCDCLK is only ever requested by pxa_device_fb. I see now that instead of doing: - fbi->clk = clk_get(dev, "LCDCLK"); + fbi->clk = clk_get(inf->clkdev, "LCDCLK"); a better solution would be to directly use pxa_device_fb: - fbi->clk = clk_get(dev, "LCDCLK"); + fbi->clk = clk_get(pxa_device_fb.dev, "LCDCLK"); and then I can avoid doing the clkdev ugliness.PXA devices (intentionally) aren't exported. Nor are they going to be, so the above will fail if built as a module.Ah... I think this may be the cause of all my troubles. I've been trying to support am200epd working as a module, and allow it to rmmod cleanly, hence the inability to use pxa_device_fb through set_pxa_fb_info. If module support isn't important then I can happily take out unload support from am200epd and probably can then use set_pxa_fb_info and also reduce complexity in other parts of the metronomefb, am200epd, pxafb code.
Hi Eric, I've run into some difficulties. set_pxa_fb_info is: void __init set_pxa_fb_info(struct pxafb_mach_info *info) and not exported. Therefore am200epd can't be built as a module now that it depends on set_pxa_fb_info. That is fine, I switched am200epd to a built-in. But then because set_pxa_fb_info is __init, it disappears before am200epd is ready to call it. This is because am200epd needs metronomefb's framebuffer size and info which it only finds out after full boot into userspace when it gets its firmware from a udev script. I think this means that I would also need to make metronomefb a built-in and figure out how to compile in metronome's firmware. I haven't figured out how to do the latter yet. I started thinking about maybe creating something different, like maybe set_mod_pxa_fb_info that would work more dynamically (ie: alloc a platform_device dynamically, thus making it possible for device_release to work, rather than using a static struct pxa_device_fb) and allow for module support without requiring any exports other than itself. Is this something that's of interest or should I focus on the former? Thanks, jaya ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/