Loading arch/arm/mach-sa1100/h3600.c +45 −0 Original line number Diff line number Diff line Loading @@ -25,10 +25,12 @@ #include <linux/tty.h> #include <linux/pm.h> #include <linux/device.h> #include <linux/mfd/htc-egpio.h> #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/serial_core.h> #include <linux/gpio.h> #include <linux/platform_device.h> #include <asm/irq.h> #include <mach/hardware.h> Loading Loading @@ -184,11 +186,54 @@ static struct sa1100_port_fns h3xxx_port_fns __initdata = { .set_wake = h3xxx_uart_set_wake, }; /* * EGPIO */ static struct resource egpio_resources[] = { [0] = { .start = H3600_EGPIO_PHYS, .end = H3600_EGPIO_PHYS + 0x4 - 1, .flags = IORESOURCE_MEM, }, }; static struct htc_egpio_chip egpio_chips[] = { [0] = { .reg_start = 0, .gpio_base = H3XXX_EGPIO_BASE, .num_gpios = 16, .direction = HTC_EGPIO_OUTPUT, .initial_values = 0x0080, /* H3XXX_EGPIO_RS232_ON */ }, }; static struct htc_egpio_platform_data egpio_info = { .reg_width = 16, .bus_width = 16, .chip = egpio_chips, .num_chips = ARRAY_SIZE(egpio_chips), }; static struct platform_device h3xxx_egpio = { .name = "htc-egpio", .id = -1, .resource = egpio_resources, .num_resources = ARRAY_SIZE(egpio_resources), .dev = { .platform_data = &egpio_info, }, }; static struct platform_device *h3xxx_devices[] = { &h3xxx_egpio, }; static void __init h3xxx_mach_init(void) { sa1100_register_uart_fns(&h3xxx_port_fns); sa11x0_register_mtd(&h3xxx_flash_data, &h3xxx_flash_resource, 1); platform_add_devices(h3xxx_devices, ARRAY_SIZE(h3xxx_devices)); } static struct map_desc h3600_io_desc[] __initdata = { Loading arch/arm/mach-sa1100/include/mach/h3600_gpio.h +24 −0 Original line number Diff line number Diff line Loading @@ -97,4 +97,28 @@ #define EGPIO_H3600_LVDD_ON (1 << 15) /* enable 9V and -6.5V to LCD. */ /* gpiolib versions of EGPIOs */ /* H3100 / 3600 EGPIO pins */ #define H3XXX_EGPIO_BASE (GPIO_MAX + 1) #define H3XXX_EGPIO_VPP_ON (H3XXX_EGPIO_BASE + 0) #define H3XXX_EGPIO_CARD_RESET (H3XXX_EGPIO_BASE + 1) /* reset the attached pcmcia/compactflash card. active high. */ #define H3XXX_EGPIO_OPT_RESET (H3XXX_EGPIO_BASE + 2) /* reset the attached option pack. active high. */ #define H3XXX_EGPIO_CODEC_NRESET (H3XXX_EGPIO_BASE + 3) /* reset the onboard UDA1341. active low. */ #define H3XXX_EGPIO_OPT_NVRAM_ON (H3XXX_EGPIO_BASE + 4) /* apply power to optionpack nvram, active high. */ #define H3XXX_EGPIO_OPT_ON (H3XXX_EGPIO_BASE + 5) /* full power to option pack. active high. */ #define H3XXX_EGPIO_LCD_ON (H3XXX_EGPIO_BASE + 6) /* enable 3.3V to LCD. active high. */ #define H3XXX_EGPIO_RS232_ON (H3XXX_EGPIO_BASE + 7) /* UART3 transceiver force on. Active high. */ /* H3600 only EGPIO pins */ #define H3600_EGPIO_LCD_PCI (H3XXX_EGPIO_BASE + 8) /* LCD control IC enable. active high. */ #define H3600_EGPIO_IR_ON (H3XXX_EGPIO_BASE + 9) /* apply power to IR module. active high. */ #define H3600_EGPIO_AUD_AMP_ON (H3XXX_EGPIO_BASE + 10) /* apply power to audio power amp. active high. */ #define H3600_EGPIO_AUD_PWR_ON (H3XXX_EGPIO_BASE + 11) /* apply power to reset of audio circuit. active high. */ #define H3600_EGPIO_QMUTE (H3XXX_EGPIO_BASE + 12) /* mute control for onboard UDA1341. active high. */ #define H3600_EGPIO_IR_FSEL (H3XXX_EGPIO_BASE + 13) /* IR speed select: 1->fast, 0->slow */ #define H3600_EGPIO_LCD_5V_ON (H3XXX_EGPIO_BASE + 14) /* enable 5V to LCD. active high. */ #define H3600_EGPIO_LVDD_ON (H3XXX_EGPIO_BASE + 15) /* enable 9V and -6.5V to LCD. */ #endif /* _INCLUDE_H3600_GPIO_H_ */ Loading
arch/arm/mach-sa1100/h3600.c +45 −0 Original line number Diff line number Diff line Loading @@ -25,10 +25,12 @@ #include <linux/tty.h> #include <linux/pm.h> #include <linux/device.h> #include <linux/mfd/htc-egpio.h> #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/serial_core.h> #include <linux/gpio.h> #include <linux/platform_device.h> #include <asm/irq.h> #include <mach/hardware.h> Loading Loading @@ -184,11 +186,54 @@ static struct sa1100_port_fns h3xxx_port_fns __initdata = { .set_wake = h3xxx_uart_set_wake, }; /* * EGPIO */ static struct resource egpio_resources[] = { [0] = { .start = H3600_EGPIO_PHYS, .end = H3600_EGPIO_PHYS + 0x4 - 1, .flags = IORESOURCE_MEM, }, }; static struct htc_egpio_chip egpio_chips[] = { [0] = { .reg_start = 0, .gpio_base = H3XXX_EGPIO_BASE, .num_gpios = 16, .direction = HTC_EGPIO_OUTPUT, .initial_values = 0x0080, /* H3XXX_EGPIO_RS232_ON */ }, }; static struct htc_egpio_platform_data egpio_info = { .reg_width = 16, .bus_width = 16, .chip = egpio_chips, .num_chips = ARRAY_SIZE(egpio_chips), }; static struct platform_device h3xxx_egpio = { .name = "htc-egpio", .id = -1, .resource = egpio_resources, .num_resources = ARRAY_SIZE(egpio_resources), .dev = { .platform_data = &egpio_info, }, }; static struct platform_device *h3xxx_devices[] = { &h3xxx_egpio, }; static void __init h3xxx_mach_init(void) { sa1100_register_uart_fns(&h3xxx_port_fns); sa11x0_register_mtd(&h3xxx_flash_data, &h3xxx_flash_resource, 1); platform_add_devices(h3xxx_devices, ARRAY_SIZE(h3xxx_devices)); } static struct map_desc h3600_io_desc[] __initdata = { Loading
arch/arm/mach-sa1100/include/mach/h3600_gpio.h +24 −0 Original line number Diff line number Diff line Loading @@ -97,4 +97,28 @@ #define EGPIO_H3600_LVDD_ON (1 << 15) /* enable 9V and -6.5V to LCD. */ /* gpiolib versions of EGPIOs */ /* H3100 / 3600 EGPIO pins */ #define H3XXX_EGPIO_BASE (GPIO_MAX + 1) #define H3XXX_EGPIO_VPP_ON (H3XXX_EGPIO_BASE + 0) #define H3XXX_EGPIO_CARD_RESET (H3XXX_EGPIO_BASE + 1) /* reset the attached pcmcia/compactflash card. active high. */ #define H3XXX_EGPIO_OPT_RESET (H3XXX_EGPIO_BASE + 2) /* reset the attached option pack. active high. */ #define H3XXX_EGPIO_CODEC_NRESET (H3XXX_EGPIO_BASE + 3) /* reset the onboard UDA1341. active low. */ #define H3XXX_EGPIO_OPT_NVRAM_ON (H3XXX_EGPIO_BASE + 4) /* apply power to optionpack nvram, active high. */ #define H3XXX_EGPIO_OPT_ON (H3XXX_EGPIO_BASE + 5) /* full power to option pack. active high. */ #define H3XXX_EGPIO_LCD_ON (H3XXX_EGPIO_BASE + 6) /* enable 3.3V to LCD. active high. */ #define H3XXX_EGPIO_RS232_ON (H3XXX_EGPIO_BASE + 7) /* UART3 transceiver force on. Active high. */ /* H3600 only EGPIO pins */ #define H3600_EGPIO_LCD_PCI (H3XXX_EGPIO_BASE + 8) /* LCD control IC enable. active high. */ #define H3600_EGPIO_IR_ON (H3XXX_EGPIO_BASE + 9) /* apply power to IR module. active high. */ #define H3600_EGPIO_AUD_AMP_ON (H3XXX_EGPIO_BASE + 10) /* apply power to audio power amp. active high. */ #define H3600_EGPIO_AUD_PWR_ON (H3XXX_EGPIO_BASE + 11) /* apply power to reset of audio circuit. active high. */ #define H3600_EGPIO_QMUTE (H3XXX_EGPIO_BASE + 12) /* mute control for onboard UDA1341. active high. */ #define H3600_EGPIO_IR_FSEL (H3XXX_EGPIO_BASE + 13) /* IR speed select: 1->fast, 0->slow */ #define H3600_EGPIO_LCD_5V_ON (H3XXX_EGPIO_BASE + 14) /* enable 5V to LCD. active high. */ #define H3600_EGPIO_LVDD_ON (H3XXX_EGPIO_BASE + 15) /* enable 9V and -6.5V to LCD. */ #endif /* _INCLUDE_H3600_GPIO_H_ */