[PATCH v2 2/5] Add basic HP iPAQ rx1950 support
Ben Dooks
ben-linux at fluff.org
Sun Sep 27 02:18:02 EDT 2009
On Sun, Sep 27, 2009 at 12:03:40AM +0300, Vasily Khoruzhick wrote:
>
> From 1490cd5bd21d387b122332edfb2537437d3cb1f3 Mon Sep 17 00:00:00 2001
> From: Vasily Khoruzhick <anarsoul at gmail.com>
> Date: Thu, 24 Sep 2009 21:58:36 +0300
> Subject: [PATCH v2 2/5] Add basic HP iPAQ rx1950 support
>
> Signed-off-by: Vasily Khoruzhick <anarsoul at gmail.com>
> ---
> arch/arm/mach-s3c2442/Kconfig | 10 +
> arch/arm/mach-s3c2442/Makefile | 2 +-
> arch/arm/mach-s3c2442/mach-rx1950.c | 368 +++++++++++++++++++++++++++++++++++
> 3 files changed, 379 insertions(+), 1 deletions(-)
> create mode 100644 arch/arm/mach-s3c2442/mach-rx1950.c
>
> diff --git a/arch/arm/mach-s3c2442/Kconfig b/arch/arm/mach-s3c2442/Kconfig
> index 103e913..e12faf4 100644
> --- a/arch/arm/mach-s3c2442/Kconfig
> +++ b/arch/arm/mach-s3c2442/Kconfig
> @@ -36,6 +36,16 @@ config MACH_NEO1973_GTA02
> help
> Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone
>
> +config MACH_RX1950
> + bool "HP iPAQ rx1950"
> + select CPU_S3C2442
> + select PM_H1940 if PM
> + select I2C
> + select S3C2410_PWM
> + select S3C2410_IOTIMING if S3C2440_CPUFREQ
> + select S3C2440_XTAL_16934400
> + help
> + Say Y here if you're using HP iPAQ rx1950
>
> endmenu
>
> diff --git a/arch/arm/mach-s3c2442/Makefile b/arch/arm/mach-s3c2442/Makefile
> index 2a19113..e40caa8 100644
> --- a/arch/arm/mach-s3c2442/Makefile
> +++ b/arch/arm/mach-s3c2442/Makefile
> @@ -13,6 +13,6 @@ obj-$(CONFIG_CPU_S3C2442) += s3c2442.o
> obj-$(CONFIG_CPU_S3C2442) += clock.o
>
> obj-$(CONFIG_MACH_NEO1973_GTA02) += mach-gta02.o
> -
> +obj-$(CONFIG_MACH_RX1950) += mach-rx1950.o
> # Machine support
you managed to take out a blank line, please don't do that.
> diff --git a/arch/arm/mach-s3c2442/mach-rx1950.c b/arch/arm/mach-s3c2442/mach-rx1950.c
> new file mode 100644
> index 0000000..c1390ba
> --- /dev/null
> +++ b/arch/arm/mach-s3c2442/mach-rx1950.c
> @@ -0,0 +1,368 @@
> +/* linux/arch/arm/mach-s3c2440/mach-rx1950.c
> + *
> + * Copyright (c) 2006-2009 Victor Chukhantsev, Denis Grigoriev,
> + * Copyright (c) 2007-2009 Vasily Khoruzhick
would be good to get the acked-by for the other two authours on this.
> + * based on smdk2440 written by Ben Dooks
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> +*/
> +
> +#include <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/interrupt.h>
> +#include <linux/list.h>
> +#include <linux/delay.h>
> +#include <linux/timer.h>
> +#include <linux/init.h>
> +#include <linux/gpio.h>
> +#include <linux/platform_device.h>
> +#include <linux/serial_core.h>
> +#include <linux/input.h>
> +#include <linux/gpio_keys.h>
> +#include <linux/sysdev.h>
> +#include <linux/pwm_backlight.h>
> +#include <linux/pwm.h>
> +#include <linux/mtd/mtd.h>
> +#include <linux/mtd/partitions.h>
> +#include <linux/mmc/host.h>
> +#include <asm/mach/arch.h>
> +#include <asm/mach/map.h>
> +#include <asm/mach-types.h>
> +#include <mach/regs-gpio.h>
> +#include <mach/regs-gpioj.h>
> +#include <mach/h1940.h>
> +#include <mach/fb.h>
> +#include <plat/regs-serial.h>
> +#include <plat/regs-iic.h>
> +#include <plat/mci.h>
> +#include <plat/udc.h>
> +#include <plat/nand.h>
> +#include <plat/iic.h>
> +#include <plat/devs.h>
> +#include <plat/cpu.h>
> +#include <plat/pm.h>
> +#include <plat/irq.h>
hmm, blank lines between the groups on includes?
> +static struct map_desc rx1950_iodesc[] __initdata = {
> + /* ISA IO Space map (memory space selected by A24) */
> + {
> + .virtual = (u32) S3C24XX_VA_ISA_WORD,
> + .pfn = __phys_to_pfn(S3C2410_CS2),
> + .length = 0x10000,
> + .type = MT_DEVICE,
> + },
> + {
> + .virtual = (u32) S3C24XX_VA_ISA_WORD + 0x10000,
> + .pfn = __phys_to_pfn(S3C2410_CS2 + (1 << 24)),
> + .length = SZ_4M,
> + .type = MT_DEVICE,
> + },
> +};
> +
> +static struct s3c24xx_uart_clksrc rx1950_serial_clocks[] = {
> + [0] = {
> + .name = "fclk",
> + .divisor = 0x0a,
> + .min_baud = 0,
> + .max_baud = 0,
> + }
> +};
the closing bracket should be as thus:
[0] = {
...stuff...
},
note, level and addition of ,
lots of these that need to be fixed.
> +static int rx1950_backlight_notify(int brightness)
> +{
> + static int disabled = 1;
> + if (!brightness) {
> + if (!disabled) {
> + s3c2410_gpio_setpin(S3C2410_GPB(0), 0);
> + s3c2410_gpio_pullup(S3C2410_GPB(0), 0);
> + s3c2410_gpio_cfgpin(S3C2410_GPB(0),
> + S3C2410_GPIO_OUTPUT);
> + }
> + disabled = 1;
> + } else {
> + if (disabled) {
> + /* LED driver need a "push" to power on */
> + s3c2410_gpio_setpin(S3C2410_GPB(0), 1);
> + s3c2410_gpio_pullup(S3C2410_GPB(0), 1);
> + /* Warm up backlight for one period of PWM.
> + * Without this trick its almost impossible to
> + * enable backlight
> + */
> + ndelay(48000);
> + s3c2410_gpio_cfgpin(S3C2410_GPB(0),
> + S3C2410_GPB0_TOUT0);
> + }
> + disabled = 0;
> + }
> + return brightness;
> +}
Maybe this is something that should be done in the pwm-bl driver?
> + {KEY_POWER, S3C2410_GPF(0), 1, "Power button"},
some spacing... named initialisers would have been nice too
> +static struct platform_device rx1950_device_gpiokeys = {
> + .name = "gpio-keys",
> + .dev = {.platform_data = &rx1950_gpio_keys_data,}
> +};
how about .dev.platform_data = instead of brackets?
> + /* Configuring udc pullup */
> + s3c2410_gpio_cfgpin(S3C2440_GPJ5, S3C2410_GPIO_OUTPUT);
please use gpiolib interface, we're moving away from specific gpio set
interface.
> + /* Configuring mmc ro sense pin */
> + s3c2410_gpio_cfgpin(S3C2410_GPH(8), S3C2410_GPIO_INPUT);
The MMC driver should be setting this as an input.
> + /* Configuring mmc power pin */
> + s3c2410_gpio_setpin(S3C2440_GPJ1, S3C2410_GPIO_OUTPUT);
> + /* mmc power is disabled by default */
> + s3c2410_gpio_setpin(S3C2440_GPJ1, 0);
> +
> + /* Configuring udc vbus pin */
> + s3c2410_gpio_setpin(S3C2410_GPG(5), S3C2410_GPG5_EINT13);
no need to, the request_irq() calls the right set_type function which
implicitly sets the IRQ.
> + /* Some udc magic */
> + s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |
> + S3C2410_MISCCR_USBSUSPND0 |
> + S3C2410_MISCCR_USBSUSPND1, 0x0);
> +
> + s3c24xx_udc_set_platdata(&rx1950_udc_cfg);
> +
> + platform_add_devices(rx1950_devices, ARRAY_SIZE(rx1950_devices));
> +
> + s3c_pm_init();
> + s3c_irq_wake(IRQ_EINT0, 1);
> +}
--
Ben
Q: What's a light-year?
A: One-third less calories than a regular year.
More information about the linux-arm-kernel
mailing list