All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tarun Kanti DebBarma <tarun.kanti@ti.com>
To: linux-omap@vger.kernel.org
Cc: khilman@ti.com, santosh.shilimkar@ti.com, tony@atomide.com,
	linux-arm-kernel@lists.infradead.org,
	Tarun Kanti DebBarma <tarun.kanti@ti.com>
Subject: [PATCH v4 00/20] gpio/omap: driver cleanup and fixes
Date: Wed, 13 Jul 2011 19:23:59 +0530	[thread overview]
Message-ID: <1310565259-31267-1-git-send-email-tarun.kanti@ti.com> (raw)

This series is continuation of cleanup of OMAP GPIO driver and fixes.
The cleanup include getting rid of cpu_is_* checks wherever possible,
use of gpio_bank list instead of static array, use of unique platform
specific value associated data member to OMAP platforms to avoid
cpu_is_* checks. The series also include PM runtime support.

Test Details:
- Compile tested for omap1_defconfig and omap2plus_defconfig.
- OMAP1710-H3: Bootup test.
- OMAP2430/SDP, OMAP3430/SDP, OMAP4430/SDP, 4430/Blaze: Functional testing. 
- PM Testing on OMAP3430-SDP: retention, off_mode, system_wide
  suspend and gpio wakeup.

v4:
- since all accesses to registers are 4-byte aligned, removing special
  checks and handling of 16 and 32-bit wide bank registers and instead
  use 32-bit read/write access consistently.
  
- redundant usage of MOD_REG_BIT has been corrected and replaced with
  _gpio_rmw().
  
- omap_gpio_mod_init() function has been simplified further using _gpio_rmw().

- sysconfig register offset specific to omap16xx has been removed along
  with its usage.

- additional logic to skip from suspend/resume:
  
  if (!bank->regs->wkup_status || !bank->suspend_wakeup)
  	return 0;
  
  if (!bank->regs->wkup_status || !bank->saved_wakeup)
  	return 0;
  	
- separated mpuio related changes into a different patch from the patch where
  wakeup status register related changes are done.

- Incorrect replacement of !cpu_class_is_omap2() in gpio_irq_type()
  corrected:
+	if (!bank->regs->leveldetect0 &&
+		(type & (IRQ_TYPE_LEVEL_LOW|IRQ_TYPE_LEVEL_HIGH)))
 		return -EINVAL;

v3:
- Avoid use of wkup_set and wkup_clear registers. Instead use wkup_status
  register for all platforms. This is because on OMAP4 it is recommended
  not to use them.

- Remove duplicate code in omap_gpio_mod_init() for handling the same for
  32-bit and 16-bit GPIO bank widths. This is accomplished by having two
  functions to handle each case while assiging a common function pointer
  during initialization.
  
- Remove OMAP16xx specific one time initialization from omap_gpio_mod_init().
  Move it inside omap16xx_gpio_init().

- Avoid usage of USHRT_MAX to indicate undefined values. Use 0 instead.

- In omap_gpio_suspend()/resume() functions remove code that checks
  if the feature is supported. Instead, assign these functions to
  struct platform_driver's suspend & resume function pointers for those
  OMAP platforms whcih support this feature.

- Remove 'suspend_support' flag because it is redundant. Instead use
  wkup_* registers to decode the same information.

- Restore context also when we don't know if the context is lost.

- Make omap_gpio_save_context() and omap_gpio_restore_context()
  static.

v2:
- Do special handling of non-wakeup GPIOs only on OMAP2420. Avoid this
  handling on OMAP3430.
- Isolate cleanups and fixes into separate set of patches. Keep the cleanup
  first followed by the fixes.
- Avoid calling omap_gpio_get_context_loss() directly and instead call it
  through function pointer in pdata initialized during init.
- workaround_enabled flag is not longer needed and is removed.
- Call pwrdm_post_transition() before calling omap_gpio_resume_after_idle().
- In omap2_gpio_resume_after_idle() do context restore before handling
  workaround.
- Use PM runtime framework.
- Modify register offset names to : wkup_status, wkup_clear, wkup_set.
  Also use 'base + offset' for readibility in all relevant places.
- Remove unwanted messages from commit section like TODO, etc.

Charulatha V (13):
  gpio/omap: remove dependency on gpio_bank_count
  gpio/omap: use flag to identify wakeup domain
  gpio/omap: make gpio_context part of gpio_bank structure
  gpio/omap: fix pwrdm_post_transition call sequence
  gpio/omap: handle save/restore ctx in GPIO driver
  gpio/omap: make non-wakeup GPIO part of pdata
  gpio/omap: avoid cpu checks during module ena/disable
  gpio/omap: cleanup omap1 related macros
  gpio/omap: use pinctrl offset instead of macro
  gpio/omap: use readl in irq_handler for all access
  gpio/omap: remove bank->method & METHOD_* macros
  gpio/omap: fix bankwidth for OMAP7xx MPUIO
  gpio/omap: use pm-runtime framework

Tarun Kanti DebBarma (7):
  gpio/omap: further cleanup using wakeup_status register
  gpio/omap: use level/edge detect reg offsets
  gpio/omap: remove hardcoded offsets in ctxt save/restore
  gpio/omap: cleanup set_gpio_triggering function
  gpio/omap: cleanup omap_gpio_mod_init function
  gpio/omap: optimize suspend and resume functions
  gpio/omap: cleanup prepare_for_idle and resume_after_idle

 arch/arm/mach-omap1/gpio15xx.c         |    7 +-
 arch/arm/mach-omap1/gpio16xx.c         |   33 +-
 arch/arm/mach-omap1/gpio7xx.c          |   14 +-
 arch/arm/mach-omap2/gpio.c             |   47 ++-
 arch/arm/mach-omap2/pm34xx.c           |   21 +-
 arch/arm/plat-omap/include/plat/gpio.h |   29 +-
 drivers/gpio/gpio-omap.c               | 1044 +++++++++++++-------------------
 7 files changed, 507 insertions(+), 688 deletions(-)


WARNING: multiple messages have this Message-ID (diff)
From: tarun.kanti@ti.com (Tarun Kanti DebBarma)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 00/20] gpio/omap: driver cleanup and fixes
Date: Wed, 13 Jul 2011 19:23:59 +0530	[thread overview]
Message-ID: <1310565259-31267-1-git-send-email-tarun.kanti@ti.com> (raw)

This series is continuation of cleanup of OMAP GPIO driver and fixes.
The cleanup include getting rid of cpu_is_* checks wherever possible,
use of gpio_bank list instead of static array, use of unique platform
specific value associated data member to OMAP platforms to avoid
cpu_is_* checks. The series also include PM runtime support.

Test Details:
- Compile tested for omap1_defconfig and omap2plus_defconfig.
- OMAP1710-H3: Bootup test.
- OMAP2430/SDP, OMAP3430/SDP, OMAP4430/SDP, 4430/Blaze: Functional testing. 
- PM Testing on OMAP3430-SDP: retention, off_mode, system_wide
  suspend and gpio wakeup.

v4:
- since all accesses to registers are 4-byte aligned, removing special
  checks and handling of 16 and 32-bit wide bank registers and instead
  use 32-bit read/write access consistently.
  
- redundant usage of MOD_REG_BIT has been corrected and replaced with
  _gpio_rmw().
  
- omap_gpio_mod_init() function has been simplified further using _gpio_rmw().

- sysconfig register offset specific to omap16xx has been removed along
  with its usage.

- additional logic to skip from suspend/resume:
  
  if (!bank->regs->wkup_status || !bank->suspend_wakeup)
  	return 0;
  
  if (!bank->regs->wkup_status || !bank->saved_wakeup)
  	return 0;
  	
- separated mpuio related changes into a different patch from the patch where
  wakeup status register related changes are done.

- Incorrect replacement of !cpu_class_is_omap2() in gpio_irq_type()
  corrected:
+	if (!bank->regs->leveldetect0 &&
+		(type & (IRQ_TYPE_LEVEL_LOW|IRQ_TYPE_LEVEL_HIGH)))
 		return -EINVAL;

v3:
- Avoid use of wkup_set and wkup_clear registers. Instead use wkup_status
  register for all platforms. This is because on OMAP4 it is recommended
  not to use them.

- Remove duplicate code in omap_gpio_mod_init() for handling the same for
  32-bit and 16-bit GPIO bank widths. This is accomplished by having two
  functions to handle each case while assiging a common function pointer
  during initialization.
  
- Remove OMAP16xx specific one time initialization from omap_gpio_mod_init().
  Move it inside omap16xx_gpio_init().

- Avoid usage of USHRT_MAX to indicate undefined values. Use 0 instead.

- In omap_gpio_suspend()/resume() functions remove code that checks
  if the feature is supported. Instead, assign these functions to
  struct platform_driver's suspend & resume function pointers for those
  OMAP platforms whcih support this feature.

- Remove 'suspend_support' flag because it is redundant. Instead use
  wkup_* registers to decode the same information.

- Restore context also when we don't know if the context is lost.

- Make omap_gpio_save_context() and omap_gpio_restore_context()
  static.

v2:
- Do special handling of non-wakeup GPIOs only on OMAP2420. Avoid this
  handling on OMAP3430.
- Isolate cleanups and fixes into separate set of patches. Keep the cleanup
  first followed by the fixes.
- Avoid calling omap_gpio_get_context_loss() directly and instead call it
  through function pointer in pdata initialized during init.
- workaround_enabled flag is not longer needed and is removed.
- Call pwrdm_post_transition() before calling omap_gpio_resume_after_idle().
- In omap2_gpio_resume_after_idle() do context restore before handling
  workaround.
- Use PM runtime framework.
- Modify register offset names to : wkup_status, wkup_clear, wkup_set.
  Also use 'base + offset' for readibility in all relevant places.
- Remove unwanted messages from commit section like TODO, etc.

Charulatha V (13):
  gpio/omap: remove dependency on gpio_bank_count
  gpio/omap: use flag to identify wakeup domain
  gpio/omap: make gpio_context part of gpio_bank structure
  gpio/omap: fix pwrdm_post_transition call sequence
  gpio/omap: handle save/restore ctx in GPIO driver
  gpio/omap: make non-wakeup GPIO part of pdata
  gpio/omap: avoid cpu checks during module ena/disable
  gpio/omap: cleanup omap1 related macros
  gpio/omap: use pinctrl offset instead of macro
  gpio/omap: use readl in irq_handler for all access
  gpio/omap: remove bank->method & METHOD_* macros
  gpio/omap: fix bankwidth for OMAP7xx MPUIO
  gpio/omap: use pm-runtime framework

Tarun Kanti DebBarma (7):
  gpio/omap: further cleanup using wakeup_status register
  gpio/omap: use level/edge detect reg offsets
  gpio/omap: remove hardcoded offsets in ctxt save/restore
  gpio/omap: cleanup set_gpio_triggering function
  gpio/omap: cleanup omap_gpio_mod_init function
  gpio/omap: optimize suspend and resume functions
  gpio/omap: cleanup prepare_for_idle and resume_after_idle

 arch/arm/mach-omap1/gpio15xx.c         |    7 +-
 arch/arm/mach-omap1/gpio16xx.c         |   33 +-
 arch/arm/mach-omap1/gpio7xx.c          |   14 +-
 arch/arm/mach-omap2/gpio.c             |   47 ++-
 arch/arm/mach-omap2/pm34xx.c           |   21 +-
 arch/arm/plat-omap/include/plat/gpio.h |   29 +-
 drivers/gpio/gpio-omap.c               | 1044 +++++++++++++-------------------
 7 files changed, 507 insertions(+), 688 deletions(-)

             reply	other threads:[~2011-07-13 13:54 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-13 13:53 Tarun Kanti DebBarma [this message]
2011-07-13 13:53 ` [PATCH v4 00/20] gpio/omap: driver cleanup and fixes Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 01/20] gpio/omap: remove dependency on gpio_bank_count Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 02/20] gpio/omap: use flag to identify wakeup domain Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 03/20] gpio/omap: make gpio_context part of gpio_bank structure Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 04/20] gpio/omap: fix pwrdm_post_transition call sequence Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 05/20] gpio/omap: handle save/restore ctx in GPIO driver Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 06/20] gpio/omap: make non-wakeup GPIO part of pdata Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 07/20] gpio/omap: avoid cpu checks during module ena/disable Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 08/20] gpio/omap: further cleanup using wakeup_status register Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 09/20] gpio/omap: cleanup omap1 related macros Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 10/20] gpio/omap: use level/edge detect reg offsets Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 11/20] gpio/omap: remove hardcoded offsets in ctxt save/restore Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 12/20] gpio/omap: cleanup set_gpio_triggering function Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 13/20] gpio/omap: cleanup omap_gpio_mod_init function Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-14  5:56   ` Todd Poynor
2011-07-14  5:56     ` Todd Poynor
2011-07-14  5:57     ` DebBarma, Tarun Kanti
2011-07-14  5:57       ` DebBarma, Tarun Kanti
2011-07-13 13:54 ` [PATCH v4 14/20] gpio/omap: use pinctrl offset instead of macro Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 15/20] gpio/omap: use readl in irq_handler for all access Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 16/20] gpio/omap: remove bank->method & METHOD_* macros Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 17/20] gpio/omap: fix bankwidth for OMAP7xx MPUIO Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 18/20] gpio/omap: use pm-runtime framework Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-14  6:09   ` Todd Poynor
2011-07-14  6:09     ` Todd Poynor
2011-07-14  7:22     ` DebBarma, Tarun Kanti
2011-07-14  7:22       ` DebBarma, Tarun Kanti
2011-07-13 13:54 ` [PATCH v4 19/20] gpio/omap: optimize suspend and resume functions Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma
2011-07-13 13:54 ` [PATCH v4 20/20] gpio/omap: cleanup prepare_for_idle and resume_after_idle Tarun Kanti DebBarma
2011-07-13 13:54   ` Tarun Kanti DebBarma

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1310565259-31267-1-git-send-email-tarun.kanti@ti.com \
    --to=tarun.kanti@ti.com \
    --cc=khilman@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=santosh.shilimkar@ti.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.