Skip to contentSkip to conversation

ARM: pxa: hx4700: Fix backlight PWM device number

PATCH Superseded Paul Parsons 3 participants 3 messages Sep 26, 2012 – Oct 19, 2012

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 ARM: pxa: hx4700: Fix backlight PWM device number

Recent changes to PXA PWM support changed the PXA27X PWM device numbering scheme.

The linux-3.5 PXA PWM driver followed the hardware numbering scheme for the 4 PWMs, while the linux-3.6-rc1 PXA PWM driver has adopted a linear numbering scheme:

Address Hardware 3.5 pwm_id 3.6-rc1 pwm_id
0x40b00000 PWM0 0 0
0x40b00010 PWM2 2 1
0x40c00000 PWM1 1 2
0x40c00010 PWM3 3 3

The hx4700 backlight uses PWM1 at 0x40c00000. Consequently the pwm_id must be changed from 1 to 2.

This patch fixes the backlight PWM device number and at the same time moves from the legacy PWM API (pwm_id) to the new PWM API (pwm_lookup).

Cc Thierry Reding <[email protected]>

---

V2: Switch from legacy PWM API to new PWM API.

  arch/arm/mach-pxa/hx4700.c |    8 +++++++-
  1 files changed, 7 insertions(+), 1 deletions(-)
arch/arm/mach-pxa/hx4700.c +7 -1
index e631198..d66f9f9 100644
@@ -28,6 +28,7 @@
  #include <linux/mfd/asic3.h>
  #include <linux/mtd/physmap.h>
  #include <linux/pda_power.h>
+#include <linux/pwm.h>
  #include <linux/pwm_backlight.h>
  #include <linux/regulator/driver.h>
  #include <linux/regulator/gpio-regulator.h>
@@ -556,7 +557,7 @@ static struct platform_device hx4700_lcd = {
   */
 
  static struct platform_pwm_backlight_data backlight_data = {
-	.pwm_id         = 1,
+	.pwm_id         = -1,	/* Superseded by pwm_lookup */
  	.max_brightness = 200,
  	.dft_brightness = 100,
  	.pwm_period_ns  = 30923,
@@ -571,6 +572,10 @@ static struct platform_device backlight = {
  	},
  };
 
+static struct pwm_lookup hx4700_pwm_lookup[] = {
+	PWM_LOOKUP("pxa27x-pwm.1", 0, "pwm-backlight", NULL),
+};
+
  /*
   * USB "Transceiver"
   */
@@ -872,6 +877,7 @@ static void __init hx4700_init(void)
  	pxa_set_stuart_info(NULL);
 
  	platform_add_devices(devices, ARRAY_SIZE(devices));
+	pwm_add_table(hx4700_pwm_lookup, ARRAY_SIZE(hx4700_pwm_lookup));
 
  	pxa_set_ficp_info(&ficp_info);
  	pxa27x_set_i2c_power_info(NULL);
Signature · 1 line
1.7.8.6
#1 lore raw

PATCH v2 1/1 ARM: pxa: hx4700: Fix backlight PWM device number

Quoted 41 lines · Paul Parsons

Recent changes to PXA PWM support changed the PXA27X PWM device numbering scheme.

The linux-3.5 PXA PWM driver followed the hardware numbering scheme for the 4 PWMs, while the linux-3.6-rc1 PXA PWM driver has adopted a linear numbering scheme:

Address Hardware 3.5 pwm_id 3.6-rc1 pwm_id
0x40b00000 PWM0 0 0
0x40b00010 PWM2 2 1
0x40c00000 PWM1 1 2
0x40c00010 PWM3 3 3

The hx4700 backlight uses PWM1 at 0x40c00000. Consequently the pwm_id must be changed from 1 to 2.

This patch fixes the backlight PWM device number and at the same time moves from the legacy PWM API (pwm_id) to the new PWM API (pwm_lookup).

Cc Thierry Reding <[email protected]>

---

V2: Switch from legacy PWM API to new PWM API.

 arch/arm/mach-pxa/hx4700.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
arch/arm/mach-pxa/hx4700.c +1 -0
index e631198..d66f9f9 100644
@@ -28,6 +28,7 @@
 #include <linux/mfd/asic3.h>
 #include <linux/mtd/physmap.h>
 #include <linux/pda_power.h>
+#include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 #include <linux/regulator/driver.h>
 #include <linux/regulator/gpio-regulator.h>

arch/arm/mach-pxa/hx4700.c static struct platform_device hx4700_lcd = { · line 560

Quoted 5 lines
arch/arm/mach-pxa/hx4700.c +1 -1
@@ -556,7 +557,7 @@ static struct platform_device hx4700_lcd = {
  */
 
 static struct platform_pwm_backlight_data backlight_data = {
-	.pwm_id         = 1,
+	.pwm_id         = -1,	/* Superseded by pwm_lookup */

It doesn't actually matter what this is set to, but -1 is probably a good marker that the field is invalid.

Quoted 15 lines
arch/arm/mach-pxa/hx4700.c +4 -0
 	.max_brightness = 200,
 	.dft_brightness = 100,
 	.pwm_period_ns  = 30923,
@@ -571,6 +572,10 @@ static struct platform_device backlight = {
 	},
 };
 
+static struct pwm_lookup hx4700_pwm_lookup[] = {
+	PWM_LOOKUP("pxa27x-pwm.1", 0, "pwm-backlight", NULL),
+};
+
 /*
  * USB "Transceiver"
  */

arch/arm/mach-pxa/hx4700.c static void __init hx4700_init(void) · line 883

Quoted 7 lines
arch/arm/mach-pxa/hx4700.c +1 -0
@@ -872,6 +877,7 @@ static void __init hx4700_init(void)
 	pxa_set_stuart_info(NULL);
 
 	platform_add_devices(devices, ARRAY_SIZE(devices));
+	pwm_add_table(hx4700_pwm_lookup, ARRAY_SIZE(hx4700_pwm_lookup));
 
 	pxa_set_ficp_info(&ficp_info);
 	pxa27x_set_i2c_power_info(NULL);

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120927/69adbda6/attachment-0001.sig>

maintainer
#2 lore raw

PATCH v2 1/1 ARM: pxa: hx4700: Fix backlight PWM device number

Quoted 68 lines · Thierry Reding
Quoted 41 lines · Paul Parsons

Recent changes to PXA PWM support changed the PXA27X PWM device numbering scheme.

The linux-3.5 PXA PWM driver followed the hardware numbering scheme for the 4 PWMs, while the linux-3.6-rc1 PXA PWM driver has adopted a linear numbering scheme:

Address Hardware 3.5 pwm_id 3.6-rc1 pwm_id

0x40b00000    PWM0            0               0
0x40b00010    PWM2            2               1
0x40c00000    PWM1            1               2
0x40c00010    PWM3            3               3

The hx4700 backlight uses PWM1 at 0x40c00000. Consequently the pwm_id must be changed from 1 to 2.

This patch fixes the backlight PWM device number and at the same time moves from the legacy PWM API (pwm_id) to the new PWM API (pwm_lookup).

Cc Thierry Reding <[email protected]>

---

V2: Switch from legacy PWM API to new PWM API.

 arch/arm/mach-pxa/hx4700.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
arch/arm/mach-pxa/hx4700.c +1 -0
index e631198..d66f9f9 100644
@@ -28,6 +28,7 @@
 #include <linux/mfd/asic3.h>
 #include <linux/mtd/physmap.h>
 #include <linux/pda_power.h>
+#include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 #include <linux/regulator/driver.h>
 #include <linux/regulator/gpio-regulator.h>

arch/arm/mach-pxa/hx4700.c static struct platform_device hx4700_lcd = { · line 560

Quoted 5 lines
arch/arm/mach-pxa/hx4700.c +1 -1
@@ -556,7 +557,7 @@ static struct platform_device hx4700_lcd = {
  */
 
 static struct platform_pwm_backlight_data backlight_data = {
-     .pwm_id         = 1,
+     .pwm_id         = -1,   /* Superseded by pwm_lookup */

It doesn't actually matter what this is set to, but -1 is probably a good marker that the field is invalid.

Quoted 17 lines
arch/arm/mach-pxa/hx4700.c +4 -0
      .max_brightness = 200,
      .dft_brightness = 100,
      .pwm_period_ns  = 30923,
@@ -571,6 +572,10 @@ static struct platform_device backlight = {
      },
 };
 
+static struct pwm_lookup hx4700_pwm_lookup[] = {
+     PWM_LOOKUP("pxa27x-pwm.1", 0, "pwm-backlight", NULL),
+};
+
 /*
  * USB "Transceiver"
  */
@@ -872,6 +877,7 @@ static void __init hx4700_init(void)
      pxa_set_stuart_info(NULL);
 
Quoted 7 lines

arch/arm/mach-pxa/hx4700.c static void __init hx4700_init(void) · line 883

Quoted 5 lines
arch/arm/mach-pxa/hx4700.c +1 -0
      platform_add_devices(devices, ARRAY_SIZE(devices));
+     pwm_add_table(hx4700_pwm_lookup, ARRAY_SIZE(hx4700_pwm_lookup));
 
      pxa_set_ficp_info(&ficp_info);
      pxa27x_set_i2c_power_info(NULL);

Paul,

I failed to apply this patch on v3.7-rc1. Could you help to format the patch again?

Regards
Haojian