Re: [PATCH v3 1/4] DSS2: OMAPFB: Add support for switching memory regions

2010-03-19 Thread Imre Deak
On Thu, Mar 18, 2010 at 04:26:04PM +0100, Syrjala Ville (Nokia-D/Helsinki) 
wrote:
 [...]
   Just tried it and seems to be mostly OK. We get lockdep checking as a
   bonus. It didn't like setup_plane taking the same rwsem twice so I
   added a check to see if the old and new regions are the same and just
   lock once in that case. I thought rwsem was supposed to be OK with
   read recursion but perhaps I was mitaken, or perhaps it's just lockdep
   that's misbehaving.
  
  Ah ok, so it's not so obvious change. Nested read locks could really lead
  to a deadlock I think. A read lock will block if there is a write waiter
  in the queue to avoid write starvation..
 
 Yes but I think in out case it should be fine because if we hit this:
 
  t  thread 1 thread 2
  |
  |  down_read(0)
  |   down_write(1)
  v  down_read(1)
 
 then thread 2 will eventually do a up_write() without taking any
 other region rwsem, and thread 1 can then continue.

Yes and things will work fine with the extra ordering you added. But
lockdep was right in that without the ordering you can get - the not
too likely - scenario:

t thread 1thread 2   thread 3  thread 4
| down_read(0)
| down_write(0)
|down_read(1)
|  down_write(1)
| down_read(1)
vdown_read(0)

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/4] DSS2: OMAPFB: Add support for switching memory regions

2010-03-18 Thread Imre Deak
On Wed, Mar 17, 2010 at 09:14:25PM +0100, Syrjala Ville (Nokia-D/Helsinki) 
wrote:
 On Wed, Mar 17, 2010 at 06:34:07PM +0100, Deak Imre (Nokia-D/Helsinki) wrote:
  Hi,
  
  couple of minor comments inlined.
  
  On Fri, Mar 05, 2010 at 02:26:19PM +0100, Syrjala Ville (Nokia-D/Helsinki) 
  wrote:
  [...]
   @@ -115,30 +184,57 @@ static int omapfb_setup_mem(struct fb_info *fbi, 
   struct omapfb_mem_info *mi)
   struct omapfb_info *ofbi = FB2OFB(fbi);
   struct omapfb2_device *fbdev = ofbi-fbdev;
   struct omapfb2_mem_region *rg;
   -   int r, i;
   +   int r = 0;
   size_t size;
   +   int i;
   
   if (mi-type  OMAPFB_MEMTYPE_MAX)
   return -EINVAL;
   
   size = PAGE_ALIGN(mi-size);
   
   -   rg = ofbi-region;
   +   rg = ofbi-region;
   
   -   for (i = 0; i  ofbi-num_overlays; i++) {
   -   if (ofbi-overlays[i]-info.enabled)
   -   return -EBUSY;
   +   /* FIXME probably should be a rwsem ... */
   +   mutex_lock(rg-mtx);
   +   while (rg-ref) {
   +   mutex_unlock(rg-mtx);
   +   schedule();
   +   mutex_lock(rg-mtx);
   +   }
  
  Yes, rwsem would mean no unnecessary scheduling and also make things
  clearer.
 
 Just tried it and seems to be mostly OK. We get lockdep checking as a
 bonus. It didn't like setup_plane taking the same rwsem twice so I
 added a check to see if the old and new regions are the same and just
 lock once in that case. I thought rwsem was supposed to be OK with
 read recursion but perhaps I was mitaken, or perhaps it's just lockdep
 that's misbehaving.

Ah ok, so it's not so obvious change. Nested read locks could really lead
to a deadlock I think. A read lock will block if there is a write waiter
in the queue to avoid write starvation..

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/4] DSS2: OMAPFB: Add support for switching memory regions

2010-03-17 Thread Imre Deak
Hi,

couple of minor comments inlined.

On Fri, Mar 05, 2010 at 02:26:19PM +0100, Syrjala Ville (Nokia-D/Helsinki) 
wrote:
 From: Ville Syrjälä ville.syrj...@nokia.com
 
 Separate the memory region from the framebuffer device a little bit.
 It's now possible to select the memory region used by the framebuffer
 device using the new mem_idx parameter of omapfb_plane_info. If the
 mem_idx is specified it will be interpreted as an index into the
 memory regions array, if it's not specified the framebuffer's index is
 used instead. So by default each framebuffer keeps using it's own
 memory region which preserves backwards compatibility.
 
 This allows cloning the same memory region to several overlays and yet
 each overlay can be controlled independently since they can be
 associated with separate framebuffer devices.
 
 Signed-off-by: Ville Syrjälä ville.syrj...@nokia.com
 ---
 Changes since v2:
 * Removed the use_count and rely on just counting all active overlays. A bit 
 racy
   but no chance of getting stuck in a state where memory allocation can't be 
 changed.
 * s/source_idx/mem_idx as that seems to be a little more self explanatory
 [...]
 
  drivers/video/omap2/omapfb/omapfb-ioctl.c |  163 -
  drivers/video/omap2/omapfb/omapfb-main.c  |  184 
 +++--
  drivers/video/omap2/omapfb/omapfb-sysfs.c |   60 --
  drivers/video/omap2/omapfb/omapfb.h   |   38 ++-
  include/linux/omapfb.h|5 +-
  5 files changed, 339 insertions(+), 111 deletions(-)
 
 diff --git a/drivers/video/omap2/omapfb/omapfb-ioctl.c 
 b/drivers/video/omap2/omapfb/omapfb-ioctl.c
 index 1ffa760..cd00bdc 100644
 --- a/drivers/video/omap2/omapfb/omapfb-ioctl.c
 +++ b/drivers/video/omap2/omapfb/omapfb-ioctl.c
 [...]
  static int omapfb_query_plane(struct fb_info *fbi, struct omapfb_plane_info 
 *pi)
  {
 struct omapfb_info *ofbi = FB2OFB(fbi);
 +   struct omap_overlay *ovl = ofbi-overlays[0];
 +   struct omap_overlay_info *ovli = ovl-info;
 
 if (ofbi-num_overlays != 1) {
 memset(pi, 0, sizeof(*pi));
 } else {
 -   struct omap_overlay_info *ovli;
 -   struct omap_overlay *ovl;
 -
 -   ovl = ofbi-overlays[0];
 -   ovli = ovl-info;
 -

Is this really necessary?

 pi-pos_x = ovli-pos_x;
 pi-pos_y = ovli-pos_y;
 pi-enabled = ovli-enabled;
 pi-channel_out = 0; /* xxx */
 pi-mirror = 0;
 +   pi-mem_idx = get_mem_idx(ofbi);
 pi-out_width = ovli-out_width;
 pi-out_height = ovli-out_height;
 }
 @@ -115,30 +184,57 @@ static int omapfb_setup_mem(struct fb_info *fbi, struct 
 omapfb_mem_info *mi)
 struct omapfb_info *ofbi = FB2OFB(fbi);
 struct omapfb2_device *fbdev = ofbi-fbdev;
 struct omapfb2_mem_region *rg;
 -   int r, i;
 +   int r = 0;
 size_t size;
 +   int i;
 
 if (mi-type  OMAPFB_MEMTYPE_MAX)
 return -EINVAL;
 
 size = PAGE_ALIGN(mi-size);
 
 -   rg = ofbi-region;
 +   rg = ofbi-region;
 
 -   for (i = 0; i  ofbi-num_overlays; i++) {
 -   if (ofbi-overlays[i]-info.enabled)
 -   return -EBUSY;
 +   /* FIXME probably should be a rwsem ... */
 +   mutex_lock(rg-mtx);
 +   while (rg-ref) {
 +   mutex_unlock(rg-mtx);
 +   schedule();
 +   mutex_lock(rg-mtx);
 +   }

Yes, rwsem would mean no unnecessary scheduling and also make things
clearer.

 [...]
  static int omapfb_query_mem(struct fb_info *fbi, struct omapfb_mem_info *mi)
 @@ -146,12 +242,15 @@ static int omapfb_query_mem(struct fb_info *fbi, struct 
 omapfb_mem_info *mi)
 struct omapfb_info *ofbi = FB2OFB(fbi);
 struct omapfb2_mem_region *rg;
 
 -   rg = ofbi-region;
 memset(mi, 0, sizeof(*mi));
 
 +   rg = omapfb_get_mem_region(ofbi-region);

At some other users of region I haven't seen omapfb_get_mem_region,
like store_mirror, store_overlays_rotate.

It wouldn't have been nice to have this patch in smaller chunks. For example
one for converting all region. to region- and another one for adding the
locking for it, then the rest.

Otherwise it looks ok to me.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC][PATCH] omapfb: Condition mutex acquisition

2009-09-30 Thread Imre Deak
Hi,

On Wed, Sep 30, 2009 at 02:53:10AM +0200, ext Tony Lindgren wrote:
 [...] 
 Tomi  Imre, do you want me to add this to the omap-fixes queue,
 or are you planning to send other fixes too?
 
 If you want me to add it, please reply with your ack.
 
 I'll added it into omap-fixes-testing branch for now so we can
 get the omaps booted.

Acked-by: Imre Deak imre.d...@nokia.com

There are no other patches for the DSS1 driver, so it'd be good if
you could just apply it to omap-fixes.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] video/omap: adding __init/__exit macros to various drivers

2009-09-29 Thread Imre Deak
On Tue, Sep 29, 2009 at 03:18:06AM +0200, ext Peter Huewe wrote:
 From: Peter Huewe peterhu...@gmx.de
 
 Trivial patch which adds the __init/__exit macros to the module_init/
 module_exit functions of the following drivers in media/omap:
 drivers/video/omap/lcd_ams_delta.c
 drivers/video/omap/lcd_mipid.c
 
 Please have a look at the small patch and either pull it through
 your tree, or please ack' it so Jiri can pull it through the trivial tree.
 
 linux version v2.6.32-rc1 - linus git tree, Di 29. Sep 01:10:18 CEST 2009
 
 Signed-off-by: Peter Huewe peterhu...@gmx.de

Acked-by: Imre Deak imre.d...@nokia.com

 ---
 diff --git a/drivers/video/omap/lcd_ams_delta.c 
 b/drivers/video/omap/lcd_ams_delta.c
 index 1f74399..319a9a2 100644
 --- a/drivers/video/omap/lcd_ams_delta.c
 +++ b/drivers/video/omap/lcd_ams_delta.c
 @@ -123,12 +123,12 @@ struct platform_driver ams_delta_panel_driver = {
   },
  };
  
 -static int ams_delta_panel_drv_init(void)
 +static int __init ams_delta_panel_drv_init(void)
  {
   return platform_driver_register(ams_delta_panel_driver);
  }
  
 -static void ams_delta_panel_drv_cleanup(void)
 +static void __exit ams_delta_panel_drv_cleanup(void)
  {
   platform_driver_unregister(ams_delta_panel_driver);
  }
 diff --git a/drivers/video/omap/lcd_mipid.c b/drivers/video/omap/lcd_mipid.c
 index 918ee89..d88a792 100644
 --- a/drivers/video/omap/lcd_mipid.c
 +++ b/drivers/video/omap/lcd_mipid.c
 @@ -607,7 +607,7 @@ static struct spi_driver mipid_spi_driver = {
   .remove = __devexit_p(mipid_spi_remove),
  };
  
 -static int mipid_drv_init(void)
 +static int __init mipid_drv_init(void)
  {
   spi_register_driver(mipid_spi_driver);
  
 @@ -615,7 +615,7 @@ static int mipid_drv_init(void)
  }
  module_init(mipid_drv_init);
  
 -static void mipid_drv_cleanup(void)
 +static void __exit mipid_drv_cleanup(void)
  {
   spi_unregister_driver(mipid_spi_driver);
  }
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] dspbridge: use linux memory allocator directly

2009-09-02 Thread Imre Deak
On Wed, Sep 02, 2009 at 07:27:10PM +0200, ext Andy Shevchenko wrote:
 From: Andy Shevchenko ext-andriy.shevche...@nokia.com
 
 Instead of MEM_Calloc()/MEM_Free() use kzalloc()/kfree() calls. Thus we get 
 rid
 of mem.h dependency.
 
 Signed-off-by: Andy Shevchenko ext-andriy.shevche...@nokia.com
 ---
  arch/arm/plat-omap/include/dspbridge/list.h |   11 ++-
  1 files changed, 6 insertions(+), 5 deletions(-)
 
 diff --git a/arch/arm/plat-omap/include/dspbridge/list.h 
 b/arch/arm/plat-omap/include/dspbridge/list.h
 index c9d9e49..cda1d21 100644
 --- a/arch/arm/plat-omap/include/dspbridge/list.h
 +++ b/arch/arm/plat-omap/include/dspbridge/list.h
 @@ -49,8 +49,8 @@
  #define LIST_
  
  #include dspbridge/host_os.h
 -/* MEM_Calloc(), MEM_NONPAGED, MEM_Free() */
 -#include dspbridge/mem.h
 +#include linux/types.h
 +#include linux/slab.h
  #include linux/list.h
  
  #define LST_ELEMlist_head
 @@ -85,9 +85,9 @@ struct LST_LIST {
  static inline struct LST_LIST *LST_Create(void)
  {
   struct LST_LIST *pList;
 + gfp_t flags = (in_atomic()) ? GFP_ATOMIC : GFP_KERNEL;
  
 - pList = (struct LST_LIST *) MEM_Calloc(sizeof(struct LST_LIST),
 - MEM_NONPAGED);
 + pList = (struct LST_LIST *) kzalloc(sizeof(struct LST_LIST), flags);
   if (pList != NULL)
   INIT_LIST_HEAD(pList-head);
  
 @@ -116,7 +116,8 @@ static inline struct LST_LIST *LST_Create(void)
   */
  static inline void LST_Delete(struct LST_LIST *pList)
  {
 - MEM_Free(pList);
 + if (pList != NULL)
 + kfree(pList);

No need to check, since kfree does it for you.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PULL REQUEST] omapfb: Add support for new LCDs / misc fixes

2009-06-22 Thread Imre Deak
Krzysztof,

On Wed, Jun 17, 2009 at 12:25:20PM +0200, Deak Imre (Nokia-D/Helsinki) wrote:
 On Tue, Jun 16, 2009 at 06:58:25PM +0200, ext Krzysztof Helt wrote:
  On Thu, 11 Jun 2009 15:02:06 +0300
  Imre Deak imre.d...@nokia.com wrote:
  
   Hi,
   
   the following pull request is for the patchset updated based on your 
   comments:
   
   The following changes since commit 
   07a2039b8eb0af4ff464efd3dfd95de5c02648c6:
 Linus Torvalds (1):
   Linux 2.6.30
   
   are available in the git repository at:
   
 git://koowaldah.org/people/imre/linux-2.6-fb master
   
   Daniel Stone (1):
 omapfb: dispc: Allow multiple external IRQ handlers
   
   Hunyue Yau (1):
 omapfb: Add support for the 2430SDP LCD
   
   Imre Deak (5):
 omapfb: Add support for MIPI-DCS compatible LCDs
 N770: Enable LCD MIPI-DCS in Kconfig
 omapfb: dispc: Various typo fixes
 omapfb: Add FB manual update option to Kconfig
 omapfb: HWA742: fix pointer to be const
   
   Jonathan McDowell (1):
 omapfb: Add support for the Amstrad Delta LCD
   
   Jouni Hogander (2):
 omapfb: dispc: Disable iface clocks along with func clocks
 omapfb: dispc: Enable wake up capability
   
   Jouni Högander (1):
 omapfb: suspend/resume only if FB device is already initialized
   
   Kevin Hilman (1):
 omapfb: Add support for the 3430SDP LCD
   
   Koen Kooi (1):
 omapfb: Add support for the OMAP3 Beagle DVI output
   
   Kyungmin Park (1):
 omapfb: Add support for the Apollon LCD
   
   Rodrigo Vivi (1):
 omapfb: Add support for rotation on the Blizzard LCD ctrl
   
   Stanley.Miao (1):
 omapfb: Add support for the ZOOM MDK LCD
   
   Steve Sakoman (2):
 omapfb: Add support for the OMAP3 EVM LCD
 omapfb: Add support for the Gumstix Overo LCD
   
   arun c (2):
 omapfb: Add support for the OMAP2EVM LCD
 omapfb: Fix coding style / remove dead line
   
arch/arm/configs/n770_defconfig |2 +-
arch/arm/configs/omap3_beagle_defconfig |   47 ++-
arch/arm/configs/omap_3430sdp_defconfig |   39 ++-
arch/arm/configs/omap_ldp_defconfig |   54 +++-
arch/arm/plat-omap/include/mach/lcd_mipid.h |5 +
arch/arm/plat-omap/include/mach/omapfb.h|4 +-
drivers/video/omap/Kconfig  |   82 +++-
drivers/video/omap/Makefile |   12 +
drivers/video/omap/blizzard.c   |   91 -
drivers/video/omap/dispc.c  |  130 ---
drivers/video/omap/dispc.h  |7 +-
drivers/video/omap/hwa742.c |2 +-
drivers/video/omap/lcd_2430sdp.c|  200 +
drivers/video/omap/lcd_ams_delta.c  |  137 ++
drivers/video/omap/lcd_apollon.c|  138 ++
drivers/video/omap/lcd_ldp.c|  200 +
drivers/video/omap/lcd_mipid.c  |  625 
   +++
drivers/video/omap/lcd_omap2evm.c   |  189 
drivers/video/omap/lcd_omap3beagle.c|  133 ++
drivers/video/omap/lcd_omap3evm.c   |  191 
drivers/video/omap/lcd_overo.c  |  179 
drivers/video/omap/omapfb_main.c|   64 ++-
drivers/video/omap/rfbi.c   |7 +-
23 files changed, 2424 insertions(+), 114 deletions(-)
create mode 100644 drivers/video/omap/lcd_2430sdp.c
create mode 100644 drivers/video/omap/lcd_ams_delta.c
create mode 100644 drivers/video/omap/lcd_apollon.c
create mode 100644 drivers/video/omap/lcd_ldp.c
create mode 100644 drivers/video/omap/lcd_mipid.c
create mode 100644 drivers/video/omap/lcd_omap2evm.c
create mode 100644 drivers/video/omap/lcd_omap3beagle.c
create mode 100644 drivers/video/omap/lcd_omap3evm.c
create mode 100644 drivers/video/omap/lcd_overo.c
  
  
  I assume you introduced small changes after my review. 
  
  For the whole patchset:
  
  Acked-by: Krzysztof Helt krzysztof...@wp.pl
 
 Yes, I've updated the patchset based on our discussion. I've also
 added your acked-by line.

I can't see this merged yet to Linus' tree. When are you planning
to submit it?

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PULL REQUEST] omapfb: Add support for new LCDs / misc fixes

2009-06-17 Thread Imre Deak
On Tue, Jun 16, 2009 at 06:58:25PM +0200, ext Krzysztof Helt wrote:
 On Thu, 11 Jun 2009 15:02:06 +0300
 Imre Deak imre.d...@nokia.com wrote:
 
  Hi,
  
  the following pull request is for the patchset updated based on your 
  comments:
  
  The following changes since commit 07a2039b8eb0af4ff464efd3dfd95de5c02648c6:
Linus Torvalds (1):
  Linux 2.6.30
  
  are available in the git repository at:
  
git://koowaldah.org/people/imre/linux-2.6-fb master
  
  Daniel Stone (1):
omapfb: dispc: Allow multiple external IRQ handlers
  
  Hunyue Yau (1):
omapfb: Add support for the 2430SDP LCD
  
  Imre Deak (5):
omapfb: Add support for MIPI-DCS compatible LCDs
N770: Enable LCD MIPI-DCS in Kconfig
omapfb: dispc: Various typo fixes
omapfb: Add FB manual update option to Kconfig
omapfb: HWA742: fix pointer to be const
  
  Jonathan McDowell (1):
omapfb: Add support for the Amstrad Delta LCD
  
  Jouni Hogander (2):
omapfb: dispc: Disable iface clocks along with func clocks
omapfb: dispc: Enable wake up capability
  
  Jouni Högander (1):
omapfb: suspend/resume only if FB device is already initialized
  
  Kevin Hilman (1):
omapfb: Add support for the 3430SDP LCD
  
  Koen Kooi (1):
omapfb: Add support for the OMAP3 Beagle DVI output
  
  Kyungmin Park (1):
omapfb: Add support for the Apollon LCD
  
  Rodrigo Vivi (1):
omapfb: Add support for rotation on the Blizzard LCD ctrl
  
  Stanley.Miao (1):
omapfb: Add support for the ZOOM MDK LCD
  
  Steve Sakoman (2):
omapfb: Add support for the OMAP3 EVM LCD
omapfb: Add support for the Gumstix Overo LCD
  
  arun c (2):
omapfb: Add support for the OMAP2EVM LCD
omapfb: Fix coding style / remove dead line
  
   arch/arm/configs/n770_defconfig |2 +-
   arch/arm/configs/omap3_beagle_defconfig |   47 ++-
   arch/arm/configs/omap_3430sdp_defconfig |   39 ++-
   arch/arm/configs/omap_ldp_defconfig |   54 +++-
   arch/arm/plat-omap/include/mach/lcd_mipid.h |5 +
   arch/arm/plat-omap/include/mach/omapfb.h|4 +-
   drivers/video/omap/Kconfig  |   82 +++-
   drivers/video/omap/Makefile |   12 +
   drivers/video/omap/blizzard.c   |   91 -
   drivers/video/omap/dispc.c  |  130 ---
   drivers/video/omap/dispc.h  |7 +-
   drivers/video/omap/hwa742.c |2 +-
   drivers/video/omap/lcd_2430sdp.c|  200 +
   drivers/video/omap/lcd_ams_delta.c  |  137 ++
   drivers/video/omap/lcd_apollon.c|  138 ++
   drivers/video/omap/lcd_ldp.c|  200 +
   drivers/video/omap/lcd_mipid.c  |  625 
  +++
   drivers/video/omap/lcd_omap2evm.c   |  189 
   drivers/video/omap/lcd_omap3beagle.c|  133 ++
   drivers/video/omap/lcd_omap3evm.c   |  191 
   drivers/video/omap/lcd_overo.c  |  179 
   drivers/video/omap/omapfb_main.c|   64 ++-
   drivers/video/omap/rfbi.c   |7 +-
   23 files changed, 2424 insertions(+), 114 deletions(-)
   create mode 100644 drivers/video/omap/lcd_2430sdp.c
   create mode 100644 drivers/video/omap/lcd_ams_delta.c
   create mode 100644 drivers/video/omap/lcd_apollon.c
   create mode 100644 drivers/video/omap/lcd_ldp.c
   create mode 100644 drivers/video/omap/lcd_mipid.c
   create mode 100644 drivers/video/omap/lcd_omap2evm.c
   create mode 100644 drivers/video/omap/lcd_omap3beagle.c
   create mode 100644 drivers/video/omap/lcd_omap3evm.c
   create mode 100644 drivers/video/omap/lcd_overo.c
 
 
 I assume you introduced small changes after my review. 
 
 For the whole patchset:
 
 Acked-by: Krzysztof Helt krzysztof...@wp.pl

Yes, I've updated the patchset based on our discussion. I've also
added your acked-by line.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Linux-fbdev-devel] [PATCH 05/20] omapfb: Add support for the 2430SDP LCD

2009-06-16 Thread Imre Deak
On Sun, Jun 14, 2009 at 11:29:06PM +0200, ext Krzysztof Helt wrote:
 On Thu,  4 Jun 2009 20:52:30 +0300
 Imre Deak imre.d...@nokia.com wrote:
 
  From: Hunyue Yau h...@mvista.com
  
  Add glue to control the 2430SDP LCD as a frame buffer device
  using the existing dispc.c driver under omapfb.
  
  Signed-off-by: Hunyue Yau h...@mvista.com
  Signed-off-by: Kevin Hilman khil...@mvista.com
  Signed-off-by: Tony Lindgren t...@atomide.com
  Fixed-by: Kevin Hilman khil...@mvista.com
  Fixed-by: Sergio Aguirre saagui...@ti.com
  Fixed-by: Francisco Alecrim francisco.alec...@indt.org.br
  Fixed-by: Tony Lindgren t...@atomide.com
  Fixed-by: David Brownell dbrown...@users.sourceforge.net
  Signed-off-by: Imre Deak imre.d...@nokia.com
  ---
   drivers/video/omap/Makefile  |1 +
   drivers/video/omap/lcd_2430sdp.c |  196 
  ++
   2 files changed, 197 insertions(+), 0 deletions(-)
   create mode 100644 drivers/video/omap/lcd_2430sdp.c
  
  diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
  index 2bf94ad..7a37b03 100644
  --- a/drivers/video/omap/Makefile
  +++ b/drivers/video/omap/Makefile
  @@ -26,6 +26,7 @@ objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) 
  += lcd_inn1510.o
   objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
   
   objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
  +objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
   objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
   
   omapfb-objs := $(objs-yy)
 diff --git a/drivers/video/omap/lcd_2430sdp.c 
 b/drivers/video/omap/lcd_2430sdp.c
 new file mode 100644
 index 000..5bcbb8d
 --- /dev/null
 +++ b/drivers/video/omap/lcd_2430sdp.c
 @@ -0,0 +1,196 @@
 +/*
 + * LCD panel support for the TI 2430SDP board
 + *
 + * Copyright (C) 2007 MontaVista
 + * Author: Hunyue Yau h...@mvista.com
 + *
 + * Derived from drivers/video/omap/lcd-apollon.c
 + *
 + * This program is free software; you can redistribute it and/or modify it
 + * under the terms of the GNU General Public License as published by the
 + * Free Software Foundation; either version 2 of the License, or (at your
 + * option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful, but
 + * WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License along
 + * with this program; if not, write to the Free Software Foundation, Inc.,
 + * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 + */
 +
 +#include linux/module.h
 +#include linux/platform_device.h
 +#include linux/delay.h
 +#include linux/gpio.h
 +#include linux/i2c/twl4030.h
 +
 +#include mach/mux.h
 +#include mach/omapfb.h
 +#include asm/mach-types.h
 +
 +#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO 91
 +#define SDP2430_LCD_PANEL_ENABLE_GPIO154
 +#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO 24
 +#define SDP3430_LCD_PANEL_ENABLE_GPIO28
 +
 +static unsigned backlight_gpio;
 +static unsigned enable_gpio;
 +
 +#define LCD_PANEL_BACKLIGHT_GPIO 91
 +#define LCD_PANEL_ENABLE_GPIO154
 +#define LCD_PIXCLOCK_MAX 5400 /* freq 5.4 MHz */
 +#define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER
 +#define ENABLE_VAUX2_DEDICATED  0x09
 +#define ENABLE_VAUX2_DEV_GRP0x20
 +
 +
 +#define t2_out(c, r, v) twl4030_i2c_write_u8(c, r, v)
 +
 +
 +static int sdp2430_panel_init(struct lcd_panel *panel,
 + struct omapfb_device *fbdev)
 +{
 + if (machine_is_omap_3430sdp()) {
 + enable_gpio= SDP3430_LCD_PANEL_ENABLE_GPIO;
 + backlight_gpio = SDP3430_LCD_PANEL_BACKLIGHT_GPIO;
 + } else {
 + enable_gpio= SDP2430_LCD_PANEL_ENABLE_GPIO;
 + backlight_gpio = SDP2430_LCD_PANEL_BACKLIGHT_GPIO;
 + }
 
 The same assingments in both clauses. No if() is required.

They are different, SDP3430_* vs. SDP2430_*.

 
 +
 + gpio_request(enable_gpio, LCD enable);/* LCD panel */
 + gpio_request(backlight_gpio, LCD bl); /* LCD backlight */
 + gpio_direction_output(enable_gpio, 0);
 + gpio_direction_output(backlight_gpio, 0);
 +
 + return 0;
 +}
 +
 +static void sdp2430_panel_cleanup(struct lcd_panel *panel)
 +{
 
 Should the requested gpios be freed?

Yes, agreed. I will follow-up with a patchset that fixes this and similar
places in the other panel drivers.

 
 +}
 +
 +static int sdp2430_panel_enable(struct lcd_panel *panel)
 +{
 + u8 ded_val, ded_reg;
 + u8 grp_val, grp_reg;
 +
 + if (machine_is_omap_3430sdp()) {
 + ded_reg = TWL4030_VAUX3_DEDICATED;
 + ded_val = ENABLE_VAUX3_DEDICATED;
 + grp_reg = TWL4030_VAUX3_DEV_GRP;
 + grp_val = ENABLE_VAUX3_DEV_GRP;
 +
 + if (omap_rev()  OMAP3430_REV_ES1_0

Re: [Linux-fbdev-devel] [PATCH 06/20] omapfb: Add support for the OMAP2EVM LCD

2009-06-16 Thread Imre Deak
On Sun, Jun 14, 2009 at 11:30:27PM +0200, ext Krzysztof Helt wrote:
 On Thu,  4 Jun 2009 20:52:31 +0300
 Imre Deak imre.d...@nokia.com wrote:
 
  From: arun c arun.edar...@gmail.com
  
  omap2evm LCD supports VGA and QVGA resolution, by default its in VGA mode.
  
  Signed-off-by: Arun C arunedar...@mistralsolutions.com
  Signed-off-by: Tony Lindgren t...@atomide.com
  Fixed-by: Jarkko Nikula jarkko.nik...@gmail.com
  Fixed-by: David Brownell dbrown...@users.sourceforge.net
  Signed-off-by: Imre Deak imre.d...@nokia.com
  ---
   drivers/video/omap/Makefile   |1 +
   drivers/video/omap/lcd_omap2evm.c |  189 
  +
   2 files changed, 190 insertions(+), 0 deletions(-)
   create mode 100644 drivers/video/omap/lcd_omap2evm.c
  
  diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
  index 7a37b03..c2475e3 100644
  --- a/drivers/video/omap/Makefile
  +++ b/drivers/video/omap/Makefile
  @@ -27,6 +27,7 @@ objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
   
   objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
   objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
  +objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
   objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
   
   omapfb-objs := $(objs-yy)
 diff --git a/drivers/video/omap/lcd_omap2evm.c 
 b/drivers/video/omap/lcd_omap2evm.c
 new file mode 100644
 index 000..2fc46c2
 --- /dev/null
 +++ b/drivers/video/omap/lcd_omap2evm.c
 @@ -0,0 +1,189 @@
 +/*
 + * LCD panel support for the MISTRAL OMAP2EVM board
 + *
 + * Author: Arun C arunedar...@mistralsolutions.com
 + *
 + * Derived from drivers/video/omap/lcd_omap3evm.c
 + * Derived from drivers/video/omap/lcd-apollon.c
 + *
 + * This program is free software; you can redistribute it and/or modify it
 + * under the terms of the GNU General Public License as published by the
 + * Free Software Foundation; either version 2 of the License, or (at your
 + * option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful, but
 + * WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License along
 + * with this program; if not, write to the Free Software Foundation, Inc.,
 + * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 + */
 +
 +#include linux/module.h
 +#include linux/platform_device.h
 +#include linux/gpio.h
 +#include linux/i2c/twl4030.h
 +
 +#include mach/mux.h
 +#include mach/omapfb.h
 +#include asm/mach-types.h
 +
 +#define LCD_PANEL_ENABLE_GPIO154
 +#define LCD_PANEL_LR 128
 +#define LCD_PANEL_UD 129
 +#define LCD_PANEL_INI152
 +#define LCD_PANEL_QVGA   148
 +#define LCD_PANEL_RESB   153
 +
 +#define LCD_XRES 480
 +#define LCD_YRES 640
 +#define LCD_PIXCLOCK_MAX 2 /* in kHz */
 
 You can drop defines used only once. There are no such defines for some other 
 panels
 in your patches.

Ok, fixing it.

--Imre


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Linux-fbdev-devel] [PATCH 08/20] omapfb: Add support for the OMAP3 EVM LCD

2009-06-16 Thread Imre Deak
On Sun, Jun 14, 2009 at 11:33:18PM +0200, ext Krzysztof Helt wrote:
 On Thu,  4 Jun 2009 20:52:33 +0300
 Imre Deak imre.d...@nokia.com wrote:
 
  From: Steve Sakoman st...@sakoman.com
  
  Add LCD support for OMAP3 EVM
  
  Backlight support by Arun C arunedar...@mistralsolutions.com
  
  Signed-off-by: Steve Sakoman st...@sakoman.com
  Acked-by: Syed Mohammed Khasim kha...@ti.com
  Signed-off-by: Tony Lindgren t...@atomide.com
  Fixed-by: Jarkko Nikula jarkko.nik...@gmail.com
  Fixed-by: David Brownell dbrown...@users.sourceforge.net
  Signed-off-by: Imre Deak imre.d...@nokia.com
  ---
   drivers/video/omap/Makefile   |1 +
   drivers/video/omap/lcd_omap3evm.c |  191 
  +
   2 files changed, 192 insertions(+), 0 deletions(-)
   create mode 100644 drivers/video/omap/lcd_omap3evm.c
  
  diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
  index 96d2d43..4345157 100644
  --- a/drivers/video/omap/Makefile
  +++ b/drivers/video/omap/Makefile
  @@ -30,6 +30,7 @@ objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
   objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
   objs-y$(CONFIG_MACH_OMAP_3430SDP) += lcd_2430sdp.o
   objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
  +objs-y$(CONFIG_MACH_OMAP3EVM) += lcd_omap3evm.o
   objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
   
   omapfb-objs := $(objs-yy)
  diff --git a/drivers/video/omap/lcd_omap3evm.c 
  b/drivers/video/omap/lcd_omap3evm.c
  new file mode 100644
  index 000..1c3d814
  --- /dev/null
  +++ b/drivers/video/omap/lcd_omap3evm.c
  @@ -0,0 +1,191 @@
  +/*
  + * LCD panel support for the TI OMAP3 EVM board
  + *
  + * Author: Steve Sakoman st...@sakoman.com
  + *
  + * Derived from drivers/video/omap/lcd-apollon.c
  + *
  + * This program is free software; you can redistribute it and/or modify it
  + * under the terms of the GNU General Public License as published by the
  + * Free Software Foundation; either version 2 of the License, or (at your
  + * option) any later version.
  + *
  + * This program is distributed in the hope that it will be useful, but
  + * WITHOUT ANY WARRANTY; without even the implied warranty of
  + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  + * General Public License for more details.
  + *
  + * You should have received a copy of the GNU General Public License along
  + * with this program; if not, write to the Free Software Foundation, Inc.,
  + * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  + */
  +
  +#include linux/module.h
  +#include linux/platform_device.h
  +#include linux/gpio.h
  +#include linux/i2c/twl4030.h
  +
  +#include mach/mux.h
  +#include mach/omapfb.h
  +#include asm/mach-types.h
  +
  +#define LCD_PANEL_ENABLE_GPIO   153
  +#define LCD_PANEL_LR2
  +#define LCD_PANEL_UD3
  +#define LCD_PANEL_INI   152
  +#define LCD_PANEL_QVGA  154
  +#define LCD_PANEL_RESB  155
  +
  +#define LCD_XRES   480
  +#define LCD_YRES   640
  +#define LCD_PIXCLOCK   26000 /* in kHz  */
  +
 
 You can drop defines used only once. There are no such defines for
 other panels.

Ok, will fix this and similar places in the other panel drivers.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 11/20] omapfb: Add support for the ZOOM MDK LCD

2009-06-16 Thread Imre Deak
On Sun, Jun 14, 2009 at 11:47:16PM +0200, ext Krzysztof Helt wrote:
 On Thu,  4 Jun 2009 20:52:36 +0300
 Imre Deak imre.d...@nokia.com wrote:
 [...]
  diff --git a/drivers/video/omap/lcd_ldp.c b/drivers/video/omap/lcd_ldp.c
  new file mode 100644
  index 000..8925230
  --- /dev/null
  +++ b/drivers/video/omap/lcd_ldp.c
  [...]
  +static void ldp_panel_disable(struct lcd_panel *panel)
  +{
  + gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 0);
  + gpio_direction_output(LCD_PANEL_BACKLIGHT_GPIO, 0);
  +
  + t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEDICATED);
  + t2_out(PM_RECEIVER, 0x0, TWL4030_VPLL2_DEV_GRP);
  + mdelay(4);
 
 Use the msleep() instead of the mdelay().

Ok, will fix it and the similar places in the other panel drivers.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PULL REQUEST] omapfb: Add support for new LCDs / misc fixes

2009-06-11 Thread Imre Deak
Hi,

the following pull request is for the patchset updated based on your comments:

The following changes since commit 07a2039b8eb0af4ff464efd3dfd95de5c02648c6:
  Linus Torvalds (1):
Linux 2.6.30

are available in the git repository at:

  git://koowaldah.org/people/imre/linux-2.6-fb master

Daniel Stone (1):
  omapfb: dispc: Allow multiple external IRQ handlers

Hunyue Yau (1):
  omapfb: Add support for the 2430SDP LCD

Imre Deak (5):
  omapfb: Add support for MIPI-DCS compatible LCDs
  N770: Enable LCD MIPI-DCS in Kconfig
  omapfb: dispc: Various typo fixes
  omapfb: Add FB manual update option to Kconfig
  omapfb: HWA742: fix pointer to be const

Jonathan McDowell (1):
  omapfb: Add support for the Amstrad Delta LCD

Jouni Hogander (2):
  omapfb: dispc: Disable iface clocks along with func clocks
  omapfb: dispc: Enable wake up capability

Jouni Högander (1):
  omapfb: suspend/resume only if FB device is already initialized

Kevin Hilman (1):
  omapfb: Add support for the 3430SDP LCD

Koen Kooi (1):
  omapfb: Add support for the OMAP3 Beagle DVI output

Kyungmin Park (1):
  omapfb: Add support for the Apollon LCD

Rodrigo Vivi (1):
  omapfb: Add support for rotation on the Blizzard LCD ctrl

Stanley.Miao (1):
  omapfb: Add support for the ZOOM MDK LCD

Steve Sakoman (2):
  omapfb: Add support for the OMAP3 EVM LCD
  omapfb: Add support for the Gumstix Overo LCD

arun c (2):
  omapfb: Add support for the OMAP2EVM LCD
  omapfb: Fix coding style / remove dead line

 arch/arm/configs/n770_defconfig |2 +-
 arch/arm/configs/omap3_beagle_defconfig |   47 ++-
 arch/arm/configs/omap_3430sdp_defconfig |   39 ++-
 arch/arm/configs/omap_ldp_defconfig |   54 +++-
 arch/arm/plat-omap/include/mach/lcd_mipid.h |5 +
 arch/arm/plat-omap/include/mach/omapfb.h|4 +-
 drivers/video/omap/Kconfig  |   82 +++-
 drivers/video/omap/Makefile |   12 +
 drivers/video/omap/blizzard.c   |   91 -
 drivers/video/omap/dispc.c  |  130 ---
 drivers/video/omap/dispc.h  |7 +-
 drivers/video/omap/hwa742.c |2 +-
 drivers/video/omap/lcd_2430sdp.c|  200 +
 drivers/video/omap/lcd_ams_delta.c  |  137 ++
 drivers/video/omap/lcd_apollon.c|  138 ++
 drivers/video/omap/lcd_ldp.c|  200 +
 drivers/video/omap/lcd_mipid.c  |  625 +++
 drivers/video/omap/lcd_omap2evm.c   |  189 
 drivers/video/omap/lcd_omap3beagle.c|  133 ++
 drivers/video/omap/lcd_omap3evm.c   |  191 
 drivers/video/omap/lcd_overo.c  |  179 
 drivers/video/omap/omapfb_main.c|   64 ++-
 drivers/video/omap/rfbi.c   |7 +-
 23 files changed, 2424 insertions(+), 114 deletions(-)
 create mode 100644 drivers/video/omap/lcd_2430sdp.c
 create mode 100644 drivers/video/omap/lcd_ams_delta.c
 create mode 100644 drivers/video/omap/lcd_apollon.c
 create mode 100644 drivers/video/omap/lcd_ldp.c
 create mode 100644 drivers/video/omap/lcd_mipid.c
 create mode 100644 drivers/video/omap/lcd_omap2evm.c
 create mode 100644 drivers/video/omap/lcd_omap3beagle.c
 create mode 100644 drivers/video/omap/lcd_omap3evm.c
 create mode 100644 drivers/video/omap/lcd_overo.c

--Imre
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] omapfb: Add support for MIPI-DCS compatible LCDs

2009-06-10 Thread Imre Deak
Fixed-by: Mike Wege ext-mike.w...@nokia.com
Fixed-by: Arnaud Patard arnaud.pat...@rtp-net.org
Fixed-by: Timo Savola tsav...@movial.fi
Fixed-by: Hiroshi DOYU hiroshi.d...@nokia.com
Fixed-by: Trilok Soni soni.tri...@gmail.com
Signed-off-by: Imre Deak imre.d...@solidboot.com
Signed-off-by: Juha Yrjola juha.yrj...@solidboot.com
---
 arch/arm/plat-omap/include/mach/lcd_mipid.h |5 +
 drivers/video/omap/Kconfig  |8 +
 drivers/video/omap/Makefile |1 +
 drivers/video/omap/lcd_mipid.c  |  625 +++
 4 files changed, 639 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_mipid.c

diff --git a/arch/arm/plat-omap/include/mach/lcd_mipid.h 
b/arch/arm/plat-omap/include/mach/lcd_mipid.h
index f8fbc48..8e52c65 100644
--- a/arch/arm/plat-omap/include/mach/lcd_mipid.h
+++ b/arch/arm/plat-omap/include/mach/lcd_mipid.h
@@ -16,7 +16,12 @@ enum mipid_test_result {
 struct mipid_platform_data {
int nreset_gpio;
int data_lines;
+
void(*shutdown)(struct mipid_platform_data *pdata);
+   void(*set_bklight_level)(struct mipid_platform_data *pdata,
+int level);
+   int (*get_bklight_level)(struct mipid_platform_data *pdata);
+   int (*get_bklight_max)(struct mipid_platform_data *pdata);
 };
 
 #endif
diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
index 4440885..574453f 100644
--- a/drivers/video/omap/Kconfig
+++ b/drivers/video/omap/Kconfig
@@ -7,6 +7,14 @@ config FB_OMAP
help
   Frame buffer driver for OMAP based boards.
 
+config FB_OMAP_LCD_MIPID
+   bool MIPI DBI-C/DCS compatible LCD support
+   depends on FB_OMAP  SPI_MASTER
+   help
+ Say Y here if you want to have support for LCDs compatible with
+ the Mobile Industry Processor Interface DBI-C/DCS
+ specification. (Supported LCDs: Philips LPH8923, Sharp LS041Y3)
+
 config FB_OMAP_BOOTLOADER_INIT
bool Check bootloader initialization
depends on FB_OMAP
diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index d053498..d86d54a 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -25,6 +25,7 @@ objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += 
lcd_inn1510.o
 objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 
 objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
+objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
 
 omapfb-objs := $(objs-yy)
 
diff --git a/drivers/video/omap/lcd_mipid.c b/drivers/video/omap/lcd_mipid.c
new file mode 100644
index 000..918ee89
--- /dev/null
+++ b/drivers/video/omap/lcd_mipid.c
@@ -0,0 +1,625 @@
+/*
+ * LCD driver for MIPI DBI-C / DCS compatible LCDs
+ *
+ * Copyright (C) 2006 Nokia Corporation
+ * Author: Imre Deak imre.d...@nokia.com
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+#include linux/device.h
+#include linux/delay.h
+#include linux/workqueue.h
+#include linux/spi/spi.h
+
+#include mach/omapfb.h
+#include mach/lcd_mipid.h
+
+#define MIPID_MODULE_NAME  lcd_mipid
+
+#define MIPID_CMD_READ_DISP_ID 0x04
+#define MIPID_CMD_READ_RED 0x06
+#define MIPID_CMD_READ_GREEN   0x07
+#define MIPID_CMD_READ_BLUE0x08
+#define MIPID_CMD_READ_DISP_STATUS 0x09
+#define MIPID_CMD_RDDSDR   0x0F
+#define MIPID_CMD_SLEEP_IN 0x10
+#define MIPID_CMD_SLEEP_OUT0x11
+#define MIPID_CMD_DISP_OFF 0x28
+#define MIPID_CMD_DISP_ON  0x29
+
+#define MIPID_ESD_CHECK_PERIOD msecs_to_jiffies(5000)
+
+#define to_mipid_device(p) container_of(p, struct mipid_device, \
+   panel)
+struct mipid_device {
+   int enabled;
+   int revision;
+   unsigned intsaved_bklight_level;
+   unsigned long   hw_guard_end;   /* next value of jiffies
+  when we can issue the
+  next sleep in/out command */
+   unsigned long   hw_guard_wait;  /* max guard time in jiffies */
+
+   struct omapfb_device*fbdev;
+   struct spi_device   *spi

Re: [Linux-fbdev-devel] [PATCH 02/20] omapfb: Add support for MIPI-DCS compatible LCDs

2009-06-09 Thread Imre Deak
Hi,

On Mon, Jun 08, 2009 at 12:43:24AM +0200, ext Krzysztof Helt wrote:
 On Thu,  4 Jun 2009 20:52:27 +0300
 Imre Deak imre.d...@nokia.com wrote:
[...]
  +
  +#define to_mipid_device(p) container_of(p, struct mipid_device, \
  +   panel)
  +struct mipid_device {
  +   int enabled;
  +   int model;
 
 This one is only set and never read. A name is probably enough.

Ok, I'll remove model.

 
  +   int revision;
  +   u8  display_id[3];
 
 This one should be a local variable.

Ok, I'll move it to the func where it's used.

 
  +   unsigned intsaved_bklight_level;
  +   unsigned long   hw_guard_end;   /* next value of jiffies
  +  when we can issue the
  +  next sleep in/out command */
  +   unsigned long   hw_guard_wait;  /* max guard time in jiffies */
  +
  +   struct omapfb_device*fbdev;
  +   struct spi_device   *spi;
  +   struct mutexmutex;
  +   struct lcd_panelpanel;
 
 How does it differ from fbdev-panel? Is it duplicated field?

fbdev-panel is a pointer to this device instance specific data. It's embedded 
here
so that we can get to struct mipid_device with the container_of macro when 
fbdev-panel
is passed to us.

 
 I am sorry but I had not enough time to review the rest.

Thanks for the review, if there is nothing else I can post a new version with 
the
above changes.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: LDP support

2009-06-04 Thread Imre Deak
On Thu, Jun 04, 2009 at 01:41:26AM +0200, ext Tony Lindgren wrote:
 * Russell King - ARM Linux li...@arm.linux.org.uk [090603 15:34]:
  On Thu, Jun 04, 2009 at 12:39:55AM +0300, Imre Deak wrote:
   I updated the omapfb-upstream branch on 
   git://koowaldah.org/people/imre/linux-2.6-fb,
   if these are ok with you I'll post them on the fb list.
  
  Just be aware that Linus released -rc8 on Tuesday, and said that will
  be the final rc before the merge window opens.  So I reckon there's less
  than a week to the merge window opening.
 
 Imre, few comments after browsing through your patches:
 
 omapfb: Add support for MIPI-DCS compatible LCDs seems to depend on
 drivers/cbus which is not yet merged. Please leave out those parts so
 it compiles. Then we can add the missing functions once drivers/cbus
 is merged in the future.
 
 omapfb: dispc: Add OMAP3 support should no longer be needed, this
 got already fixed with clkdev patch 005187eecaa400b4b43d9f640fbde9fcc50f37c1
 in mainline.
 
 omapfb: Fix coding style / remove dead line has a typo in Russell's
 name.

Thanks, I fixed these and updated the tree. From lcd_mipid I removed the
cbus thing and added platform hooks instead, so the backlight code should
be now in the board file. This needs to be added for n770, I'll follow-up
with a patch for that later.

There are two additional patches, one enabling the LCD in the N770 Kconfig
and a variable type fix for HWA742. Do you want to put these to omap-fixes
or I can just submit them?

How about the rest of the Kconfig changes?

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 01/20] omapfb: Add support for the Apollon LCD

2009-06-04 Thread Imre Deak
From: Kyungmin Park kyungmin.p...@samsung.com

Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/Makefile  |2 +
 drivers/video/omap/lcd_apollon.c |  138 ++
 2 files changed, 140 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_apollon.c

diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index ed13889..d053498 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -24,5 +24,7 @@ objs-$(CONFIG_ARCH_OMAP16XX)$(CONFIG_MACH_OMAP_INNOVATOR) += 
lcd_inn1610.o
 objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += lcd_inn1510.o
 objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 
+objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
+
 omapfb-objs := $(objs-yy)
 
diff --git a/drivers/video/omap/lcd_apollon.c b/drivers/video/omap/lcd_apollon.c
new file mode 100644
index 000..626ae3a
--- /dev/null
+++ b/drivers/video/omap/lcd_apollon.c
@@ -0,0 +1,138 @@
+/*
+ * LCD panel support for the Samsung OMAP2 Apollon board
+ *
+ * Copyright (C) 2005,2006 Samsung Electronics
+ * Author: Kyungmin Park kyungmin.p...@samsung.com
+ *
+ * Derived from drivers/video/omap/lcd-h4.c
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+
+#include mach/gpio.h
+#include mach/mux.h
+#include mach/omapfb.h
+
+/* #define USE_35INCH_LCD 1 */
+
+static int apollon_panel_init(struct lcd_panel *panel,
+   struct omapfb_device *fbdev)
+{
+   /* configure LCD PWR_EN */
+   omap_cfg_reg(M21_242X_GPIO11);
+   return 0;
+}
+
+static void apollon_panel_cleanup(struct lcd_panel *panel)
+{
+}
+
+static int apollon_panel_enable(struct lcd_panel *panel)
+{
+   return 0;
+}
+
+static void apollon_panel_disable(struct lcd_panel *panel)
+{
+}
+
+static unsigned long apollon_panel_get_caps(struct lcd_panel *panel)
+{
+   return 0;
+}
+
+struct lcd_panel apollon_panel = {
+   .name   = apollon,
+   .config = OMAP_LCDC_PANEL_TFT | OMAP_LCDC_INV_VSYNC |
+ OMAP_LCDC_INV_HSYNC,
+
+   .bpp= 16,
+   .data_lines = 18,
+#ifdef USE_35INCH_LCD
+   .x_res  = 240,
+   .y_res  = 320,
+   .hsw= 2,
+   .hfp= 3,
+   .hbp= 9,
+   .vsw= 4,
+   .vfp= 3,
+   .vbp= 5,
+#else
+   .x_res  = 480,
+   .y_res  = 272,
+   .hsw= 41,
+   .hfp= 2,
+   .hbp= 2,
+   .vsw= 10,
+   .vfp= 2,
+   .vbp= 2,
+#endif
+   .pixel_clock= 6250,
+
+   .init   = apollon_panel_init,
+   .cleanup= apollon_panel_cleanup,
+   .enable = apollon_panel_enable,
+   .disable= apollon_panel_disable,
+   .get_caps   = apollon_panel_get_caps,
+};
+
+static int apollon_panel_probe(struct platform_device *pdev)
+{
+   omapfb_register_panel(apollon_panel);
+   return 0;
+}
+
+static int apollon_panel_remove(struct platform_device *pdev)
+{
+   return 0;
+}
+
+static int apollon_panel_suspend(struct platform_device *pdev,
+ pm_message_t mesg)
+{
+   return 0;
+}
+
+static int apollon_panel_resume(struct platform_device *pdev)
+{
+   return 0;
+}
+
+struct platform_driver apollon_panel_driver = {
+   .probe  = apollon_panel_probe,
+   .remove = apollon_panel_remove,
+   .suspend= apollon_panel_suspend,
+   .resume = apollon_panel_resume,
+   .driver = {
+   .name   = apollon_lcd,
+   .owner  = THIS_MODULE,
+   },
+};
+
+static int __init apollon_panel_drv_init(void)
+{
+   return platform_driver_register(apollon_panel_driver);
+}
+
+static void __exit apollon_panel_drv_exit(void)
+{
+   platform_driver_unregister(apollon_panel_driver);
+}
+
+module_init(apollon_panel_drv_init);
+module_exit(apollon_panel_drv_exit);
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord

[PATCH 03/20] N770: Enable LCD MIPI-DCS in Kconfig

2009-06-04 Thread Imre Deak
CC: linux-arm-ker...@lists.arm.linux.org.uk
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 arch/arm/configs/n770_defconfig |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/configs/n770_defconfig b/arch/arm/configs/n770_defconfig
index 672f6db..a1657b7 100644
--- a/arch/arm/configs/n770_defconfig
+++ b/arch/arm/configs/n770_defconfig
@@ -875,7 +875,7 @@ CONFIG_FB_OMAP_LCDC_EXTERNAL=y
 CONFIG_FB_OMAP_LCDC_HWA742=y
 # CONFIG_FB_OMAP_LCDC_BLIZZARD is not set
 CONFIG_FB_OMAP_MANUAL_UPDATE=y
-# CONFIG_FB_OMAP_LCD_MIPID is not set
+CONFIG_FB_OMAP_LCD_MIPID=y
 # CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
 CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
 # CONFIG_FB_OMAP_DMA_TUNE is not set
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 06/20] omapfb: Add support for the OMAP2EVM LCD

2009-06-04 Thread Imre Deak
From: arun c arun.edar...@gmail.com

omap2evm LCD supports VGA and QVGA resolution, by default its in VGA mode.

Signed-off-by: Arun C arunedar...@mistralsolutions.com
Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: Jarkko Nikula jarkko.nik...@gmail.com
Fixed-by: David Brownell dbrown...@users.sourceforge.net
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/Makefile   |1 +
 drivers/video/omap/lcd_omap2evm.c |  189 +
 2 files changed, 190 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_omap2evm.c

diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index 7a37b03..c2475e3 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -27,6 +27,7 @@ objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 
 objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
 objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
+objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
 objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
 
 omapfb-objs := $(objs-yy)
diff --git a/drivers/video/omap/lcd_omap2evm.c 
b/drivers/video/omap/lcd_omap2evm.c
new file mode 100644
index 000..2fc46c2
--- /dev/null
+++ b/drivers/video/omap/lcd_omap2evm.c
@@ -0,0 +1,189 @@
+/*
+ * LCD panel support for the MISTRAL OMAP2EVM board
+ *
+ * Author: Arun C arunedar...@mistralsolutions.com
+ *
+ * Derived from drivers/video/omap/lcd_omap3evm.c
+ * Derived from drivers/video/omap/lcd-apollon.c
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/gpio.h
+#include linux/i2c/twl4030.h
+
+#include mach/mux.h
+#include mach/omapfb.h
+#include asm/mach-types.h
+
+#define LCD_PANEL_ENABLE_GPIO  154
+#define LCD_PANEL_LR   128
+#define LCD_PANEL_UD   129
+#define LCD_PANEL_INI  152
+#define LCD_PANEL_QVGA 148
+#define LCD_PANEL_RESB 153
+
+#define LCD_XRES   480
+#define LCD_YRES   640
+#define LCD_PIXCLOCK_MAX   2 /* in kHz */
+
+#define TWL_LED_LEDEN  0x00
+#define TWL_PWMA_PWMAON0x00
+#define TWL_PWMA_PWMAOFF   0x01
+
+static unsigned int bklight_level;
+
+static int omap2evm_panel_init(struct lcd_panel *panel,
+   struct omapfb_device *fbdev)
+{
+   gpio_request(LCD_PANEL_ENABLE_GPIO, LCD enable);
+   gpio_request(LCD_PANEL_LR, LCD lr);
+   gpio_request(LCD_PANEL_UD, LCD ud);
+   gpio_request(LCD_PANEL_INI, LCD ini);
+   gpio_request(LCD_PANEL_QVGA, LCD qvga);
+   gpio_request(LCD_PANEL_RESB, LCD resb);
+
+   gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 1);
+   gpio_direction_output(LCD_PANEL_RESB, 1);
+   gpio_direction_output(LCD_PANEL_INI, 1);
+   gpio_direction_output(LCD_PANEL_QVGA, 0);
+   gpio_direction_output(LCD_PANEL_LR, 1);
+   gpio_direction_output(LCD_PANEL_UD, 1);
+
+   twl4030_i2c_write_u8(TWL4030_MODULE_LED, 0x11, TWL_LED_LEDEN);
+   twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x01, TWL_PWMA_PWMAON);
+   twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x02, TWL_PWMA_PWMAOFF);
+   bklight_level = 100;
+
+   return 0;
+}
+
+static void omap2evm_panel_cleanup(struct lcd_panel *panel)
+{
+}
+
+static int omap2evm_panel_enable(struct lcd_panel *panel)
+{
+   gpio_set_value(LCD_PANEL_ENABLE_GPIO, 0);
+   return 0;
+}
+
+static void omap2evm_panel_disable(struct lcd_panel *panel)
+{
+   gpio_set_value(LCD_PANEL_ENABLE_GPIO, 1);
+}
+
+static unsigned long omap2evm_panel_get_caps(struct lcd_panel *panel)
+{
+   return 0;
+}
+
+static int omap2evm_bklight_setlevel(struct lcd_panel *panel,
+   unsigned int level)
+{
+   u8 c;
+   if ((level = 0)  (level = 100)) {
+   c = (125 * (100 - level)) / 100 + 2;
+   twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, c, TWL_PWMA_PWMAOFF);
+   bklight_level = level;
+   }
+   return 0;
+}
+
+static unsigned int omap2evm_bklight_getlevel(struct lcd_panel *panel)
+{
+   return bklight_level;
+}
+
+static unsigned int omap2evm_bklight_getmaxlevel(struct lcd_panel *panel)
+{
+   return 100;
+}
+
+struct lcd_panel omap2evm_panel = {
+   .name   = omap2evm

[PATCH 00/20] omapfb: Add support for new LCDs / misc fixes

2009-06-04 Thread Imre Deak
Hi,

I'd like to ask for the merging of this patchset into Linus' tree.
It adds support for new LCDs on OMAP based boards (01-12) and fixes
generic parts of the omapfb driver (13-20). The changes have been
staged in the Linux OMAP tree for quite a long time, so they should
be safe to be merged.

Note that this is about the existing DSS1 FB driver which will
eventually be replaced by Tomi Valkeinen's DSS2 FB driver.

Thanks,
Imre

[PATCH 01/20] omapfb: Add support for the Apollon LCD
[PATCH 02/20] omapfb: Add support for MIPI-DCS compatible LCDs
[PATCH 03/20] N770: Enable LCD MIPI-DCS in Kconfig
[PATCH 04/20] omapfb: Add support for the Amstrad Delta LCD
[PATCH 05/20] omapfb: Add support for the 2430SDP LCD
[PATCH 06/20] omapfb: Add support for the OMAP2EVM LCD
[PATCH 07/20] omapfb: Add support for the 3430SDP LCD
[PATCH 08/20] omapfb: Add support for the OMAP3 EVM LCD
[PATCH 09/20] omapfb: Add support for the OMAP3 Beagle DVI output
[PATCH 10/20] omapfb: Add support for the Gumstix Overo LCD
[PATCH 11/20] omapfb: Add support for the ZOOM MDK LCD
[PATCH 12/20] omapfb: Add support for rotation on the Blizzard LCD ctrl
[PATCH 13/20] omapfb: dispc: Various typo fixes
[PATCH 14/20] omapfb: dispc: Disable iface clocks along with func clocks
[PATCH 15/20] omapfb: dispc: Enable wake up capability
[PATCH 16/20] omapfb: dispc: Allow multiple external IRQ handlers
[PATCH 17/20] omapfb: suspend/resume only if FB device is already initialized
[PATCH 18/20] omapfb: Fix coding style / remove dead line
[PATCH 19/20] omapfb: Add FB manual update option to Kconfig
[PATCH 20/20] omapfb: HWA742: fix pointer to be const
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 02/20] omapfb: Add support for MIPI-DCS compatible LCDs

2009-06-04 Thread Imre Deak
Fixed-by: Mike Wege ext-mike.w...@nokia.com
Fixed-by: Arnaud Patard arnaud.pat...@rtp-net.org
Fixed-by: Timo Savola tsav...@movial.fi
Fixed-by: Hiroshi DOYU hiroshi.d...@nokia.com
Fixed-by: Trilok Soni soni.tri...@gmail.com
Signed-off-by: Imre Deak imre.d...@solidboot.com
Signed-off-by: Juha Yrjola juha.yrj...@solidboot.com
---
 arch/arm/plat-omap/include/mach/lcd_mipid.h |5 +
 drivers/video/omap/Kconfig  |8 +
 drivers/video/omap/Makefile |1 +
 drivers/video/omap/lcd_mipid.c  |  631 +++
 4 files changed, 645 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_mipid.c

diff --git a/arch/arm/plat-omap/include/mach/lcd_mipid.h 
b/arch/arm/plat-omap/include/mach/lcd_mipid.h
index f8fbc48..8e52c65 100644
--- a/arch/arm/plat-omap/include/mach/lcd_mipid.h
+++ b/arch/arm/plat-omap/include/mach/lcd_mipid.h
@@ -16,7 +16,12 @@ enum mipid_test_result {
 struct mipid_platform_data {
int nreset_gpio;
int data_lines;
+
void(*shutdown)(struct mipid_platform_data *pdata);
+   void(*set_bklight_level)(struct mipid_platform_data *pdata,
+int level);
+   int (*get_bklight_level)(struct mipid_platform_data *pdata);
+   int (*get_bklight_max)(struct mipid_platform_data *pdata);
 };
 
 #endif
diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
index 4440885..574453f 100644
--- a/drivers/video/omap/Kconfig
+++ b/drivers/video/omap/Kconfig
@@ -7,6 +7,14 @@ config FB_OMAP
help
   Frame buffer driver for OMAP based boards.
 
+config FB_OMAP_LCD_MIPID
+   bool MIPI DBI-C/DCS compatible LCD support
+   depends on FB_OMAP  SPI_MASTER
+   help
+ Say Y here if you want to have support for LCDs compatible with
+ the Mobile Industry Processor Interface DBI-C/DCS
+ specification. (Supported LCDs: Philips LPH8923, Sharp LS041Y3)
+
 config FB_OMAP_BOOTLOADER_INIT
bool Check bootloader initialization
depends on FB_OMAP
diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index d053498..d86d54a 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -25,6 +25,7 @@ objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += 
lcd_inn1510.o
 objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 
 objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
+objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
 
 omapfb-objs := $(objs-yy)
 
diff --git a/drivers/video/omap/lcd_mipid.c b/drivers/video/omap/lcd_mipid.c
new file mode 100644
index 000..3165d3d
--- /dev/null
+++ b/drivers/video/omap/lcd_mipid.c
@@ -0,0 +1,631 @@
+/*
+ * LCD driver for MIPI DBI-C / DCS compatible LCDs
+ *
+ * Copyright (C) 2006 Nokia Corporation
+ * Author: Imre Deak imre.d...@nokia.com
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+#include linux/device.h
+#include linux/delay.h
+#include linux/workqueue.h
+#include linux/spi/spi.h
+
+#include mach/omapfb.h
+#include mach/lcd_mipid.h
+
+#define MIPID_MODULE_NAME  lcd_mipid
+
+#define MIPID_CMD_READ_DISP_ID 0x04
+#define MIPID_CMD_READ_RED 0x06
+#define MIPID_CMD_READ_GREEN   0x07
+#define MIPID_CMD_READ_BLUE0x08
+#define MIPID_CMD_READ_DISP_STATUS 0x09
+#define MIPID_CMD_RDDSDR   0x0F
+#define MIPID_CMD_SLEEP_IN 0x10
+#define MIPID_CMD_SLEEP_OUT0x11
+#define MIPID_CMD_DISP_OFF 0x28
+#define MIPID_CMD_DISP_ON  0x29
+
+#define MIPID_VER_LPH8923  3
+#define MIPID_VER_LS041Y3  4
+
+#define MIPID_ESD_CHECK_PERIOD msecs_to_jiffies(5000)
+
+#define to_mipid_device(p) container_of(p, struct mipid_device, \
+   panel)
+struct mipid_device {
+   int enabled;
+   int model;
+   int revision;
+   u8  display_id[3];
+   unsigned intsaved_bklight_level;
+   unsigned long   hw_guard_end;   /* next value of jiffies
+  when we can issue the
+  next sleep in/out command

[PATCH 08/20] omapfb: Add support for the OMAP3 EVM LCD

2009-06-04 Thread Imre Deak
From: Steve Sakoman st...@sakoman.com

Add LCD support for OMAP3 EVM

Backlight support by Arun C arunedar...@mistralsolutions.com

Signed-off-by: Steve Sakoman st...@sakoman.com
Acked-by: Syed Mohammed Khasim kha...@ti.com
Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: Jarkko Nikula jarkko.nik...@gmail.com
Fixed-by: David Brownell dbrown...@users.sourceforge.net
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/Makefile   |1 +
 drivers/video/omap/lcd_omap3evm.c |  191 +
 2 files changed, 192 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_omap3evm.c

diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index 96d2d43..4345157 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -30,6 +30,7 @@ objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
 objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
 objs-y$(CONFIG_MACH_OMAP_3430SDP) += lcd_2430sdp.o
 objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
+objs-y$(CONFIG_MACH_OMAP3EVM) += lcd_omap3evm.o
 objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
 
 omapfb-objs := $(objs-yy)
diff --git a/drivers/video/omap/lcd_omap3evm.c 
b/drivers/video/omap/lcd_omap3evm.c
new file mode 100644
index 000..1c3d814
--- /dev/null
+++ b/drivers/video/omap/lcd_omap3evm.c
@@ -0,0 +1,191 @@
+/*
+ * LCD panel support for the TI OMAP3 EVM board
+ *
+ * Author: Steve Sakoman st...@sakoman.com
+ *
+ * Derived from drivers/video/omap/lcd-apollon.c
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/gpio.h
+#include linux/i2c/twl4030.h
+
+#include mach/mux.h
+#include mach/omapfb.h
+#include asm/mach-types.h
+
+#define LCD_PANEL_ENABLE_GPIO   153
+#define LCD_PANEL_LR2
+#define LCD_PANEL_UD3
+#define LCD_PANEL_INI   152
+#define LCD_PANEL_QVGA  154
+#define LCD_PANEL_RESB  155
+
+#define LCD_XRES   480
+#define LCD_YRES   640
+#define LCD_PIXCLOCK   26000 /* in kHz  */
+
+#define ENABLE_VDAC_DEDICATED  0x03
+#define ENABLE_VDAC_DEV_GRP0x20
+#define ENABLE_VPLL2_DEDICATED 0x05
+#define ENABLE_VPLL2_DEV_GRP   0xE0
+
+#define TWL_LED_LEDEN  0x00
+#define TWL_PWMA_PWMAON0x00
+#define TWL_PWMA_PWMAOFF   0x01
+
+static unsigned int bklight_level;
+
+static int omap3evm_panel_init(struct lcd_panel *panel,
+   struct omapfb_device *fbdev)
+{
+   gpio_request(LCD_PANEL_LR, LCD lr);
+   gpio_request(LCD_PANEL_UD, LCD ud);
+   gpio_request(LCD_PANEL_INI, LCD ini);
+   gpio_request(LCD_PANEL_RESB, LCD resb);
+   gpio_request(LCD_PANEL_QVGA, LCD qvga);
+
+   gpio_direction_output(LCD_PANEL_RESB, 1);
+   gpio_direction_output(LCD_PANEL_INI, 1);
+   gpio_direction_output(LCD_PANEL_QVGA, 0);
+   gpio_direction_output(LCD_PANEL_LR, 1);
+   gpio_direction_output(LCD_PANEL_UD, 1);
+
+   twl4030_i2c_write_u8(TWL4030_MODULE_LED, 0x11, TWL_LED_LEDEN);
+   twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x01, TWL_PWMA_PWMAON);
+   twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, 0x02, TWL_PWMA_PWMAOFF);
+   bklight_level = 100;
+
+   return 0;
+}
+
+static void omap3evm_panel_cleanup(struct lcd_panel *panel)
+{
+}
+
+static int omap3evm_panel_enable(struct lcd_panel *panel)
+{
+   gpio_set_value(LCD_PANEL_ENABLE_GPIO, 0);
+   return 0;
+}
+
+static void omap3evm_panel_disable(struct lcd_panel *panel)
+{
+   gpio_set_value(LCD_PANEL_ENABLE_GPIO, 1);
+}
+
+static unsigned long omap3evm_panel_get_caps(struct lcd_panel *panel)
+{
+   return 0;
+}
+
+static int omap3evm_bklight_setlevel(struct lcd_panel *panel,
+   unsigned int level)
+{
+   u8 c;
+   if ((level = 0)  (level = 100)) {
+   c = (125 * (100 - level)) / 100 + 2;
+   twl4030_i2c_write_u8(TWL4030_MODULE_PWMA, c, TWL_PWMA_PWMAOFF);
+   bklight_level = level;
+   }
+   return 0;
+}
+
+static unsigned int omap3evm_bklight_getlevel(struct lcd_panel *panel)
+{
+   return bklight_level;
+}
+
+static unsigned int omap3evm_bklight_getmaxlevel(struct

[PATCH 05/20] omapfb: Add support for the 2430SDP LCD

2009-06-04 Thread Imre Deak
From: Hunyue Yau h...@mvista.com

Add glue to control the 2430SDP LCD as a frame buffer device
using the existing dispc.c driver under omapfb.

Signed-off-by: Hunyue Yau h...@mvista.com
Signed-off-by: Kevin Hilman khil...@mvista.com
Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: Kevin Hilman khil...@mvista.com
Fixed-by: Sergio Aguirre saagui...@ti.com
Fixed-by: Francisco Alecrim francisco.alec...@indt.org.br
Fixed-by: Tony Lindgren t...@atomide.com
Fixed-by: David Brownell dbrown...@users.sourceforge.net
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/Makefile  |1 +
 drivers/video/omap/lcd_2430sdp.c |  196 ++
 2 files changed, 197 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_2430sdp.c

diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index 2bf94ad..7a37b03 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -26,6 +26,7 @@ objs-$(CONFIG_ARCH_OMAP15XX)$(CONFIG_MACH_OMAP_INNOVATOR) += 
lcd_inn1510.o
 objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 
 objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
+objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
 objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
 
 omapfb-objs := $(objs-yy)
diff --git a/drivers/video/omap/lcd_2430sdp.c b/drivers/video/omap/lcd_2430sdp.c
new file mode 100644
index 000..5bcbb8d
--- /dev/null
+++ b/drivers/video/omap/lcd_2430sdp.c
@@ -0,0 +1,196 @@
+/*
+ * LCD panel support for the TI 2430SDP board
+ *
+ * Copyright (C) 2007 MontaVista
+ * Author: Hunyue Yau h...@mvista.com
+ *
+ * Derived from drivers/video/omap/lcd-apollon.c
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/delay.h
+#include linux/gpio.h
+#include linux/i2c/twl4030.h
+
+#include mach/mux.h
+#include mach/omapfb.h
+#include asm/mach-types.h
+
+#define SDP2430_LCD_PANEL_BACKLIGHT_GPIO   91
+#define SDP2430_LCD_PANEL_ENABLE_GPIO  154
+#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO   24
+#define SDP3430_LCD_PANEL_ENABLE_GPIO  28
+
+static unsigned backlight_gpio;
+static unsigned enable_gpio;
+
+#define LCD_PANEL_BACKLIGHT_GPIO   91
+#define LCD_PANEL_ENABLE_GPIO  154
+#define LCD_PIXCLOCK_MAX   5400 /* freq 5.4 MHz */
+#define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER
+#define ENABLE_VAUX2_DEDICATED  0x09
+#define ENABLE_VAUX2_DEV_GRP0x20
+
+
+#define t2_out(c, r, v) twl4030_i2c_write_u8(c, r, v)
+
+
+static int sdp2430_panel_init(struct lcd_panel *panel,
+   struct omapfb_device *fbdev)
+{
+   if (machine_is_omap_3430sdp()) {
+   enable_gpio= SDP3430_LCD_PANEL_ENABLE_GPIO;
+   backlight_gpio = SDP3430_LCD_PANEL_BACKLIGHT_GPIO;
+   } else {
+   enable_gpio= SDP2430_LCD_PANEL_ENABLE_GPIO;
+   backlight_gpio = SDP2430_LCD_PANEL_BACKLIGHT_GPIO;
+   }
+
+   gpio_request(enable_gpio, LCD enable);/* LCD panel */
+   gpio_request(backlight_gpio, LCD bl); /* LCD backlight */
+   gpio_direction_output(enable_gpio, 0);
+   gpio_direction_output(backlight_gpio, 0);
+
+   return 0;
+}
+
+static void sdp2430_panel_cleanup(struct lcd_panel *panel)
+{
+}
+
+static int sdp2430_panel_enable(struct lcd_panel *panel)
+{
+   u8 ded_val, ded_reg;
+   u8 grp_val, grp_reg;
+
+   if (machine_is_omap_3430sdp()) {
+   ded_reg = TWL4030_VAUX3_DEDICATED;
+   ded_val = ENABLE_VAUX3_DEDICATED;
+   grp_reg = TWL4030_VAUX3_DEV_GRP;
+   grp_val = ENABLE_VAUX3_DEV_GRP;
+
+   if (omap_rev()  OMAP3430_REV_ES1_0) {
+   t2_out(PM_RECEIVER, ENABLE_VPLL2_DEDICATED,
+   TWL4030_VPLL2_DEDICATED);
+   t2_out(PM_RECEIVER, ENABLE_VPLL2_DEV_GRP,
+   TWL4030_VPLL2_DEV_GRP);
+   }
+   } else {
+   ded_reg = TWL4030_VAUX2_DEDICATED;
+   ded_val = ENABLE_VAUX2_DEDICATED;
+   grp_reg = TWL4030_VAUX2_DEV_GRP;
+   grp_val = ENABLE_VAUX2_DEV_GRP;
+   }
+
+   gpio_set_value(enable_gpio, 1

[PATCH 04/20] omapfb: Add support for the Amstrad Delta LCD

2009-06-04 Thread Imre Deak
From: Jonathan McDowell nood...@earth.li

This is an updated version of the LCD driver for the Amstrad Delta to
take into account the recent changes to the omapfb infrastructure. The
Delta features a 480x320 12 bit DSTN panel.

Signed-off-by: Jonathan McDowell nood...@earth.li
Signed-off-by: Tony Lindgren t...@atomide.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/Makefile|1 +
 drivers/video/omap/lcd_ams_delta.c |  137 
 2 files changed, 138 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_ams_delta.c

diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index d86d54a..2bf94ad 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -15,6 +15,7 @@ objs-$(CONFIG_ARCH_OMAP2)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += 
rfbi.o
 objs-y$(CONFIG_FB_OMAP_LCDC_HWA742) += hwa742.o
 objs-y$(CONFIG_FB_OMAP_LCDC_BLIZZARD) += blizzard.o
 
+objs-y$(CONFIG_MACH_AMS_DELTA) += lcd_ams_delta.o
 objs-y$(CONFIG_MACH_OMAP_H4) += lcd_h4.o
 objs-y$(CONFIG_MACH_OMAP_H3) += lcd_h3.o
 objs-y$(CONFIG_MACH_OMAP_PALMTE) += lcd_palmte.o
diff --git a/drivers/video/omap/lcd_ams_delta.c 
b/drivers/video/omap/lcd_ams_delta.c
new file mode 100644
index 000..1f74399
--- /dev/null
+++ b/drivers/video/omap/lcd_ams_delta.c
@@ -0,0 +1,137 @@
+/*
+ * Based on drivers/video/omap/lcd_inn1510.c
+ *
+ * LCD panel support for the Amstrad E3 (Delta) videophone.
+ *
+ * Copyright (C) 2006 Jonathan McDowell nood...@earth.li
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/io.h
+#include linux/delay.h
+
+#include mach/board-ams-delta.h
+#include mach/hardware.h
+#include mach/omapfb.h
+
+#define AMS_DELTA_DEFAULT_CONTRAST 112
+
+static int ams_delta_panel_init(struct lcd_panel *panel,
+   struct omapfb_device *fbdev)
+{
+   return 0;
+}
+
+static void ams_delta_panel_cleanup(struct lcd_panel *panel)
+{
+}
+
+static int ams_delta_panel_enable(struct lcd_panel *panel)
+{
+   ams_delta_latch2_write(AMS_DELTA_LATCH2_LCD_NDISP,
+   AMS_DELTA_LATCH2_LCD_NDISP);
+   ams_delta_latch2_write(AMS_DELTA_LATCH2_LCD_VBLEN,
+   AMS_DELTA_LATCH2_LCD_VBLEN);
+
+   omap_writeb(1, OMAP_PWL_CLK_ENABLE);
+   omap_writeb(AMS_DELTA_DEFAULT_CONTRAST, OMAP_PWL_ENABLE);
+
+   return 0;
+}
+
+static void ams_delta_panel_disable(struct lcd_panel *panel)
+{
+   ams_delta_latch2_write(AMS_DELTA_LATCH2_LCD_VBLEN, 0);
+   ams_delta_latch2_write(AMS_DELTA_LATCH2_LCD_NDISP, 0);
+}
+
+static unsigned long ams_delta_panel_get_caps(struct lcd_panel *panel)
+{
+   return 0;
+}
+
+static struct lcd_panel ams_delta_panel = {
+   .name   = ams-delta,
+   .config = 0,
+
+   .bpp= 12,
+   .data_lines = 16,
+   .x_res  = 480,
+   .y_res  = 320,
+   .pixel_clock= 4687,
+   .hsw= 3,
+   .hfp= 1,
+   .hbp= 1,
+   .vsw= 1,
+   .vfp= 0,
+   .vbp= 0,
+   .pcd= 0,
+   .acb= 37,
+
+   .init   = ams_delta_panel_init,
+   .cleanup= ams_delta_panel_cleanup,
+   .enable = ams_delta_panel_enable,
+   .disable= ams_delta_panel_disable,
+   .get_caps   = ams_delta_panel_get_caps,
+};
+
+static int ams_delta_panel_probe(struct platform_device *pdev)
+{
+   omapfb_register_panel(ams_delta_panel);
+   return 0;
+}
+
+static int ams_delta_panel_remove(struct platform_device *pdev)
+{
+   return 0;
+}
+
+static int ams_delta_panel_suspend(struct platform_device *pdev,
+   pm_message_t mesg)
+{
+   return 0;
+}
+
+static int ams_delta_panel_resume(struct platform_device *pdev)
+{
+   return 0;
+}
+
+struct platform_driver ams_delta_panel_driver = {
+   .probe  = ams_delta_panel_probe,
+   .remove = ams_delta_panel_remove,
+   .suspend= ams_delta_panel_suspend,
+   .resume = ams_delta_panel_resume,
+   .driver = {
+   .name   = lcd_ams_delta,
+   .owner  = THIS_MODULE

[PATCH 14/20] omapfb: dispc: Disable iface clocks along with func clocks

2009-06-04 Thread Imre Deak
From: Jouni Hogander jouni.hogan...@nokia.com

Leaving interface clocks enabled causes dss pwrdm to stay in active
state when mpu is in active state. This fix puts dss to sleep state
when it is not needed.

Earlier version broke framebuffer on 24xx. This is fixed by enabling
clocks before trying to access DISPC_IRQSTATUS register.

Signed-off-by: Jouni Hogander jouni.hogan...@nokia.com
Signed-off-by: Tony Lindgren t...@atomide.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/dispc.c |   23 ++-
 1 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
index 2db8fbb..cc3c817 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -858,8 +858,11 @@ EXPORT_SYMBOL(omap_dispc_free_irq);
 
 static irqreturn_t omap_dispc_irq_handler(int irq, void *dev)
 {
-   u32 stat = dispc_read_reg(DISPC_IRQSTATUS);
+   u32 stat;
 
+   enable_lcd_clocks(1);
+
+   stat = dispc_read_reg(DISPC_IRQSTATUS);
if (stat  DISPC_IRQ_FRAMEMASK)
complete(dispc.frame_done);
 
@@ -875,6 +878,8 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void 
*dev)
 
dispc_write_reg(DISPC_IRQSTATUS, stat);
 
+   enable_lcd_clocks(0);
+
return IRQ_HANDLED;
 }
 
@@ -913,18 +918,13 @@ static void put_dss_clocks(void)
 
 static void enable_lcd_clocks(int enable)
 {
-   if (enable)
+   if (enable) {
+   clk_enable(dispc.dss_ick);
clk_enable(dispc.dss1_fck);
-   else
+   } else {
clk_disable(dispc.dss1_fck);
-}
-
-static void enable_interface_clocks(int enable)
-{
-   if (enable)
-   clk_enable(dispc.dss_ick);
-   else
clk_disable(dispc.dss_ick);
+   }
 }
 
 static void enable_digit_clocks(int enable)
@@ -1365,7 +1365,6 @@ static int omap_dispc_init(struct omapfb_device *fbdev, 
int ext_mode,
if ((r = get_dss_clocks())  0)
goto fail0;
 
-   enable_interface_clocks(1);
enable_lcd_clocks(1);
 
 #ifdef CONFIG_FB_OMAP_BOOTLOADER_INIT
@@ -1469,7 +1468,6 @@ fail2:
free_irq(INT_24XX_DSS_IRQ, fbdev);
 fail1:
enable_lcd_clocks(0);
-   enable_interface_clocks(0);
put_dss_clocks();
 fail0:
iounmap(dispc.base);
@@ -1487,7 +1485,6 @@ static void omap_dispc_cleanup(void)
cleanup_fbmem();
free_palette_ram();
free_irq(INT_24XX_DSS_IRQ, dispc.fbdev);
-   enable_interface_clocks(0);
put_dss_clocks();
iounmap(dispc.base);
 }
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 12/20] omapfb: Add support for rotation on the Blizzard LCD ctrl

2009-06-04 Thread Imre Deak
From: Rodrigo Vivi rodrigo.v...@openbossa.org

The LCD controller (EPSON S1D13744) supports rotation (0, 90, 180
and 270 degrees) on hardware just setting the bits 0 and 1 of 0x28
register (LCD Panel Configuration Register). Now it is possible to
use this caps only setting the angle degree on var rotate of
fb_var_screeninfo using the FBIOPUT_VSCREENINFO ioctl.

Signed-off-by: Rodrigo Vivi rodrigo.v...@openbossa.org
Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: Siarhei Siamashka siarhei.siamas...@nokia.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/blizzard.c|   91 +++--
 drivers/video/omap/omapfb_main.c |   52 --
 2 files changed, 124 insertions(+), 19 deletions(-)

diff --git a/drivers/video/omap/blizzard.c b/drivers/video/omap/blizzard.c
index 9dfcf39..d5e5955 100644
--- a/drivers/video/omap/blizzard.c
+++ b/drivers/video/omap/blizzard.c
@@ -44,6 +44,7 @@
 #define BLIZZARD_CLK_SRC   0x0e
 #define BLIZZARD_MEM_BANK0_ACTIVATE0x10
 #define BLIZZARD_MEM_BANK0_STATUS  0x14
+#define BLIZZARD_PANEL_CONFIGURATION   0x28
 #define BLIZZARD_HDISP 0x2a
 #define BLIZZARD_HNDP  0x2c
 #define BLIZZARD_VDISP00x2e
@@ -162,6 +163,10 @@ struct blizzard_struct {
int vid_scaled;
int last_color_mode;
int zoom_on;
+   int zoom_area_gx1;
+   int zoom_area_gx2;
+   int zoom_area_gy1;
+   int zoom_area_gy2;
int screen_width;
int screen_height;
unsignedte_connected:1;
@@ -513,6 +518,13 @@ static int do_full_screen_update(struct blizzard_request 
*req)
return REQ_PENDING;
 }
 
+static int check_1d_intersect(int a1, int a2, int b1, int b2)
+{
+   if (a2 = b1 || b2 = a1)
+   return 0;
+   return 1;
+}
+
 /* Setup all planes with an overlapping area with the update window. */
 static int do_partial_update(struct blizzard_request *req, int plane,
 int x, int y, int w, int h,
@@ -525,6 +537,7 @@ static int do_partial_update(struct blizzard_request *req, 
int plane,
int color_mode;
int flags;
int zoom_off;
+   int have_zoom_for_this_update = 0;
 
/* Global coordinates, relative to pixel 0,0 of the LCD */
gx1 = x + blizzard.plane[plane].pos_x;
@@ -544,10 +557,6 @@ static int do_partial_update(struct blizzard_request *req, 
int plane,
gx2_out = gx1_out + w_out;
gy2_out = gy1_out + h_out;
}
-   zoom_off = blizzard.zoom_on  gx1 == 0  gy1 == 0 
-   w == blizzard.screen_width  h == blizzard.screen_height;
-   blizzard.zoom_on = (!zoom_off  blizzard.zoom_on) ||
-  (w  w_out || h  h_out);
 
for (i = 0; i  OMAPFB_PLANE_NUM; i++) {
struct plane_info *p = blizzard.plane[i];
@@ -653,8 +662,49 @@ static int do_partial_update(struct blizzard_request *req, 
int plane,
else
disable_tearsync();
 
+   if ((gx2_out - gx1_out) != (gx2 - gx1) ||
+   (gy2_out - gy1_out) != (gy2 - gy1))
+   have_zoom_for_this_update = 1;
+
+   /* 'background' type of screen update (as opposed to 'destructive')
+  can be used to disable scaling if scaling is active */
+   zoom_off = blizzard.zoom_on  !have_zoom_for_this_update 
+   (gx1_out == 0)  (gx2_out == blizzard.screen_width) 
+   (gy1_out == 0)  (gy2_out == blizzard.screen_height) 
+   (gx1 == 0)  (gy1 == 0);
+
+   if (blizzard.zoom_on  !have_zoom_for_this_update  !zoom_off 
+   check_1d_intersect(blizzard.zoom_area_gx1, blizzard.zoom_area_gx2,
+  gx1_out, gx2_out) 
+   check_1d_intersect(blizzard.zoom_area_gy1, blizzard.zoom_area_gy2,
+  gy1_out, gy2_out)) {
+   /* Previous screen update was using scaling, current update
+* is not using it. Additionally, current screen update is
+* going to overlap with the scaled area. Scaling needs to be
+* disabled in order to avoid 'magnifying glass' effect.
+* Dummy setup of background window can be used for this.
+*/
+   set_window_regs(0, 0, blizzard.screen_width,
+   blizzard.screen_height,
+   0, 0, blizzard.screen_width,
+   blizzard.screen_height,
+   BLIZZARD_COLOR_RGB565, 1, flags);
+   blizzard.zoom_on = 0;
+   }
+
+   /* remember scaling settings if we have scaled update

[PATCH 10/20] omapfb: Add support for the Gumstix Overo LCD

2009-06-04 Thread Imre Deak
From: Steve Sakoman st...@sakoman.com

Signed-off-by: Steve Sakoman st...@sakoman.com
Signed-off-by: Tony Lindgren t...@atomide.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/Kconfig |   21 +
 drivers/video/omap/Makefile|1 +
 drivers/video/omap/lcd_overo.c |  179 
 3 files changed, 201 insertions(+), 0 deletions(-)
 create mode 100644 drivers/video/omap/lcd_overo.c

diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
index 574453f..eb05e09 100644
--- a/drivers/video/omap/Kconfig
+++ b/drivers/video/omap/Kconfig
@@ -7,6 +7,27 @@ config FB_OMAP
help
   Frame buffer driver for OMAP based boards.
 
+choice
+   depends on FB_OMAP  MACH_OVERO
+   prompt Screen resolution
+   default FB_OMAP_079M3R
+   help
+ Selected desired screen resolution
+
+config FB_OMAP_031M3R
+   boolean 640 x 480 @ 60 Hz Reduced blanking
+
+config FB_OMAP_048M3R
+   boolean 800 x 600 @ 60 Hz Reduced blanking
+
+config FB_OMAP_079M3R
+   boolean 1024 x 768 @ 60 Hz Reduced blanking
+
+config FB_OMAP_092M9R
+   boolean 1280 x 720 @ 60 Hz Reduced blanking
+
+endchoice
+
 config FB_OMAP_LCD_MIPID
bool MIPI DBI-C/DCS compatible LCD support
depends on FB_OMAP  SPI_MASTER
diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index 9ff1815..0d2996a 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -33,6 +33,7 @@ objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
 objs-y$(CONFIG_MACH_OMAP3EVM) += lcd_omap3evm.o
 objs-y$(CONFIG_MACH_OMAP3_BEAGLE) += lcd_omap3beagle.o
 objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
+objs-y$(CONFIG_MACH_OVERO) += lcd_overo.o
 
 omapfb-objs := $(objs-yy)
 
diff --git a/drivers/video/omap/lcd_overo.c b/drivers/video/omap/lcd_overo.c
new file mode 100644
index 000..2bc5c92
--- /dev/null
+++ b/drivers/video/omap/lcd_overo.c
@@ -0,0 +1,179 @@
+/*
+ * LCD panel support for the Gumstix Overo
+ *
+ * Author: Steve Sakoman st...@sakoman.com
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/i2c/twl4030.h
+
+#include mach/gpio.h
+#include mach/mux.h
+#include mach/omapfb.h
+#include asm/mach-types.h
+
+#define LCD_ENABLE   144
+
+static int overo_panel_init(struct lcd_panel *panel,
+   struct omapfb_device *fbdev)
+{
+   if ((gpio_request(LCD_ENABLE, LCD_ENABLE) == 0) 
+   (gpio_direction_output(LCD_ENABLE, 1) == 0))
+   gpio_export(LCD_ENABLE, 0);
+   else
+   printk(KERN_ERR could not obtain gpio for LCD_ENABLE\n);
+
+   return 0;
+}
+
+static void overo_panel_cleanup(struct lcd_panel *panel)
+{
+   gpio_free(LCD_ENABLE);
+}
+
+static int overo_panel_enable(struct lcd_panel *panel)
+{
+   gpio_set_value(LCD_ENABLE, 1);
+   return 0;
+}
+
+static void overo_panel_disable(struct lcd_panel *panel)
+{
+   gpio_set_value(LCD_ENABLE, 0);
+}
+
+static unsigned long overo_panel_get_caps(struct lcd_panel *panel)
+{
+   return 0;
+}
+
+struct lcd_panel overo_panel = {
+   .name   = overo,
+   .config = OMAP_LCDC_PANEL_TFT,
+   .bpp= 16,
+   .data_lines = 24,
+
+#if defined CONFIG_FB_OMAP_031M3R
+
+   /* 640 x 480 @ 60 Hz  Reduced blanking VESA CVT 0.31M3-R */
+   .x_res  = 640,
+   .y_res  = 480,
+   .hfp= 48,
+   .hsw= 32,
+   .hbp= 80,
+   .vfp= 3,
+   .vsw= 4,
+   .vbp= 7,
+   .pixel_clock= 23500,
+
+#elif defined CONFIG_FB_OMAP_048M3R
+
+   /* 800 x 600 @ 60 Hz  Reduced blanking VESA CVT 0.48M3-R */
+   .x_res  = 800,
+   .y_res  = 600,
+   .hfp= 48,
+   .hsw= 32,
+   .hbp= 80,
+   .vfp= 3,
+   .vsw= 4,
+   .vbp= 11,
+   .pixel_clock= 35500,
+
+#elif defined CONFIG_FB_OMAP_079M3R
+
+   /* 1024 x 768 @ 60 Hz  Reduced blanking VESA CVT 0.79M3-R */
+   .x_res  = 1024,
+   .y_res  = 768,
+   .hfp= 48,
+   .hsw

[PATCH 13/20] omapfb: dispc: Various typo fixes

2009-06-04 Thread Imre Deak
- value and register offset was swapped in a dispc write
- DISPC_CONTROL register was used instead of DISPC_SYSCONFIG
- FIFO size bit field had incorrect length for OMAP3

Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: arun arunedar...@mistralsolutions.com
Fixed-by: Kalle Jokiniemi ext-kalle.jokini...@nokia.com
Fixed-by: Andrzej Zaborowski bal...@zabor.org
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/dispc.c |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
index 148cbcc..2db8fbb 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -286,7 +286,7 @@ static void setup_plane_fifo(int plane, int ext_mode)
BUG_ON(plane  2);
 
l = dispc_read_reg(fsz_reg[plane]);
-   l = FLD_MASK(0, 9);
+   l = FLD_MASK(0, 11);
if (ext_mode) {
low = l * 3 / 4;
high = l;
@@ -294,7 +294,7 @@ static void setup_plane_fifo(int plane, int ext_mode)
low = l / 4;
high = l * 3 / 4;
}
-   MOD_REG_FLD(ftrs_reg[plane], FLD_MASK(16, 9) | FLD_MASK(0, 9),
+   MOD_REG_FLD(ftrs_reg[plane], FLD_MASK(16, 12) | FLD_MASK(0, 12),
(high  16) | low);
 }
 
@@ -1397,7 +1397,7 @@ static int omap_dispc_init(struct omapfb_device *fbdev, 
int ext_mode,
}
 
/* Enable smart idle and autoidle */
-   l = dispc_read_reg(DISPC_CONTROL);
+   l = dispc_read_reg(DISPC_SYSCONFIG);
l = ~((3  12) | (3  3));
l |= (2  12) | (2  3) | (1  0);
dispc_write_reg(DISPC_SYSCONFIG, l);
@@ -1409,7 +1409,7 @@ static int omap_dispc_init(struct omapfb_device *fbdev, 
int ext_mode,
dispc_write_reg(DISPC_CONFIG, l);
 
l = dispc_read_reg(DISPC_IRQSTATUS);
-   dispc_write_reg(l, DISPC_IRQSTATUS);
+   dispc_write_reg(DISPC_IRQSTATUS, l);
 
/* Enable those that we handle always */
omap_dispc_enable_irqs(DISPC_IRQ_FRAMEMASK);
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 07/20] omapfb: Add support for the 3430SDP LCD

2009-06-04 Thread Imre Deak
From: Kevin Hilman khil...@mvista.com

The 3430SDP uses the same panel as the 2430SDP.  The main difference
are in the GPIO lines used for panel enable and backlight, and the
VAUX register/commands sent to the TWL4030 power subsystem.

Also, some misc. whitespace cleanups.

Signed-off-by: Kevin Hilman khil...@mvsita.com
Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: Tony Lindgren t...@atomide.com
CC: linux-arm-ker...@lists.arm.linux.org.uk
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 arch/arm/configs/omap_3430sdp_defconfig |   39 +-
 drivers/video/omap/Makefile |2 +
 drivers/video/omap/lcd_2430sdp.c|   12 ++---
 3 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/arch/arm/configs/omap_3430sdp_defconfig 
b/arch/arm/configs/omap_3430sdp_defconfig
index 8fb918d..73e0128 100644
--- a/arch/arm/configs/omap_3430sdp_defconfig
+++ b/arch/arm/configs/omap_3430sdp_defconfig
@@ -1313,8 +1313,33 @@ CONFIG_DVB_ISL6421=m
 # Graphics support
 #
 # CONFIG_VGASTATE is not set
-# CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_FB is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
@@ -1331,6 +1356,16 @@ CONFIG_DISPLAY_SUPPORT=y
 #
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
 CONFIG_SOUND=y
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SND=y
diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index c2475e3..96d2d43 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -8,6 +8,7 @@ objs-yy := omapfb_main.o
 
 objs-y$(CONFIG_ARCH_OMAP1) += lcdc.o
 objs-y$(CONFIG_ARCH_OMAP2) += dispc.o
+objs-y$(CONFIG_ARCH_OMAP3) += dispc.o
 
 objs-$(CONFIG_ARCH_OMAP1)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += sossi.o
 objs-$(CONFIG_ARCH_OMAP2)$(CONFIG_FB_OMAP_LCDC_EXTERNAL) += rfbi.o
@@ -27,6 +28,7 @@ objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 
 objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
 objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
+objs-y$(CONFIG_MACH_OMAP_3430SDP) += lcd_2430sdp.o
 objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
 objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
 
diff --git a/drivers/video/omap/lcd_2430sdp.c b/drivers/video/omap/lcd_2430sdp.c
index 5bcbb8d..13c822e 100644
--- a/drivers/video/omap/lcd_2430sdp.c
+++ b/drivers/video/omap/lcd_2430sdp.c
@@ -39,13 +39,17 @@
 static unsigned backlight_gpio;
 static unsigned enable_gpio;
 
-#define LCD_PANEL_BACKLIGHT_GPIO   91
-#define LCD_PANEL_ENABLE_GPIO  154
 #define LCD_PIXCLOCK_MAX   5400 /* freq 5.4 MHz */
 #define PM_RECEIVER TWL4030_MODULE_PM_RECEIVER
 #define ENABLE_VAUX2_DEDICATED  0x09
 #define ENABLE_VAUX2_DEV_GRP0x20
+#define ENABLE_VAUX3_DEDICATED 0x03
+#define ENABLE_VAUX3_DEV_GRP   0x20
 
+#define ENABLE_VPLL2_DEDICATED  0x05
+#define ENABLE_VPLL2_DEV_GRP0xE0
+#define TWL4030_VPLL2_DEV_GRP   0x33
+#define TWL4030_VPLL2_DEDICATED 0x36
 
 #define t2_out(c, r, v) twl4030_i2c_write_u8(c, r, v)
 
@@ -144,7 +148,7 @@ struct lcd_panel sdp2430_panel = {
 
.init   = sdp2430_panel_init,
.cleanup= sdp2430_panel_cleanup,
-   .enable = sdp2430_panel_enable,
+   .enable = sdp2430_panel_enable,
.disable= sdp2430_panel_disable,
.get_caps   = sdp2430_panel_get_caps,
 };
@@ -174,7 +178,7 @@ static int sdp2430_panel_resume(struct platform_device 
*pdev)
 struct platform_driver sdp2430_panel_driver = {
.probe  = sdp2430_panel_probe,
.remove = sdp2430_panel_remove,
-   .suspend= sdp2430_panel_suspend,
+   .suspend= sdp2430_panel_suspend,
.resume = sdp2430_panel_resume,
.driver = {
.name   = sdp2430_lcd,
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body

[PATCH 17/20] omapfb: suspend/resume only if FB device is already initialized

2009-06-04 Thread Imre Deak
From: Jouni Högander jouni.hogan...@nokia.com

Check wether fbdev is NULL in suspend / resume functions. Fbdev is
NULL, if there is no lcd or it is not enabled in configuration.

Signed-off-by: Jouni Högander jouni.hogan...@nokia.com
Signed-off-by: Tony Lindgren t...@atomide.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/omapfb_main.c |7 ---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
index 5b04b9c..098177b 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
@@ -1842,8 +1842,8 @@ static int omapfb_suspend(struct platform_device *pdev, 
pm_message_t mesg)
 {
struct omapfb_device *fbdev = platform_get_drvdata(pdev);
 
-   omapfb_blank(FB_BLANK_POWERDOWN, fbdev-fb_info[0]);
-
+   if (fbdev != NULL)
+   omapfb_blank(FB_BLANK_POWERDOWN, fbdev-fb_info[0]);
return 0;
 }
 
@@ -1852,7 +1852,8 @@ static int omapfb_resume(struct platform_device *pdev)
 {
struct omapfb_device *fbdev = platform_get_drvdata(pdev);
 
-   omapfb_blank(FB_BLANK_UNBLANK, fbdev-fb_info[0]);
+   if (fbdev != NULL)
+   omapfb_blank(FB_BLANK_UNBLANK, fbdev-fb_info[0]);
return 0;
 }
 
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 11/20] omapfb: Add support for the ZOOM MDK LCD

2009-06-04 Thread Imre Deak
From: Stanley.Miao stanley.m...@windriver.com

Add glue to control the OMAP_LDP LCD as a frame buffer device
using the existing dispc.c driver under omapfb.

Patch updated for mainline kernel. Note that the
drivers/video/omap should be updated to pass omap_lcd_config
in platform_data. The patch should also be updated to compile
if twl4030 is not selected, and eventually to use the regulator
framework.

Signed-off-by: Stanley.Miao stanley.m...@windriver.com
Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: Jarkko Nikula jarkko.nik...@gmail.com
Fixed-by: Tony Lindgren t...@atomide.com
CC: linux-arm-ker...@lists.arm.linux.org.uk
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 arch/arm/configs/omap_ldp_defconfig |   54 +-
 drivers/video/omap/Kconfig  |4 +
 drivers/video/omap/Makefile |1 +
 drivers/video/omap/lcd_ldp.c|  200 +++
 4 files changed, 257 insertions(+), 2 deletions(-)
 create mode 100644 drivers/video/omap/lcd_ldp.c

diff --git a/arch/arm/configs/omap_ldp_defconfig 
b/arch/arm/configs/omap_ldp_defconfig
index 679a4a3..b9c4891 100644
--- a/arch/arm/configs/omap_ldp_defconfig
+++ b/arch/arm/configs/omap_ldp_defconfig
@@ -690,6 +690,7 @@ CONFIG_GPIOLIB=y
 # CONFIG_GPIO_MAX732X is not set
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_GPIO_PCF857X is not set
+CONFIG_GPIO_TWL4030=y
 
 #
 # PCI GPIO expanders:
@@ -742,6 +743,7 @@ CONFIG_SSB_POSSIBLE=y
 # CONFIG_MFD_SM501 is not set
 # CONFIG_HTC_EGPIO is not set
 # CONFIG_HTC_PASIC3 is not set
+CONFIG_TWL4030_CORE=y
 # CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_TC6387XB is not set
@@ -767,8 +769,46 @@ CONFIG_DAB=y
 #
 # CONFIG_VGASTATE is not set
 CONFIG_VIDEO_OUTPUT_CONTROL=m
-# CONFIG_FB is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+CONFIG_FB_OMAP=y
+CONFIG_FB_OMAP_LCD_VGA=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=4
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+# CONFIG_BACKLIGHT_GENERIC is not set
 
 #
 # Display device support
@@ -780,6 +820,16 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m
 #
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
 CONFIG_SOUND=y
 CONFIG_SND=y
 # CONFIG_SND_SEQUENCER is not set
diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
index eb05e09..2bffc07 100644
--- a/drivers/video/omap/Kconfig
+++ b/drivers/video/omap/Kconfig
@@ -7,6 +7,10 @@ config FB_OMAP
help
   Frame buffer driver for OMAP based boards.
 
+config FB_OMAP_LCD_VGA
+bool Use LCD in VGA mode
+   depends on MACH_OMAP_3430SDP || MACH_OMAP_LDP
+
 choice
depends on FB_OMAP  MACH_OVERO
prompt Screen resolution
diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index 0d2996a..b63b198 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -29,6 +29,7 @@ objs-y$(CONFIG_MACH_OMAP_OSK) += lcd_osk.o
 objs-y$(CONFIG_MACH_OMAP_APOLLON) += lcd_apollon.o
 objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
 objs-y$(CONFIG_MACH_OMAP_3430SDP) += lcd_2430sdp.o
+objs-y$(CONFIG_MACH_OMAP_LDP) += lcd_ldp.o
 objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
 objs-y$(CONFIG_MACH_OMAP3EVM) += lcd_omap3evm.o
 objs-y$(CONFIG_MACH_OMAP3_BEAGLE) += lcd_omap3beagle.o
diff --git a/drivers/video/omap/lcd_ldp.c b/drivers/video/omap/lcd_ldp.c
new file mode 100644
index 000..8925230
--- /dev/null
+++ b/drivers/video/omap/lcd_ldp.c
@@ -0,0 +1,200 @@
+/*
+ * LCD panel support for the TI LDP board
+ *
+ * Copyright (C) 2007 WindRiver
+ * Author: Stanley Miao stanley.m...@windriver.com
+ *
+ * Derived from drivers/video/omap/lcd-2430sdp.c
+ *
+ * This program is free

[PATCH 09/20] omapfb: Add support for the OMAP3 Beagle DVI output

2009-06-04 Thread Imre Deak
From: Koen Kooi k...@openembedded.org

The default resolution is 1024x...@24bit

This version addresses the comments from Felipe Balbi adn Arun Edarath

Signed-off-by: Koen Kooi k...@openembedded.org
Signed-off-by: Tony Lindgren t...@atomide.com
Fixed-by: Felipe Contreras felipe.contre...@gmail.com
Fixed-by: Steve Sakoman st...@sakoman.com
Fixed-by: Jarkko Nikula jarkko.nik...@gmail.com
Fixed-by: David Brownell dbrown...@users.sourceforge.net
CC: linux-arm-ker...@lists.arm.linux.org.uk
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 arch/arm/configs/omap3_beagle_defconfig |   47 +++-
 drivers/video/omap/Makefile |1 +
 drivers/video/omap/lcd_omap3beagle.c|  133 +++
 3 files changed, 180 insertions(+), 1 deletions(-)
 create mode 100644 drivers/video/omap/lcd_omap3beagle.c

diff --git a/arch/arm/configs/omap3_beagle_defconfig 
b/arch/arm/configs/omap3_beagle_defconfig
index 4c6fb7e..c4726f0 100644
--- a/arch/arm/configs/omap3_beagle_defconfig
+++ b/arch/arm/configs/omap3_beagle_defconfig
@@ -769,7 +769,33 @@ CONFIG_DAB=y
 #
 # CONFIG_VGASTATE is not set
 # CONFIG_VIDEO_OUTPUT_CONTROL is not set
-# CONFIG_FB is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
@@ -782,6 +808,25 @@ CONFIG_DAB=y
 #
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
 # CONFIG_SOUND is not set
 # CONFIG_HID_SUPPORT is not set
 CONFIG_USB_SUPPORT=y
diff --git a/drivers/video/omap/Makefile b/drivers/video/omap/Makefile
index 4345157..9ff1815 100644
--- a/drivers/video/omap/Makefile
+++ b/drivers/video/omap/Makefile
@@ -31,6 +31,7 @@ objs-y$(CONFIG_MACH_OMAP_2430SDP) += lcd_2430sdp.o
 objs-y$(CONFIG_MACH_OMAP_3430SDP) += lcd_2430sdp.o
 objs-y$(CONFIG_MACH_OMAP2EVM) += lcd_omap2evm.o
 objs-y$(CONFIG_MACH_OMAP3EVM) += lcd_omap3evm.o
+objs-y$(CONFIG_MACH_OMAP3_BEAGLE) += lcd_omap3beagle.o
 objs-y$(CONFIG_FB_OMAP_LCD_MIPID) += lcd_mipid.o
 
 omapfb-objs := $(objs-yy)
diff --git a/drivers/video/omap/lcd_omap3beagle.c 
b/drivers/video/omap/lcd_omap3beagle.c
new file mode 100644
index 000..40454dc
--- /dev/null
+++ b/drivers/video/omap/lcd_omap3beagle.c
@@ -0,0 +1,133 @@
+/*
+ * LCD panel support for the TI OMAP3 Beagle board
+ *
+ * Author: Koen Kooi k...@openembedded.org
+ *
+ * Derived from drivers/video/omap/lcd-omap3evm.c
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/gpio.h
+#include linux/i2c/twl4030.h
+
+#include mach/mux.h
+#include mach/omapfb.h
+#include asm/mach-types.h
+
+#define LCD_PANEL_ENABLE_GPIO   170
+
+#define LCD_XRES   1024
+#define LCD_YRES   768
+#define LCD_PIXCLOCK   64000 /* in kHz */
+
+static int omap3beagle_panel_init(struct lcd_panel *panel,
+   struct omapfb_device *fbdev)
+{
+   gpio_request(LCD_PANEL_ENABLE_GPIO, LCD enable);
+   return 0;
+}
+
+static void omap3beagle_panel_cleanup(struct lcd_panel *panel)
+{
+}
+
+static int

[PATCH 18/20] omapfb: Fix coding style / remove dead line

2009-06-04 Thread Imre Deak
From: arun c arunedar...@mistralsolutions.com

- use __iomem type attribute where appropriate
- expand (a ? : b) to (a ? a : b)
As suggested by Russell King li...@arm.linux.org.uk

- remove a dead line from omapfb_main.c

Signed-off-by: Arun C arunedar...@mistralsolutions.com
Signed-off-by: Tony Lindgren t...@atomide.com
CC: linux-arm-ker...@lists.arm.linux.org.uk
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 arch/arm/plat-omap/include/mach/omapfb.h |4 ++--
 drivers/video/omap/omapfb_main.c |5 ++---
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/arch/arm/plat-omap/include/mach/omapfb.h 
b/arch/arm/plat-omap/include/mach/omapfb.h
index 7b74d12..b226bdf 100644
--- a/arch/arm/plat-omap/include/mach/omapfb.h
+++ b/arch/arm/plat-omap/include/mach/omapfb.h
@@ -276,8 +276,8 @@ typedef int (*omapfb_notifier_callback_t)(struct 
notifier_block *,
  void *fbi);
 
 struct omapfb_mem_region {
-   dma_addr_t  paddr;
-   void*vaddr;
+   u32 paddr;
+   void __iomem*vaddr;
unsigned long   size;
u8  type;   /* OMAPFB_PLANE_MEM_* */
unsignedalloc:1;/* allocated by the driver */
diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
index 098177b..0df4523 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
@@ -562,7 +562,6 @@ static int set_fb_var(struct fb_info *fbi,
var-xoffset = var-xres_virtual - var-xres;
if (var-yres + var-yoffset  var-yres_virtual)
var-yoffset = var-yres_virtual - var-yres;
-   line_size = var-xres * bpp / 8;
 
if (plane-color_mode == OMAPFB_COLOR_RGB444) {
var-red.offset   = 8; var-red.length   = 4;
@@ -1719,8 +1718,8 @@ static int omapfb_do_probe(struct platform_device *pdev,
 
pr_info(omapfb: configured for panel %s\n, fbdev-panel-name);
 
-   def_vxres = def_vxres ? : fbdev-panel-x_res;
-   def_vyres = def_vyres ? : fbdev-panel-y_res;
+   def_vxres = def_vxres ? def_vxres : fbdev-panel-x_res;
+   def_vyres = def_vyres ? def_vyres : fbdev-panel-y_res;
 
init_state++;
 
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 20/20] omapfb: HWA742: fix pointer to be const

2009-06-04 Thread Imre Deak
Fixes the following:
warning: assignment discards qualifiers from pointer target type

CC: linux-arm-ker...@lists.arm.linux.org.uk
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/hwa742.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/video/omap/hwa742.c b/drivers/video/omap/hwa742.c
index 8aa6e47..7bbd4c7 100644
--- a/drivers/video/omap/hwa742.c
+++ b/drivers/video/omap/hwa742.c
@@ -131,7 +131,7 @@ struct {
 
struct omapfb_device*fbdev;
struct lcd_ctrl_extif   *extif;
-   struct lcd_ctrl *int_ctrl;
+   const struct lcd_ctrl   *int_ctrl;
 
void(*power_up)(struct device *dev);
void(*power_down)(struct device *dev);
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 15/20] omapfb: dispc: Enable wake up capability

2009-06-04 Thread Imre Deak
From: Jouni Hogander jouni.hogan...@nokia.com

Without wakeup enable omap doesn't wake up on dispc interrupts. This
causes problems in a case where mpu is in sleep state and dispc
interrupt fires.

Signed-off-by: Jouni Hogander jouni.hogan...@nokia.com
Signed-off-by: Tony Lindgren t...@atomide.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/dispc.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
index cc3c817..9adf54e 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -1395,10 +1395,10 @@ static int omap_dispc_init(struct omapfb_device *fbdev, 
int ext_mode,
enable_digit_clocks(0);
}
 
-   /* Enable smart idle and autoidle */
+   /* Enable smart standby/idle, autoidle and wakeup */
l = dispc_read_reg(DISPC_SYSCONFIG);
l = ~((3  12) | (3  3));
-   l |= (2  12) | (2  3) | (1  0);
+   l |= (2  12) | (2  3) | (1  2) | (1  0);
dispc_write_reg(DISPC_SYSCONFIG, l);
omap_writel(1  0, DSS_BASE + DSS_SYSCONFIG);
 
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 19/20] omapfb: Add FB manual update option to Kconfig

2009-06-04 Thread Imre Deak
Also move the controller specific options up in the menu, to a more
logical spot.

Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/Kconfig |   49 ++-
 1 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
index 2bffc07..551e3e9 100644
--- a/drivers/video/omap/Kconfig
+++ b/drivers/video/omap/Kconfig
@@ -32,6 +32,36 @@ config FB_OMAP_092M9R
 
 endchoice
 
+config FB_OMAP_LCDC_EXTERNAL
+   bool External LCD controller support
+   depends on FB_OMAP
+   help
+ Say Y here, if you want to have support for boards with an
+ external LCD controller connected to the SoSSI/RFBI interface.
+
+config FB_OMAP_LCDC_HWA742
+   bool Epson HWA742 LCD controller support
+   depends on FB_OMAP  FB_OMAP_LCDC_EXTERNAL
+   help
+ Say Y here if you want to have support for the external
+ Epson HWA742 LCD controller.
+
+config FB_OMAP_LCDC_BLIZZARD
+   bool Epson Blizzard LCD controller support
+   depends on FB_OMAP  FB_OMAP_LCDC_EXTERNAL
+   help
+ Say Y here if you want to have support for the external
+ Epson Blizzard LCD controller.
+
+config FB_OMAP_MANUAL_UPDATE
+   bool Default to manual update mode
+   depends on FB_OMAP  FB_OMAP_LCDC_EXTERNAL
+   help
+ Say Y here, if your user-space applications are capable of
+ notifying the frame buffer driver when a change has occured in
+ the frame buffer content and thus a reload of the image data to
+ the external frame buffer is required. If unsure, say N.
+
 config FB_OMAP_LCD_MIPID
bool MIPI DBI-C/DCS compatible LCD support
depends on FB_OMAP  SPI_MASTER
@@ -69,23 +99,4 @@ config FB_OMAP_DMA_TUNE
   answer yes. Answer no if you have a dedicated video
   memory, or don't use any of the accelerated features.
 
-config FB_OMAP_LCDC_EXTERNAL
-   bool External LCD controller support
-   depends on FB_OMAP
-   help
- Say Y here, if you want to have support for boards with an
- external LCD controller connected to the SoSSI/RFBI interface.
 
-config FB_OMAP_LCDC_HWA742
-   bool Epson HWA742 LCD controller support
-   depends on FB_OMAP  FB_OMAP_LCDC_EXTERNAL
-   help
- Say Y here if you want to have support for the external
- Epson HWA742 LCD controller.
-
-config FB_OMAP_LCDC_BLIZZARD
-   bool Epson Blizzard LCD controller support
-   depends on FB_OMAP  FB_OMAP_LCDC_EXTERNAL
-   help
- Say Y here if you want to have support for the external
- Epson Blizzard LCD controller.
-- 
1.6.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 16/20] omapfb: dispc: Allow multiple external IRQ handlers

2009-06-04 Thread Imre Deak
From: Daniel Stone daniel.st...@nokia.com

Previously, the only external (to dispc.c) IRQ handler was RFBI's
frame done handler.  dispc's IRQ framework was very dumb: you could only
have one handler, and the semantics of {request,free}_irq were odd, to
say the least.

The new framework allows multiple consumers to register arbitrary IRQ
masks.

Signed-off-by: Daniel Stone daniel.st...@nokia.com
Signed-off-by: Tony Lindgren t...@atomide.com
Signed-off-by: Imre Deak imre.d...@nokia.com
---
 drivers/video/omap/dispc.c |   95 +++-
 drivers/video/omap/dispc.h |7 ++-
 drivers/video/omap/rfbi.c  |7 ++-
 3 files changed, 67 insertions(+), 42 deletions(-)

diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
index 9adf54e..350b444 100644
--- a/drivers/video/omap/dispc.c
+++ b/drivers/video/omap/dispc.c
@@ -155,6 +155,8 @@ struct resmap {
unsigned long   *map;
 };
 
+#define MAX_IRQ_HANDLERS4
+
 static struct {
void __iomem*base;
 
@@ -167,9 +169,11 @@ static struct {
 
int ext_mode;
 
-   unsigned long   enabled_irqs;
-   void(*irq_callback)(void *);
-   void*irq_callback_data;
+   struct {
+   u32 irq_mask;
+   void(*callback)(void *);
+   void*data;
+   } irq_handlers[MAX_IRQ_HANDLERS];
struct completion   frame_done;
 
int fir_hinc[OMAPFB_PLANE_NUM];
@@ -809,56 +813,70 @@ static void set_lcd_timings(void)
panel-pixel_clock = fck / lck_div / pck_div / 1000;
 }
 
-int omap_dispc_request_irq(void (*callback)(void *data), void *data)
+static void recalc_irq_mask(void)
 {
-   int r = 0;
+   int i;
+   unsigned long irq_mask = DISPC_IRQ_MASK_ERROR;
 
-   BUG_ON(callback == NULL);
+   for (i = 0; i  MAX_IRQ_HANDLERS; i++) {
+   if (!dispc.irq_handlers[i].callback)
+   continue;
 
-   if (dispc.irq_callback)
-   r = -EBUSY;
-   else {
-   dispc.irq_callback = callback;
-   dispc.irq_callback_data = data;
+   irq_mask |= dispc.irq_handlers[i].irq_mask;
}
 
-   return r;
-}
-EXPORT_SYMBOL(omap_dispc_request_irq);
-
-void omap_dispc_enable_irqs(int irq_mask)
-{
enable_lcd_clocks(1);
-   dispc.enabled_irqs = irq_mask;
-   irq_mask |= DISPC_IRQ_MASK_ERROR;
MOD_REG_FLD(DISPC_IRQENABLE, 0x7fff, irq_mask);
enable_lcd_clocks(0);
 }
-EXPORT_SYMBOL(omap_dispc_enable_irqs);
 
-void omap_dispc_disable_irqs(int irq_mask)
+int omap_dispc_request_irq(unsigned long irq_mask, void (*callback)(void 
*data),
+  void *data)
 {
-   enable_lcd_clocks(1);
-   dispc.enabled_irqs = ~irq_mask;
-   irq_mask = ~DISPC_IRQ_MASK_ERROR;
-   MOD_REG_FLD(DISPC_IRQENABLE, 0x7fff, irq_mask);
-   enable_lcd_clocks(0);
+   int i;
+
+   BUG_ON(callback == NULL);
+
+   for (i = 0; i  MAX_IRQ_HANDLERS; i++) {
+   if (dispc.irq_handlers[i].callback)
+   continue;
+
+   dispc.irq_handlers[i].irq_mask = irq_mask;
+   dispc.irq_handlers[i].callback = callback;
+   dispc.irq_handlers[i].data = data;
+   recalc_irq_mask();
+
+   return 0;
+   }
+
+   return -EBUSY;
 }
-EXPORT_SYMBOL(omap_dispc_disable_irqs);
+EXPORT_SYMBOL(omap_dispc_request_irq);
 
-void omap_dispc_free_irq(void)
+void omap_dispc_free_irq(unsigned long irq_mask, void (*callback)(void *data),
+void *data)
 {
-   enable_lcd_clocks(1);
-   omap_dispc_disable_irqs(DISPC_IRQ_MASK_ALL);
-   dispc.irq_callback = NULL;
-   dispc.irq_callback_data = NULL;
-   enable_lcd_clocks(0);
+   int i;
+
+   for (i = 0; i  MAX_IRQ_HANDLERS; i++) {
+   if (dispc.irq_handlers[i].callback == callback 
+   dispc.irq_handlers[i].data == data) {
+   dispc.irq_handlers[i].irq_mask = 0;
+   dispc.irq_handlers[i].callback = NULL;
+   dispc.irq_handlers[i].data = NULL;
+   recalc_irq_mask();
+   return;
+   }
+   }
+
+   BUG();
 }
 EXPORT_SYMBOL(omap_dispc_free_irq);
 
 static irqreturn_t omap_dispc_irq_handler(int irq, void *dev)
 {
u32 stat;
+   int i = 0;
 
enable_lcd_clocks(1);
 
@@ -873,8 +891,12 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void 
*dev)
}
}
 
-   if ((stat  dispc.enabled_irqs)  dispc.irq_callback)
-   dispc.irq_callback(dispc.irq_callback_data);
+   for (i = 0; i  MAX_IRQ_HANDLERS; i++) {
+   if (unlikely(dispc.irq_handlers[i].callback 
+(stat  dispc.irq_handlers[i].irq_mask)))
+   dispc.irq_handlers[i].callback

Re: LDP support

2009-06-03 Thread Imre Deak
On Mon, Jun 01, 2009 at 06:00:33PM +0200, ext Tony Lindgren wrote:
 * Russell King - ARM Linux li...@arm.linux.org.uk [090531 14:25]:
  On Tue, Apr 28, 2009 at 03:42:37PM -0700, Tony Lindgren wrote:
   * Russell King - ARM Linux li...@arm.linux.org.uk [090428 15:07]:
Tony, et.al.,

Any ideas when more LDP support will be pushed into mainline (such as
the framebuffer support)?
   
   I'll be looking at the board-*.c patches for the next merge window
   hopefully this week or next week.
   
   Looks like LDP keyboard, touchscreen  RTC are pretty much ready
   to go. Then the MMC has some regulator updates, but AFAIK the MMC
   should work OK already.
   
   For the framebuffer, Imre and Tomi know the status the best, so
   I've added them to Cc.
   
   Imre has been meaning to send a bunch of drivers/video/omap changes
   to the fbdev list for a while now and LDP framebuffer may depend on
   those. Imre, any news on the status of sending the fb patches
   upstream?
   
   Then there are the upcoming DSS patches from Tomi, but those still
   need some work before they're ready to go.
  
  Okay, now that I've merged your tree, we've moved a few steps forward but
  a couple of steps backward with LDP support:
  
  1. LDP LCD platform device added
  2. GPIO keyboard platform data added
  3. TWL4030 keyboard platform data added
  4. TSC2046 touchscreen platform data added
  5. MMC has regressed - no sign of the driver initializing, not even an
 error message from it, so I can't boot to check what the status of
 these are.
 
 Do you have CONFIG_REGULATOR set in your .config? That seems to be missing
 from arch/arm/configs/omap_ldp_defconfig.
 
  6. do ___NOT___ (underscored in triplicate and 500ft high letters) enable
 ARM errata 460075 - it solidly prevents the kernel booting on LDP.
 (it's taken many hours to debug that.)
  
  However, things that still seem to be missing:
  
  1. GPIO keyboard (presumably) needs to be enabled in omap_ldp_defconfig
 
 Anybody with an LDP care to update the omap_ldp_defconfig? No LDP here.
 
  2. No TWL4030 keyboard driver merged (not even in linux-next)
  3. No LDP LCD driver merged
  4. No OMAP3 video driver
 
 For 3  4, I know Imre has the patches ready to go.. Imre, have they been
 posted to the fb list?

Not yet, I updated the patches, removing the board file changes as we agreed.
Also they don't include the latest HWA742 clock changes, which should be already
in the omap-fixes queue.

Other than these the patches have the following changes based on the omap-fixes
version of the driver:
- checkpatch fixes
- logically related commits merged, keeping the authorship info
- commit removed: omapfb: remove wrong scale call for gfx_plane
  This can't be correct, as it disables scaling completely.

I updated the omapfb-upstream branch on 
git://koowaldah.org/people/imre/linux-2.6-fb,
if these are ok with you I'll post them on the fb list.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: LDP support

2009-05-14 Thread Imre Deak
On Wed, May 06, 2009 at 06:00:16AM +0200, ext Tony Lindgren wrote:
 * Russell King - ARM Linux li...@arm.linux.org.uk [090505 12:52]:
  On Tue, Apr 28, 2009 at 03:42:37PM -0700, Tony Lindgren wrote:
   * Russell King - ARM Linux li...@arm.linux.org.uk [090428 15:07]:
Tony, et.al.,

Any ideas when more LDP support will be pushed into mainline (such as
the framebuffer support)?
   
   I'll be looking at the board-*.c patches for the next merge window
   hopefully this week or next week.
   
   Looks like LDP keyboard, touchscreen  RTC are pretty much ready
   to go. Then the MMC has some regulator updates, but AFAIK the MMC
   should work OK already.
   
   For the framebuffer, Imre and Tomi know the status the best, so
   I've added them to Cc.
   
   Imre has been meaning to send a bunch of drivers/video/omap changes
   to the fbdev list for a while now and LDP framebuffer may depend on
   those. Imre, any news on the status of sending the fb patches
   upstream?
   
   Then there are the upcoming DSS patches from Tomi, but those still
   need some work before they're ready to go.
  
  Is there any news on this?  Will we see more functional OMAP3 / LDP
  support queued for the next merge window?
 
 Yes fro the stuff listed above, but still no news on the framebuffer
 patches. Imre?

There is a mainline based tree with the missing DSS1 FB stuff that I'm
planning to submit to fb-devel:

git clone git://koowaldah.org/people/imre/linux-2.6-fb

I could only compile test it for OMAP2/3 targets, it would be nice
if someone could check if it works too. Also if some DSS1 FB related things
are still missing from that tree, I could add them / submit them with
the rest of the things.

Sorry for the big delay.

--Imre

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OMAP3: PM : Timer to turn LCD off

2009-02-20 Thread Imre Deak
On Fri, Feb 20, 2009 at 02:24:50PM +0100, ext Premi, Sanjeev wrote:
 While testing cpuidle (from Kevin's PM beanch) with default configuration for 
 OMAP3EVM, the c-state never transitions from C0.
 
 Even compiling with minimal drivers did not help. fck_core1 continues to be 
 active.
 Also, the LCD continues to be powered on... Despite compiling out V4L and FB 
 drivers.
 
 A simple way to turn LCD off would be to implement an inactivity timer. (e.g. 
 serial.c on the pm branch)

Blanking seems to me more of a user space policy. You could turn off the
LCD backlight from the board file if the FB driver is not configured.

--Imre

 
 The question is - where should this timer be implemented?
 - As part of the backlight driver?
   OR
 - As part of the fb driver?
   OR
 - Should it be tied to the board initialization?
 
 Best regards,
 Sanjeev
 --
 To unsubscribe from this list: send the line unsubscribe linux-omap in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: OMAP TV video

2009-02-04 Thread Imre Deak
On Wed, Feb 04, 2009 at 03:57:37PM +0100, ext Gary Thomas wrote:
 Note: if this is the wrong list, or if there's a better place
 to ask these questions, please redirect me.
 
 I have an OMAP/Zoom1 (3430 LDP).  I'm trying to use the
 S-Video output, without much success.  Today, I grabbed
 the latest tree (as least from what I can gather from various
 web pages) from git://git.omapzoom.org/repo/omapkernel.git
 
 When I try to use the TV, the kernel crashes immediately:
 Unhandled fault: external abort on non-linefetch (0x1008) at 0xd8050440

I'm guessing that the external abort is caused by the DSS interface
clock being disabled.

--Imre

 Internal error: : 1008 [#1]
 Modules linked in:
 
 CPU: 0Not tainted  (2.6.27.10-omap1-00181-gc9fd795 #1)
 PC is at omap2_disp_enable_output_dev+0x30/0x44
 LR is at write_layer_out+0x118/0x220
 pc : [c0053a84]lr : [c018f3d4]psr: 6013
 sp : c7963ec8  ip : c7963ed8  fp : c7963ed4
 r10: c7963f70  r9 : c7940e78  r8 : c039c8f0
 r7 :   r6 : 0003  r5 : c78626f8  r4 : c03c3c44
 r3 :   r2 : d805  r1 : 0003  r0 : 0005
 Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
 Control: 00c5387f  Table: 87320018  DAC: 0015
 Process echo (pid: 723, stack limit = 0xc79622e0)
 
 kernel version: Linux version 2.6.27.10-omap1-00181-gc9fd795
 config: omap_ldp_defconfig
 
 Notes:
 * An older kernel (circa 2008-12-01) does not crash.  The
   TV output is not correct, but at least it doesn't crash.
 * How can I turn off the double printk()?  All kernel messages
   get duplicated and it makes it terribly hard to use.  e.g.
 
 5Looking up port of RPC 13/2 on 192.168.1.100
 Looking up port of RPC 13/2 on 192.168.1.100
 5Looking up port of RPC 15/1 on 192.168.1.100
 Looking up port of RPC 15/1 on 192.168.1.100
 VFS: Mounted root (nfs filesystem).
 VFS: Mounted root (nfs filesystem).
 
   Other kernels (PowerPC, etc) don't suffer from this.
 * This kernel version is very unstable - it simply quits after
   just a few moments of running.  I didn't see this with the
   older kernel.
 
 Thanks for any ideas/pointers
 
 --
 
 Gary Thomas |  Consulting for the
 MLB Associates  |Embedded world
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-omap in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] OMAP3 McSPI: Adds context save/restore

2009-01-30 Thread Imre Deak
On Fri, Jan 30, 2009 at 07:23:16AM +0100, ext Hemanth V wrote:
 
 - Original Message -
 From: Imre Deak imre.d...@nokia.com
 To: ext Nayak, Rajendra rna...@ti.com
 Cc: linux-omap@vger.kernel.org; Kevin Hilman
 khil...@deeprootsystems.com; V, Hemanth heman...@ti.com
 Sent: Friday, January 30, 2009 12:36 AM
 Subject: Re: [PATCH] OMAP3 McSPI: Adds context save/restore
 
 
  On Wed, Jan 28, 2009 at 10:11:29AM +0100, ext Nayak, Rajendra wrote:
  From: Hemanth V heman...@ti.com
 
  This patch adds context save/restore feature to McSPI driver.
  This has been tested by instrumenting the driver code i.e by
  adding a McSPI softreset in omap2_mcspi_disable_clocks function.
 
  This patch includes review comment fixes
 
  Signed-off-by: Hemanth V heman...@ti.com
 
  ---
   drivers/spi/omap2_mcspi.c |   97
  --
   1 files changed, 77 insertions(+), 20 deletions(-)
 
  Index: linux-omap-2.6/drivers/spi/omap2_mcspi.c
  ===
  --- linux-omap-2.6.orig/drivers/spi/omap2_mcspi.c   2009-01-27
  11:45:06.0 +0530
  +++ linux-omap-2.6/drivers/spi/omap2_mcspi.c2009-01-27
  11:53:16.0 +0530
 
  [...]
 
  +static void omap2_mcspi_restore_ctx(struct omap2_mcspi *mcspi)
  +{
  +   struct spi_master *spi_cntrl;
  +   spi_cntrl = mcspi-master;
  +
  +   /* McSPI: context restore */
  +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_MODULCTRL,
  +   omap2_mcspi_ctx[spi_cntrl-bus_num -
  1].modulctrl);
  +
  +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_SYSCONFIG,
  +   omap2_mcspi_ctx[spi_cntrl-bus_num -
  1].sysconfig);
  +
  +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_CHCONF0,
  +   omap2_mcspi_ctx[spi_cntrl-bus_num - 1].chconf0);
 
  You have to restore this to the proper CHCONF register. And in the
  current form you have to restore all of them.
 
 Currently only CS0 CHCONF i.e chconf0 is being saved and restored, since its
 the only one configured and used
 by the driver.

What do you mean, your specific HW configuration has only an SPI device
with CS0? This driver _will_ use all CHCONFx registers based on what CS
lines are used by the SPI devices on a given board.

--Imre

 
 
  +
  +
  +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_WAKEUPENABLE,
  +   omap2_mcspi_ctx[spi_cntrl-bus_num -
  1].wakeupenable);
  +}
  +static void omap2_mcspi_disable_clocks(struct omap2_mcspi *mcspi)
  +{
  +   clk_disable(mcspi-ick);
  +   clk_disable(mcspi-fck);
  +}
  +
  [...]
 
  @@ -537,6 +593,8 @@
 
  mcspi_write_cs_reg(spi, OMAP2_MCSPI_CHCONF0, l);
 
  +   omap2_mcspi_ctx[spi_cntrl-bus_num - 1].chconf0 = l;
 
  And here save it to a slot based on CS.
 
  --Imre
 
 
 
 
 
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] OMAP3 McSPI: Adds context save/restore

2009-01-29 Thread Imre Deak
On Wed, Jan 28, 2009 at 10:11:29AM +0100, ext Nayak, Rajendra wrote:
 From: Hemanth V heman...@ti.com
 
 This patch adds context save/restore feature to McSPI driver.
 This has been tested by instrumenting the driver code i.e by
 adding a McSPI softreset in omap2_mcspi_disable_clocks function.
 
 This patch includes review comment fixes
 
 Signed-off-by: Hemanth V heman...@ti.com
 
 ---
  drivers/spi/omap2_mcspi.c |   97 
 --
  1 files changed, 77 insertions(+), 20 deletions(-)
 
 Index: linux-omap-2.6/drivers/spi/omap2_mcspi.c
 ===
 --- linux-omap-2.6.orig/drivers/spi/omap2_mcspi.c   2009-01-27 
 11:45:06.0 +0530
 +++ linux-omap-2.6/drivers/spi/omap2_mcspi.c2009-01-27 11:53:16.0 
 +0530

 [...]

 +static void omap2_mcspi_restore_ctx(struct omap2_mcspi *mcspi)
 +{
 +   struct spi_master *spi_cntrl;
 +   spi_cntrl = mcspi-master;
 +
 +   /* McSPI: context restore */
 +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_MODULCTRL,
 +   omap2_mcspi_ctx[spi_cntrl-bus_num - 1].modulctrl);
 +
 +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_SYSCONFIG,
 +   omap2_mcspi_ctx[spi_cntrl-bus_num - 1].sysconfig);
 +
 +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_CHCONF0,
 +   omap2_mcspi_ctx[spi_cntrl-bus_num - 1].chconf0);

You have to restore this to the proper CHCONF register. And in the
current form you have to restore all of them.

 +
 +
 +   mcspi_write_reg(spi_cntrl, OMAP2_MCSPI_WAKEUPENABLE,
 +   omap2_mcspi_ctx[spi_cntrl-bus_num - 1].wakeupenable);
 +}
 +static void omap2_mcspi_disable_clocks(struct omap2_mcspi *mcspi)
 +{
 +   clk_disable(mcspi-ick);
 +   clk_disable(mcspi-fck);
 +}
 +
 [...]

 @@ -537,6 +593,8 @@
 
 mcspi_write_cs_reg(spi, OMAP2_MCSPI_CHCONF0, l);
 
 +   omap2_mcspi_ctx[spi_cntrl-bus_num - 1].chconf0 = l;

And here save it to a slot based on CS.

--Imre


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html