From 11407e5713ad85f416705a1ba0daf490ffaeda42 Mon Sep 17 00:00:00 2001 From: Paul Parsons Date: Mon, 27 Feb 2012 01:17:19 +0000 Subject: pxa/hx4700: Correct StrataFlash block size discovery The HP iPAQ hx4700 has 128Mb of flash provided by two Intel StrataFlash devices. The hx4700 platform configuration defines a single 128Mb flash resource, resulting in the MTD physmap-flash driver probing the first device only and presuming the second device is identical: physmap platform flash device: 08000000 at 00000000 physmap-flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x008816 physmap-flash: Found 2 x16 devices at 0x4000000 in 32-bit bank erase region 0: offset=0x0,size=0x10000,blocks=4 erase region 1: offset=0x40000,size=0x40000,blocks=255 erase region 2: offset=0x4000000,size=0x10000,blocks=4 erase region 3: offset=0x4040000,size=0x40000,blocks=255 physmap-flash: 2 set(s) of 2 interleaved chips --> 32 partitions of 4096 KiB Unfortunately the two devices are not identical. The first has a device ID of 0x8816, identifying a bottom parameter device. The second has a device ID of 0x8813, identifying a top parameter device. By not probing the second device, physmap-flash does not discover the correct block sizes. This patch splits the configuration into two 64Mb flash resources, forcing physmap-flash to probe both devices and thus discover the correct block sizes: physmap platform flash device: 04000000 at 00000000 physmap-flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x008816 erase region 0: offset=0x0,size=0x10000,blocks=4 erase region 1: offset=0x40000,size=0x40000,blocks=255 physmap-flash: 1 set(s) of 2 interleaved chips --> 16 partitions of 4096 KiB physmap platform flash device: 04000000 at 04000000 physmap-flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000089 Chip ID 0x008813 erase region 0: offset=0x0,size=0x40000,blocks=255 erase region 1: offset=0x3fc0000,size=0x10000,blocks=4 physmap-flash: 1 set(s) of 2 interleaved chips --> 16 partitions of 4096 KiB Concatenating MTD devices: (0): "physmap-flash" (1): "physmap-flash" into device "physmap-flash" Signed-off-by: Paul Parsons Signed-off-by: Haojian Zhuang --- arch/arm/mach-pxa/hx4700.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'arch/arm/mach-pxa') diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index fb9b62dcf4ca..de877a9d3e4c 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c @@ -704,10 +704,9 @@ static void hx4700_set_vpp(struct platform_device *pdev, int vpp) gpio_set_value(GPIO91_HX4700_FLASH_VPEN, vpp); } -static struct resource strataflash_resource = { - .start = PXA_CS0_PHYS, - .end = PXA_CS0_PHYS + SZ_128M - 1, - .flags = IORESOURCE_MEM, +static struct resource strataflash_resource[] = { + [0] = DEFINE_RES_MEM(PXA_CS0_PHYS, SZ_64M), + [1] = DEFINE_RES_MEM(PXA_CS0_PHYS + SZ_64M, SZ_64M), }; static struct physmap_flash_data strataflash_data = { @@ -718,8 +717,8 @@ static struct physmap_flash_data strataflash_data = { static struct platform_device strataflash = { .name = "physmap-flash", .id = -1, - .resource = &strataflash_resource, - .num_resources = 1, + .resource = strataflash_resource, + .num_resources = ARRAY_SIZE(strataflash_resource), .dev = { .platform_data = &strataflash_data, }, -- cgit v1.2.3 From 91cb8ee33ffb19ae94220f79e34d1918c57a915e Mon Sep 17 00:00:00 2001 From: Paul Parsons Date: Wed, 22 Jun 2011 19:31:49 +0000 Subject: pxa/hx4700: Add ASIC3 LED support Add LED support for the HTC ASIC3. Underlying support is provided by the mfd/asic3 and leds/leds-asic3 drivers. An example configuration is provided by the pxa/hx4700 platform. Signed-off-by: Paul Parsons Acked-by: Philipp Zabel Signed-off-by: Haojian Zhuang --- arch/arm/mach-pxa/hx4700.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'arch/arm/mach-pxa') diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index de877a9d3e4c..f038da1e4196 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c @@ -244,6 +244,21 @@ static u16 asic3_gpio_config[] = { ASIC3_GPIOD15_nPIOW, }; +static struct asic3_led asic3_leds[ASIC3_NUM_LEDS] = { + [0] = { + .name = "hx4700:amber", + .default_trigger = "ds2760-battery.0-charging-blink-full-solid", + }, + [1] = { + .name = "hx4700:green", + .default_trigger = "unused", + }, + [2] = { + .name = "hx4700:blue", + .default_trigger = "hx4700-radio", + }, +}; + static struct resource asic3_resources[] = { /* GPIO part */ [0] = { @@ -274,6 +289,7 @@ static struct asic3_platform_data asic3_platform_data = { .gpio_config_num = ARRAY_SIZE(asic3_gpio_config), .irq_base = IRQ_BOARD_START, .gpio_base = HX4700_ASIC3_GPIO_BASE, + .leds = asic3_leds, }; static struct platform_device asic3 = { -- cgit v1.2.3 From 43de6a7dda6e9a7345e218e688f2092f991126f0 Mon Sep 17 00:00:00 2001 From: Haojian Zhuang Date: Tue, 28 Feb 2012 10:57:48 +0800 Subject: ARM: pxa: add dummy clock for pxa25x and pxa27x gpio-pxa driver is shared among arch-pxa and arch-mmp. Clock is the essential component on pxa3xx/pxa95x and arch-mmp. So we need to define dummy clock in pxa25x/pxa27x instead. Signed-off-by: Haojian Zhuang --- arch/arm/mach-pxa/pxa25x.c | 1 + arch/arm/mach-pxa/pxa27x.c | 1 + 2 files changed, 2 insertions(+) (limited to 'arch/arm/mach-pxa') diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index 91e4f6c03766..8a775f631c55 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c @@ -209,6 +209,7 @@ static struct clk_lookup pxa25x_clkregs[] = { INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"), INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"), INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL), + INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), }; static struct clk_lookup pxa25x_hwuart_clkreg = diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index aed6cbcf3866..6c49e66057e3 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c @@ -230,6 +230,7 @@ static struct clk_lookup pxa27x_clkregs[] = { INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"), INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"), INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL), + INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL), }; #ifdef CONFIG_PM -- cgit v1.2.3 From 95a50cab1dc6446fb1a91d20e14b649dd9f41f1c Mon Sep 17 00:00:00 2001 From: Paul Parsons Date: Tue, 13 Mar 2012 13:11:30 +0000 Subject: ARM: pxa/hx4700: Remove unwanted request for GPIO105 GPIO105 (nIR_ON) is requested twice: first in gpio_request_array(), then in pxa_irda_probe(). Consequently the second request fails with EBUSY: pxa2xx-ir: probe of pxa2xx-ir failed with error -16 This patch removes the first request, allowing pxa_irda_probe() to succeed. Signed-off-by: Paul Parsons Signed-off-by: Haojian Zhuang --- arch/arm/mach-pxa/hx4700.c | 1 - 1 file changed, 1 deletion(-) (limited to 'arch/arm/mach-pxa') diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index 208eef1c0485..c5fb105d2689 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c @@ -830,7 +830,6 @@ static struct gpio global_gpios[] = { { GPIO32_HX4700_RS232_ON, GPIOF_OUT_INIT_HIGH, "RS232_ON" }, { GPIO71_HX4700_ASIC3_nRESET, GPIOF_OUT_INIT_HIGH, "ASIC3_nRESET" }, { GPIO82_HX4700_EUART_RESET, GPIOF_OUT_INIT_HIGH, "EUART_RESET" }, - { GPIO105_HX4700_nIR_ON, GPIOF_OUT_INIT_HIGH, "nIR_EN" }, }; static void __init hx4700_init(void) -- cgit v1.2.3 From cd419cf922bdb50d33c98c9a0c81f51a40609f66 Mon Sep 17 00:00:00 2001 From: Paul Parsons Date: Sun, 11 Mar 2012 13:23:42 +0000 Subject: ARM: pxa/hx4700: Reduce sleep mode battery discharge by 35% Drive the two Bluetooth UART output GPIOs (GPIO43_BTUART_TXD, GPIO45_BTUART_RTS) LOW during sleep mode instead of HIGH. This reduces sleep mode battery discharge from approximately 46 mA to approximately 30 mA. Signed-off-by: Oliver Winker Signed-off-by: Paul Parsons Signed-off-by: Haojian Zhuang --- arch/arm/mach-pxa/hx4700.c | 4 ++-- arch/arm/mach-pxa/include/mach/mfp-pxa27x.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'arch/arm/mach-pxa') diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index c5fb105d2689..f49043cbab10 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c @@ -97,9 +97,9 @@ static unsigned long hx4700_pin_config[] __initdata = { /* BTUART */ GPIO42_BTUART_RXD, - GPIO43_BTUART_TXD, + GPIO43_BTUART_TXD_LPM_LOW, GPIO44_BTUART_CTS, - GPIO45_BTUART_RTS, + GPIO45_BTUART_RTS_LPM_LOW, /* PWM 1 (Backlight) */ GPIO17_PWM1_OUT, diff --git a/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h b/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h index ec0f0b0b6744..a65867209aa0 100644 --- a/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h +++ b/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h @@ -158,7 +158,9 @@ #define GPIO44_BTUART_CTS MFP_CFG_IN(GPIO44, AF1) #define GPIO42_BTUART_RXD MFP_CFG_IN(GPIO42, AF1) #define GPIO45_BTUART_RTS MFP_CFG_OUT(GPIO45, AF2, DRIVE_HIGH) +#define GPIO45_BTUART_RTS_LPM_LOW MFP_CFG_OUT(GPIO45, AF2, DRIVE_LOW) #define GPIO43_BTUART_TXD MFP_CFG_OUT(GPIO43, AF2, DRIVE_HIGH) +#define GPIO43_BTUART_TXD_LPM_LOW MFP_CFG_OUT(GPIO43, AF2, DRIVE_LOW) /* STUART */ #define GPIO46_STUART_RXD MFP_CFG_IN(GPIO46, AF2) -- cgit v1.2.3 From 63ecf0a9b55ada8c59ac10472c4468b46cf2e97a Mon Sep 17 00:00:00 2001 From: Paul Parsons Date: Fri, 9 Mar 2012 14:57:56 +0000 Subject: pxa/hx4700: Remove pcmcia platform_device structure The existing pcmcia platform_device structure is not used and is not needed by the pending hx4700 PCMCIA/CF support. So let's remove it. Signed-off-by: Paul Parsons Acked-by: Philipp Zabel signed-off-by: Haojian Zhuang --- arch/arm/mach-pxa/hx4700.c | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'arch/arm/mach-pxa') diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index f49043cbab10..0e7806a7e971 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c @@ -787,17 +787,6 @@ static struct platform_device audio = { }; -/* - * PCMCIA - */ - -static struct platform_device pcmcia = { - .name = "hx4700-pcmcia", - .dev = { - .parent = &asic3.dev, - }, -}; - /* * Platform devices */ @@ -814,7 +803,6 @@ static struct platform_device *devices[] __initdata = { &power_supply, &strataflash, &audio, - &pcmcia, }; static struct gpio global_gpios[] = { -- cgit v1.2.3