From: <far...@us...> - 2006-08-20 12:35:33
|
Revision: 549 Author: farcaller Date: 2006-08-20 05:35:24 -0700 (Sun, 20 Aug 2006) ViewCVS: http://svn.sourceforge.net/hackndev/?rev=549&view=rev Log Message: ----------- plamt3: T3 PM code, not working, mostly debug stubs Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c linux4palm/linux/trunk/arch/arm/mach-pxa/pxa25x.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c 2006-08-20 12:31:41 UTC (rev 548) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c 2006-08-20 12:35:24 UTC (rev 549) @@ -28,6 +28,7 @@ #include <asm/arch/ssp.h> #include <linux/input.h> #include <linux/soc/tsc2101.h> +#include <asm/arch/pxa-pm_ll.h> #include "../generic.h" @@ -156,6 +157,51 @@ .id = -1, }; +/*** Suspend/Resume ***/ +void palmt3_suspend(unsigned long ret) +{ + // TODO: store return address in checkpoint mem + // INFO: check arch/arm/mach-pxa/pm.c and pxa25x.c for more info + unsigned long * addr; + addr = 0xC0000FF0; + *addr = 0; + addr = 0xC0000FF4; + *addr = 0; + addr = 0xC0000FF8; + *addr = 0; + + return; +} + +void palmt3_suspend_prepare(void) +{ + unsigned long * addr; + PSPR = 0x8C000F00; + PWER = 0x0C03; + PRER = 0x0C03; + PFER = 0x0C03; +#if 0 + addr = 0xC0004800; + *addr = 0x0000000A; +#endif + addr = 0xC0000FF4; + *addr = 0xfeedbee1; +} + +void palmt3_resume(void) +{ + // TODO: anything here? + unsigned long * addr; + addr = 0xC0000FF8; + *addr = 0xfeedbee3; +} + +static struct pxa_ll_pm_ops palmt3_pm_ops = { + palmt3_suspend, + palmt3_resume +}; + + /*** INIT ***/ static struct platform_device *devices[] __initdata = { @@ -173,7 +219,7 @@ do { GPSR(85) = GPIO_bit(85); } while (0); */ set_pxa_fb_info(&palmt3lcd); - + pxa_pm_set_ll_ops(&palmt3_pm_ops); palmt3_ssp_init(); platform_add_devices (devices, ARRAY_SIZE (devices)); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/pxa25x.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/pxa25x.c 2006-08-20 12:31:41 UTC (rev 548) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/pxa25x.c 2006-08-20 12:35:24 UTC (rev 549) @@ -122,13 +122,20 @@ { extern void pxa_cpu_suspend(unsigned int); extern void pxa_cpu_resume(void); +#ifdef CONFIG_MACH_T3XSCALE + extern void palmt3_suspend_prepare(void); +#endif CKEN = 0; switch (state) { case PM_SUSPEND_MEM: /* set resume return address */ +#ifndef CONFIG_MACH_T3XSCALE PSPR = virt_to_phys(pxa_cpu_resume); +#else + palmt3_suspend_prepare(); +#endif pxa_cpu_suspend(PWRMODE_SLEEP); break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bob...@us...> - 2006-10-01 02:30:17
|
Revision: 604 http://svn.sourceforge.net/hackndev/?rev=604&view=rev Author: bobofdoom Date: 2006-09-30 19:30:08 -0700 (Sat, 30 Sep 2006) Log Message: ----------- all: time: Added CONFIG_PXA_RTC_EPOCH so that we can set hardware epoch to 1904 to coexist peacefully with POS. Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/time.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2006-09-30 08:21:19 UTC (rev 603) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2006-10-01 02:30:08 UTC (rev 604) @@ -164,4 +164,11 @@ to work around certain bootloaders overwriting them during resume. +config PXA_RTC_EPOCH + int "PXA RTC epoch year" + default "1970" + help + The default Linux epoch Jan 1st 1970, however to + operate alongside PalmOS nicely, change this to 1904. + endif Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/time.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/time.c 2006-09-30 08:21:19 UTC (rev 603) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/time.c 2006-10-01 02:30:08 UTC (rev 604) @@ -29,16 +29,19 @@ #include <asm/mach/time.h> #include <asm/arch/pxa-regs.h> +#define ONE_YEAR 31557600 /* seconds */ static inline unsigned long pxa_get_rtc_time(void) { - return RCNR; + return RCNR - (1970-CONFIG_PXA_RTC_EPOCH)*ONE_YEAR; } static int pxa_set_rtc(void) { unsigned long current_time = xtime.tv_sec; + current_time += (1970-CONFIG_PXA_RTC_EPOCH)*ONE_YEAR; + if (RTSR & RTSR_ALE) { /* make sure not to forward the clock over an alarm */ unsigned long alarm = RTAR; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bob...@us...> - 2007-01-07 15:19:19
|
Revision: 726 http://svn.sourceforge.net/hackndev/?rev=726&view=rev Author: bobofdoom Date: 2007-01-07 07:19:15 -0800 (Sun, 07 Jan 2007) Log Message: ----------- palmt680: Added initial code based on Treo 650 port. Added Paths: ----------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig 2007-01-07 15:19:15 UTC (rev 726) @@ -0,0 +1,8 @@ +menuconfig MACH_XSCALE_PALMTREO680 + bool "Palm Treo 680" + select PXA27x + help + Say Y here if you intend to run this kernel on a + Palm Treo 680. Currently there is only basic support + for this PDA. + Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile 2007-01-07 15:19:15 UTC (rev 726) @@ -0,0 +1,6 @@ +# +# Makefile for Palm Treo 650 support +# + +obj-$(CONFIG_MACH_XSCALE_PALMTREO650) += palmt650.o + Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c 2007-01-07 15:19:15 UTC (rev 726) @@ -0,0 +1,383 @@ +/* + * linux/arch/arm/mach-pxa/palmt680/palmt680.c + * + * Support for the Palm Treo 680. + * + * Author: + * + * Based on palmt650.c by Alex Osborne <bob...@gm...> + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/device.h> +#include <linux/platform_device.h> +#include <linux/fb.h> +#include <linux/input.h> +//#include <linux/irq.h> + +#include <asm/mach-types.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> + +#include <asm/arch/audio.h> +#include <asm/arch/hardware.h> +#include <asm/arch/mmc.h> +#include <asm/arch/pxafb.h> +#include <asm/arch/pxa-regs.h> +#include <asm/arch/palmt680-gpio.h> +#include <asm/arch/pxa27x_keyboard.h> +#include <asm/arch/irda.h> +#include <asm/arch/sharpsl.h> +#include <asm/arch/udc.h> + +#include <sound/driver.h> +#include <sound/core.h> +#include <sound/pcm.h> +#include <sound/initval.h> +#include <sound/ac97_codec.h> + +#include "../generic.h" + +/********************************************************* + * SD/MMC card controller + *********************************************************/ + +static int palmt680_mci_init(struct device *dev, + irqreturn_t (*palmt680_detect_int)(int, void *, struct pt_regs *), void *data) +{ + int err; + /* setup an interrupt for detecting card insert/remove events */ + set_irq_type(IRQ_GPIO_PALMT680_SD_DETECT_N, IRQT_BOTHEDGE); + err = request_irq(IRQ_GPIO_PALMT680_SD_DETECT_N, palmt680_detect_int, + SA_INTERRUPT, "SD/MMC card detect", data); + + if(err) { + printk(KERN_ERR "palmt680: can't get SD/MMC card detect IRQ\n"); + return err; + } + return 0; +} + +static void palmt680_mci_exit(struct device *dev, void *data) +{ + free_irq(IRQ_GPIO_PALMT680_SD_DETECT_N, data); +} + +static struct pxamci_platform_data palmt680_mci_platform_data = { + .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, + .init = palmt680_mci_init, + /* .setpower = palmt680_mci_setpower, */ + .exit = palmt680_mci_exit, + +}; + +/********************************************************* + * AC97 audio controller + *********************************************************/ + +static pxa2xx_audio_ops_t palmt680_audio_ops = { + /* + .startup = palmt680_audio_startup, + .shutdown = mst_audio_shutdown, + .suspend = mst_audio_suspend, + .resume = mst_audio_resume, + */ +}; + +static struct platform_device palmt680_ac97 = { + .name = "pxa2xx-ac97", + .id = -1, + .dev = { .platform_data = &palmt680_audio_ops }, +}; + +/********************************************************* + * IRDA + *********************************************************/ + +static void palmt680_irda_transceiver_mode(struct device *dev, int mode) +{ +#if 0 + SET_PALMT680_GPIO(IRDA_SD, mode & IR_OFF); +#endif +} + +static struct pxaficp_platform_data palmt680_ficp_platform_data = { + .transceiver_cap = IR_SIRMODE | IR_OFF, + .transceiver_mode = palmt680_irda_transceiver_mode, +}; + +/********************************************************* + * LEDs + *********************************************************/ + +static struct platform_device palmt680_led = { + .name = "palmt680-led", + .id = -1, +}; + +/********************************************************* + * Backlight + *********************************************************/ + +static void palmt680_set_bl_intensity(int intensity) +{ + PWM_CTRL0 = 0; /* pre-scalar */ + PWM_PWDUTY0 = intensity; /* duty cycle */ + PWM_PERVAL0 = 0x1b1; /* period */ + + if (intensity > 0) { + pxa_set_cken(CKEN0_PWM0, 1); + } else { + pxa_set_cken(CKEN0_PWM0, 0); + } +} + +static struct corgibl_machinfo palmt680_bl_machinfo = { + .max_intensity = 0x1ad, + .default_intensity = 0xe5, + .limit_mask = 0x7f, + .set_bl_intensity = palmt680_set_bl_intensity, +}; + +static struct platform_device palmt680_bl = { + .name = "corgi-bl", + .dev = { + .platform_data = &palmt680_bl_machinfo, + }, +}; + +/********************************************************* + * USB Device Controller + *********************************************************/ + +static int udc_is_connected(void) +{ + /* TODO: find GPIO line for USB connected */ + return 1;//GPLR(GPIO_PALMLD_USB_DETECT) & GPIO_bit(GPIO_PALMLD_USB_DETECT); +} + +static void udc_enable(int cmd) +{ + /** + * TODO: find the GPIO line which powers up the USB. + */ + switch (cmd) + { + case PXA2XX_UDC_CMD_DISCONNECT: + printk (KERN_NOTICE "USB cmd disconnect\n"); + /* SET_X30_GPIO(USB_PUEN, 0); */ + break; + + case PXA2XX_UDC_CMD_CONNECT: + printk (KERN_NOTICE "USB cmd connect\n"); + /* SET_X30_GPIO(USB_PUEN, 1); */ + break; + } +} +static struct pxa2xx_udc_mach_info palmt680_udc_mach_info = { + .udc_is_connected = udc_is_connected, + .udc_command = udc_enable, +}; + +/********************************************************* + * Keypad + *********************************************************/ + +static struct pxa27x_keyboard_platform_data palmt680_kbd_data = { + .nr_rows = 8, + .nr_cols = 7, + .keycodes = { + { /* row 0 */ + KEY_O, // "O" + KEY_LEFT, // "5-Way Left" }, + KEY_RIGHTSHIFT, // "Alternate" }, + KEY_L, // "L" }, + KEY_A, // "A" }, + KEY_Q, // "Q" }, + KEY_RIGHTCTRL, // "Right Shift" }, + }, { /* row 1 */ + KEY_P, // "P" }, + KEY_RIGHT, // "5-Way Right" }, + KEY_LEFTSHIFT, //"Left Shift" }, + KEY_Z, // "Z" }, + KEY_S, // "S" }, + KEY_W, // "W" }, + -1, // "Unused" }, + }, { /* row 2 */ + KEY_F1, // "Phone" }, + KEY_UP, // "5-Way Up" }, + KEY_0, // "0" }, + KEY_X, // "X" }, + KEY_D, // "D" }, + KEY_E, // "E" }, + -1, // "Unused" }, + }, { /* row 3 */ + KEY_F2, // "Calendar" }, + KEY_DOWN, // "5-Way Down" }, + KEY_SPACE, // "Space" }, + KEY_C, // "C" }, + KEY_F, // "F" }, + KEY_R, // "R" }, + -1, // "Unused" }, + }, { /* row 4 */ + KEY_F3, // "Mail" }, + KEY_SELECT, // "5-Way Center" }, + KEY_HOME, // "Unused" }, + KEY_V, // "V" }, + KEY_G, // "G" }, + KEY_T, // "T" }, + -1, // "Unused" }, + }, { /* row 5 */ + KEY_F4, // "Off" }, + KEY_VOLUMEUP, // "Volume Up" }, + KEY_DOT, // "." }, + KEY_B, // "B" }, + KEY_H, // "H" }, + KEY_Y, // "Y" }, + -1, // "Unused" }, + }, { /* row 6 */ + KEY_F5, // "Mute" }, + KEY_VOLUMEDOWN, // "Volume Down" }, + KEY_KPENTER, // "Return" }, + KEY_N, // "N" }, + KEY_J, // "J" }, + KEY_U, // "U" }, + -1, // "Unused" }, + }, { /* row 7 */ + KEY_RIGHTALT, // "Alt" }, + KEY_MENU, // "Unused" }, + KEY_BACKSPACE, // "P" }, + KEY_M, // "M" + KEY_K, // "K" + KEY_I, // "I" + -1, // "Unused" }, + }, + + }, + .gpio_modes = { + GPIO_NR_PALMT680_KP_MKIN0_MD, + GPIO_NR_PALMT680_KP_MKIN1_MD, + GPIO_NR_PALMT680_KP_MKIN2_MD, + GPIO_NR_PALMT680_KP_MKIN3_MD, + GPIO_NR_PALMT680_KP_MKIN4_MD, + GPIO_NR_PALMT680_KP_MKIN5_MD, + GPIO_NR_PALMT680_KP_MKIN6_MD, + GPIO_NR_PALMT680_KP_MKIN7_MD, + GPIO_NR_PALMT680_KP_MKOUT0_MD, + GPIO_NR_PALMT680_KP_MKOUT1_MD, + GPIO_NR_PALMT680_KP_MKOUT2_MD, + GPIO_NR_PALMT680_KP_MKOUT3_MD, + GPIO_NR_PALMT680_KP_MKOUT4_MD, + GPIO_NR_PALMT680_KP_MKOUT5_MD, + GPIO_NR_PALMT680_KP_MKOUT6_MD, + }, +}; + +static struct platform_device palmt680_kbd = { + .name = "pxa27x-keyboard", + .dev = { + .platform_data = &palmt680_kbd_data, + }, +}; + + + +static struct platform_device *devices[] __initdata = { + &palmt680_kbd, &palmt680_ac97, &palmt680_bl, + &palmt680_led, +}; + +/********************************************************* + * LCD + *********************************************************/ + +/* when we upgrade to 2.6.19+ remote OLDLCD */ +#define OLDLCD +#ifndef OLDLCD +static struct pxafb_mode_info palmt680_lcd_mode __initdata = { + /* pixclock is set by lccr3 below */ + .pixclock = 50000, + .xres = 320, + .yres = 320, + .bpp = 16, + .hsync_len = 4, + .vsync_len = 1, + + .left_margin = 20, + .right_margin = 8, + .upper_margin = 8, + .lower_margin = 5, + .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, +}; +#endif + +static struct pxafb_mach_info palmt680_lcd __initdata = { + .lccr0 = 0x4000080, + .lccr3 = 0x4700003, + //.pxafb_backlight_power = palm_backlight_power, + // + // +#ifdef OLDLCD + /* pixclock is set by lccr3 below */ + .pixclock = 50000, + .xres = 320, + .yres = 320, + .bpp = 16, + .hsync_len = 4, + .vsync_len = 1, + + .left_margin = 20, + .right_margin = 8, + .upper_margin = 8, + .lower_margin = 5, + .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, +#else + .num_modes = 1, + .modes = &palmt680_lcd_mode, +#endif +}; + +static struct map_desc palmt680_io_desc[] __initdata = { + { /* Devs */ + .virtual = PALMT680_ASIC6_VIRT, + .pfn = __phys_to_pfn(PALMT680_ASIC6_PHYS), + .length = PALMT680_ASIC6_SIZE, + .type = MT_DEVICE + }, +}; + +static void __init palmt680_map_io(void) +{ + pxa_map_io(); + iotable_init(palmt680_io_desc, ARRAY_SIZE(palmt680_io_desc)); +} + +static void __init palmt680_init(void) +{ + /* Disable PRIRDY interrupt to avoid hanging when loading AC97 */ + GCR &= ~GCR_PRIRDY_IEN; + set_pxa_fb_info(&palmt680_lcd); + pxa_set_mci_info(&palmt680_mci_platform_data); + pxa_set_ficp_info(&palmt680_ficp_platform_data); + pxa_set_udc_info( &palmt680_udc_mach_info ); + platform_add_devices(devices, ARRAY_SIZE(devices)); + +#if 0 + /* configure power switch to resume from standby */ + PWER |= PWER_GPIO12; + PRER |= PWER_GPIO12; +#endif +} + +MACHINE_START(XSCALE_PALMTREO680, "Palm Treo 680") + .phys_io = 0x40000000, + .io_pg_offst = io_p2v(0x40000000), + .boot_params = 0xa0000100, + .map_io = palmt680_map_io, + .init_irq = pxa_init_irq, + .timer = &pxa_timer, + .init_machine = palmt680_init, +MACHINE_END + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bob...@us...> - 2007-01-07 15:52:40
|
Revision: 730 http://svn.sourceforge.net/hackndev/?rev=730&view=rev Author: bobofdoom Date: 2007-01-07 07:52:38 -0800 (Sun, 07 Jan 2007) Log Message: ----------- Corrected machine ID: s/PALMTREO680/TREO680/g Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-01-07 15:49:31 UTC (rev 729) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-01-07 15:52:38 UTC (rev 730) @@ -40,7 +40,7 @@ obj-y += rover/ obj-$(CONFIG_MACH_XSCALE_PALMLD) += palmld/ obj-$(CONFIG_MACH_XSCALE_PALMTREO650) += palmt650/ -obj-$(CONFIG_MACH_XSCALE_PALMTREO680) += palmt680/ +obj-$(CONFIG_MACH_XSCALE_TREO680) += palmt680/ obj-$(CONFIG_MACH_T3XSCALE) += ssp.o palmt3/ obj-$(CONFIG_MACH_XSCALE_PALMTT5) += palmt5/ obj-$(CONFIG_MACH_XSCALE_PALMTX) += palmtx/ Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig 2007-01-07 15:49:31 UTC (rev 729) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Kconfig 2007-01-07 15:52:38 UTC (rev 730) @@ -1,4 +1,4 @@ -menuconfig MACH_XSCALE_PALMTREO680 +menuconfig MACH_XSCALE_TREO680 bool "Palm Treo 680" select PXA27x help Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile 2007-01-07 15:49:31 UTC (rev 729) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/Makefile 2007-01-07 15:52:38 UTC (rev 730) @@ -2,5 +2,5 @@ # Makefile for Palm Treo 680 support # -obj-$(CONFIG_MACH_XSCALE_PALMTREO680) += palmt650.o +obj-$(CONFIG_MACH_XSCALE_TREO680) += palmt680.o Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c 2007-01-07 15:49:31 UTC (rev 729) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt680/palmt680.c 2007-01-07 15:52:38 UTC (rev 730) @@ -371,7 +371,7 @@ #endif } -MACHINE_START(XSCALE_PALMTREO680, "Palm Treo 680") +MACHINE_START(XSCALE_TREO680, "Palm Treo 680") .phys_io = 0x40000000, .io_pg_offst = io_p2v(0x40000000), .boot_params = 0xa0000100, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bob...@us...> - 2007-01-19 02:19:11
|
Revision: 768 http://svn.sourceforge.net/hackndev/?rev=768&view=rev Author: bobofdoom Date: 2007-01-18 18:19:09 -0800 (Thu, 18 Jan 2007) Log Message: ----------- palmt700wx: Added initial support. Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile Added Paths: ----------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Makefile linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/palmt700wx.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2007-01-19 02:18:21 UTC (rev 767) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2007-01-19 02:19:09 UTC (rev 768) @@ -44,6 +44,7 @@ source "arch/arm/mach-pxa/palmld/Kconfig" source "arch/arm/mach-pxa/palmt650/Kconfig" source "arch/arm/mach-pxa/palmt680/Kconfig" +source "arch/arm/mach-pxa/palmt700wx/Kconfig" source "arch/arm/mach-pxa/palmte2/Kconfig" source "arch/arm/mach-pxa/palmt3/Kconfig" source "arch/arm/mach-pxa/palmt5/Kconfig" Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-01-19 02:18:21 UTC (rev 767) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-01-19 02:19:09 UTC (rev 768) @@ -41,6 +41,7 @@ obj-$(CONFIG_MACH_XSCALE_PALMLD) += palmld/ obj-$(CONFIG_MACH_XSCALE_PALMTREO650) += palmt650/ obj-$(CONFIG_MACH_XSCALE_TREO680) += palmt680/ +obj-$(CONFIG_MACH_T700WX) += palmt700wx/ obj-$(CONFIG_MACH_T3XSCALE) += ssp.o palmt3/ obj-$(CONFIG_MACH_XSCALE_PALMTT5) += palmt5/ obj-$(CONFIG_MACH_XSCALE_PALMTX) += palmtx/ Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Kconfig (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Kconfig 2007-01-19 02:19:09 UTC (rev 768) @@ -0,0 +1,8 @@ +menuconfig MACH_T700WX + bool "Palm Treo 700wx" + select PXA27x + help + Say Y here if you intend to run this kernel on a + Palm Treo 700wx. Currently there is only basic support + for this PDA. + Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Makefile (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/Makefile 2007-01-19 02:19:09 UTC (rev 768) @@ -0,0 +1,6 @@ +# +# Makefile for Palm Treo 700wx support +# + +obj-$(CONFIG_MACH_T700WX) += palmt700wx.o + Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/palmt700wx.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/palmt700wx.c (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt700wx/palmt700wx.c 2007-01-19 02:19:09 UTC (rev 768) @@ -0,0 +1,388 @@ +/* + * linux/arch/arm/mach-pxa/palmt700wx/palmt700wx.c + * + * Support for the Palm Treo 700wx. + * + * Author: you + * + * Based on palmt650.c by Alex Osborne <bob...@gm...> + * + */ + +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/device.h> +#include <linux/platform_device.h> +#include <linux/fb.h> +#include <linux/input.h> +//#include <linux/irq.h> + +#include <asm/mach-types.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> + +#include <asm/arch/audio.h> +#include <asm/arch/hardware.h> +#include <asm/arch/mmc.h> +#include <asm/arch/pxafb.h> +#include <asm/arch/pxa-regs.h> +#include <asm/arch/palmt700wx-gpio.h> +#include <asm/arch/pxa27x_keyboard.h> +#include <asm/arch/irda.h> +#include <asm/arch/sharpsl.h> +#include <asm/arch/udc.h> + +#include <sound/driver.h> +#include <sound/core.h> +#include <sound/pcm.h> +#include <sound/initval.h> +#include <sound/ac97_codec.h> + +#include "../generic.h" + +/********************************************************* + * SD/MMC card controller + *********************************************************/ + +static int palmt700wx_mci_init(struct device *dev, + irqreturn_t (*palmt700wx_detect_int)(int, void *, struct pt_regs *), void *data) +{ + int err; + /* setup an interrupt for detecting card insert/remove events */ + set_irq_type(IRQ_GPIO_PALMT650_SD_DETECT_N, IRQT_BOTHEDGE); + err = request_irq(IRQ_GPIO_PALMT650_SD_DETECT_N, palmt700wx_detect_int, + SA_INTERRUPT, "SD/MMC card detect", data); + + if(err) { + printk(KERN_ERR "palmt700wx: can't get SD/MMC card detect IRQ\n"); + return err; + } + return 0; +} + +static void palmt700wx_mci_exit(struct device *dev, void *data) +{ + free_irq(IRQ_GPIO_PALMT650_SD_DETECT_N, data); +} + +static struct pxamci_platform_data palmt700wx_mci_platform_data = { + .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, + .init = palmt700wx_mci_init, + /* .setpower = palmt700wx_mci_setpower, */ + .exit = palmt700wx_mci_exit, + +}; + +/********************************************************* + * AC97 audio controller + *********************************************************/ + +static pxa2xx_audio_ops_t palmt700wx_audio_ops = { + /* + .startup = palmt700wx_audio_startup, + .shutdown = mst_audio_shutdown, + .suspend = mst_audio_suspend, + .resume = mst_audio_resume, + */ +}; + +static struct platform_device palmt700wx_ac97 = { + .name = "pxa2xx-ac97", + .id = -1, + .dev = { .platform_data = &palmt700wx_audio_ops }, +}; + +/********************************************************* + * IRDA + *********************************************************/ + +static void palmt700wx_irda_transceiver_mode(struct device *dev, int mode) +{ +#if 0 + SET_PALMT650_GPIO(IRDA_SD, mode & IR_OFF); +#endif +} + +static struct pxaficp_platform_data palmt700wx_ficp_platform_data = { + .transceiver_cap = IR_SIRMODE | IR_OFF, + .transceiver_mode = palmt700wx_irda_transceiver_mode, +}; + +/********************************************************* + * LEDs + *********************************************************/ + +static struct platform_device palmt700wx_led = { + .name = "palmt700wx-led", + .id = -1, +}; + +/********************************************************* + * Backlight + *********************************************************/ + +static void palmt700wx_set_bl_intensity(int intensity) +{ + PWM_CTRL0 = 0; /* pre-scalar */ + PWM_PWDUTY0 = intensity; /* duty cycle */ + PWM_PERVAL0 = 0x1b1; /* period */ + + if (intensity > 0) { + pxa_set_cken(CKEN0_PWM0, 1); + } else { + pxa_set_cken(CKEN0_PWM0, 0); + } +} + +static struct corgibl_machinfo palmt700wx_bl_machinfo = { + .max_intensity = 0x1ad, + .default_intensity = 0xe5, + .limit_mask = 0x7f, + .set_bl_intensity = palmt700wx_set_bl_intensity, +}; + +static struct platform_device palmt700wx_bl = { + .name = "corgi-bl", + .dev = { + .platform_data = &palmt700wx_bl_machinfo, + }, +}; + +/********************************************************* + * USB Device Controller + *********************************************************/ + +static int udc_is_connected(void) +{ + return 1111;//GPLR(GPIO_PALMLD_USB_DETECT) & GPIO_bit(GPIO_PALMLD_USB_DETECT); +} + +static void udc_enable(int cmd) +{ + /** + * TODO: find the GPIO line which powers up the USB. + */ + switch (cmd) + { + case PXA2XX_UDC_CMD_DISCONNECT: + printk (KERN_NOTICE "USB cmd disconnect\n"); + /* SET_X30_GPIO(USB_PUEN, 0); */ + break; + + case PXA2XX_UDC_CMD_CONNECT: + printk (KERN_NOTICE "USB cmd connect\n"); + /* SET_X30_GPIO(USB_PUEN, 1); */ + break; + } +} +static struct pxa2xx_udc_mach_info palmt700wx_udc_mach_info = { + .udc_is_connected = udc_is_connected, + .udc_command = udc_enable, +}; + +/********************************************************* + * Keypad + *********************************************************/ + +static struct pxa27x_keyboard_platform_data palmt700wx_kbd_data = { + .nr_rows = 8, + .nr_cols = 7, + .keycodes = { + { /* row 0 */ + KEY_O, // "O" + KEY_LEFT, // "5-Way Left" }, + KEY_RIGHTSHIFT, // "Alternate" }, + KEY_L, // "L" }, + KEY_A, // "A" }, + KEY_Q, // "Q" }, + KEY_RIGHTCTRL, // "Right Shift" }, + }, { /* row 1 */ + KEY_P, // "P" }, + KEY_RIGHT, // "5-Way Right" }, + KEY_LEFTSHIFT, //"Left Shift" }, + KEY_Z, // "Z" }, + KEY_S, // "S" }, + KEY_W, // "W" }, + -1, // "Unused" }, + }, { /* row 2 */ + KEY_F1, // "Phone" }, + KEY_UP, // "5-Way Up" }, + KEY_0, // "0" }, + KEY_X, // "X" }, + KEY_D, // "D" }, + KEY_E, // "E" }, + -1, // "Unused" }, + }, { /* row 3 */ + KEY_F2, // "Calendar" }, + KEY_DOWN, // "5-Way Down" }, + KEY_SPACE, // "Space" }, + KEY_C, // "C" }, + KEY_F, // "F" }, + KEY_R, // "R" }, + -1, // "Unused" }, + }, { /* row 4 */ + KEY_F3, // "Mail" }, + KEY_SELECT, // "5-Way Center" }, + KEY_HOME, // "Unused" }, + KEY_V, // "V" }, + KEY_G, // "G" }, + KEY_T, // "T" }, + -1, // "Unused" }, + }, { /* row 5 */ + KEY_F4, // "Off" }, + KEY_VOLUMEUP, // "Volume Up" }, + KEY_DOT, // "." }, + KEY_B, // "B" }, + KEY_H, // "H" }, + KEY_Y, // "Y" }, + -1, // "Unused" }, + }, { /* row 6 */ + KEY_F5, // "Mute" }, + KEY_VOLUMEDOWN, // "Volume Down" }, + KEY_KPENTER, // "Return" }, + KEY_N, // "N" }, + KEY_J, // "J" }, + KEY_U, // "U" }, + -1, // "Unused" }, + }, { /* row 7 */ + KEY_RIGHTALT, // "Alt" }, + KEY_MENU, // "Unused" }, + KEY_BACKSPACE, // "P" }, + KEY_M, // "M" + KEY_K, // "K" + KEY_I, // "I" + -1, // "Unused" }, + }, + + }, + .gpio_modes = { + GPIO_NR_PALMT650_KP_MKIN0_MD, + GPIO_NR_PALMT650_KP_MKIN1_MD, + GPIO_NR_PALMT650_KP_MKIN2_MD, + GPIO_NR_PALMT650_KP_MKIN3_MD, + GPIO_NR_PALMT650_KP_MKIN4_MD, + GPIO_NR_PALMT650_KP_MKIN5_MD, + GPIO_NR_PALMT650_KP_MKIN6_MD, + GPIO_NR_PALMT650_KP_MKIN7_MD, + GPIO_NR_PALMT650_KP_MKOUT0_MD, + GPIO_NR_PALMT650_KP_MKOUT1_MD, + GPIO_NR_PALMT650_KP_MKOUT2_MD, + GPIO_NR_PALMT650_KP_MKOUT3_MD, + GPIO_NR_PALMT650_KP_MKOUT4_MD, + GPIO_NR_PALMT650_KP_MKOUT5_MD, + GPIO_NR_PALMT650_KP_MKOUT6_MD, + }, +}; + +static struct platform_device palmt700wx_kbd = { + .name = "pxa27x-keyboard", + .dev = { + .platform_data = &palmt700wx_kbd_data, + }, +}; + + + +static struct platform_device *devices[] __initdata = { + &palmt700wx_kbd, &palmt700wx_ac97, &palmt700wx_bl, + &palmt700wx_led, +}; + +/********************************************************* + * LCD + *********************************************************/ + +/* when we upgrade to 2.6.19+ remote OLDLCD */ +#define OLDLCD +#ifndef OLDLCD +static struct pxafb_mode_info palmt700wx_lcd_mode __initdata = { + /* pixclock is set by lccr3 below */ + .pixclock = 50000, + .xres = 320, + .yres = 320, + .bpp = 16, + .hsync_len = 4, + .vsync_len = 1, + + /* fixme: these are the margins PalmOS has set, + * they seem to work but could be better. + */ + .left_margin = 20, + .right_margin = 8, + .upper_margin = 8, + .lower_margin = 5, + .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, +}; +#endif + +static struct pxafb_mach_info palmt700wx_lcd __initdata = { + .lccr0 = 0x4000080, + .lccr3 = 0x4700003, + //.pxafb_backlight_power = palm_backlight_power, + // + // +#ifdef OLDLCD + /* pixclock is set by lccr3 below */ + .pixclock = 50000, + .xres = 320, + .yres = 320, + .bpp = 16, + .hsync_len = 4, + .vsync_len = 1, + + /* fixme: these are the margins PalmOS has set, + * they seem to work but could be better. + */ + .left_margin = 20, + .right_margin = 8, + .upper_margin = 8, + .lower_margin = 5, + .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, +#else + .num_modes = 1, + .modes = &palmt700wx_lcd_mode, +#endif +}; + +static struct map_desc palmt700wx_io_desc[] __initdata = { + { /* Devs */ + .virtual = PALMT650_ASIC6_VIRT, + .pfn = __phys_to_pfn(PALMT650_ASIC6_PHYS), + .length = PALMT650_ASIC6_SIZE, + .type = MT_DEVICE + }, +}; + +static void __init palmt700wx_map_io(void) +{ + pxa_map_io(); + iotable_init(palmt700wx_io_desc, ARRAY_SIZE(palmt700wx_io_desc)); +} + +static void __init palmt700wx_init(void) +{ + /* Disable PRIRDY interrupt to avoid hanging when loading AC97 */ + GCR &= ~GCR_PRIRDY_IEN; + set_pxa_fb_info(&palmt700wx_lcd); + pxa_set_mci_info(&palmt700wx_mci_platform_data); + pxa_set_ficp_info(&palmt700wx_ficp_platform_data); + pxa_set_udc_info( &palmt700wx_udc_mach_info ); + platform_add_devices(devices, ARRAY_SIZE(devices)); + +#if 0 + /* configure power switch to resume from standby */ + PWER |= PWER_GPIO12; + PRER |= PWER_GPIO12; +#endif +} + +MACHINE_START(T700WX, "Palm Treo 700w") + .phys_io = 0x40000000, + .io_pg_offst = io_p2v(0x40000000), + .boot_params = 0xa0000100, + .map_io = palmt700wx_map_io, + .init_irq = pxa_init_irq, + .timer = &pxa_timer, + .init_machine = palmt700wx_init, +MACHINE_END + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-05-27 21:25:56
|
Revision: 1003 http://svn.sourceforge.net/hackndev/?rev=1003&view=rev Author: marex_z71 Date: 2007-05-27 14:25:54 -0700 (Sun, 27 May 2007) Log Message: ----------- l4p: minor fixes for battery driver ... Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-05-27 21:08:12 UTC (rev 1002) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-05-27 21:25:54 UTC (rev 1003) @@ -258,7 +258,7 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_register(&palmt5_battery)) { + if(battery_register(NULL, &palmt5_battery)) { printk(KERN_ERR "palmt5_ac97_probe: could not register battery class\n"); } else { Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-05-27 21:08:12 UTC (rev 1002) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-05-27 21:25:54 UTC (rev 1003) @@ -263,7 +263,7 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_register(&palmtx_battery)) { + if(battery_register(NULL, &palmtx_battery)) { printk(KERN_ERR "palmtx_ac97_probe: could not register battery class\n"); } else { Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-05-27 21:08:12 UTC (rev 1002) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-05-27 21:25:54 UTC (rev 1003) @@ -263,7 +263,7 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_register(&palmz72_battery)) { + if(battery_register(NULL, &palmz72_battery)) { printk(KERN_ERR "palmz72_ac97_probe: could not register battery class\n"); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-06-24 18:01:21
|
Revision: 1070 http://svn.sourceforge.net/hackndev/?rev=1070&view=rev Author: marex_z71 Date: 2007-06-24 11:01:19 -0700 (Sun, 24 Jun 2007) Log Message: ----------- PalmLD, PalmTX, PalmT5, PalmZ72: fix battery driver once more Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-06-24 13:47:32 UTC (rev 1069) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-06-24 18:01:19 UTC (rev 1070) @@ -16,7 +16,7 @@ #include <linux/input.h> #include <linux/device.h> #include <linux/workqueue.h> -#include <linux/battery.h> +#include <linux/power_supply.h> #include <linux/apm-emulation.h> #include <linux/wm97xx.h> @@ -51,13 +51,13 @@ static void (*apm_get_power_status_orig)(struct apm_power_info *info); #endif -int palmld_battery_min_voltage(struct battery *b) +int palmld_battery_min_voltage(struct power_supply *b) { return PALMLD_BAT_MIN_VOLTAGE; } -int palmld_battery_max_voltage(struct battery *b) +int palmld_battery_max_voltage(struct power_supply *b) { return PALMLD_BAT_MAX_VOLTAGE; /* mV */ } @@ -67,7 +67,7 @@ V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV] */ -int palmld_battery_get_voltage(struct battery *b) +int palmld_battery_get_voltage(struct power_supply *b) { if (bat.battery_registered){ bat.previous_voltage = bat.current_voltage; @@ -81,7 +81,7 @@ } } -int palmld_battery_get_capacity(struct battery *b) +int palmld_battery_get_capacity(struct power_supply *b) { if (bat.battery_registered){ return (((palmld_battery_get_voltage(b)-palmld_battery_min_voltage(b)) @@ -93,66 +93,65 @@ } } -int palmld_battery_get_status(struct battery *b) +int palmld_battery_get_status(struct power_supply *b) { int ac_connected = GET_PALMLD_GPIO(POWER_DETECT); int usb_connected = !GET_PALMLD_GPIO(USB_DETECT); - if (bat.current_voltage <= 0) - return BATTERY_STATUS_UNKNOWN; - - if (ac_connected || usb_connected){ - if ( ( bat.current_voltage > bat.previous_voltage ) || (bat.current_voltage <= PALMLD_BAT_MAX_VOLTAGE) ) - return BATTERY_STATUS_CHARGING; - return BATTERY_STATUS_NOT_CHARGING; - } + if ( (ac_connected || usb_connected) && + ( ( bat.current_voltage > bat.previous_voltage ) || + (bat.current_voltage <= PALMLD_BAT_MAX_VOLTAGE) ) ) + return POWER_SUPPLY_STATUS_CHARGING; else - return BATTERY_STATUS_DISCHARGING; + return POWER_SUPPLY_STATUS_NOT_CHARGING; } int tmp; -static void *palmld_battery_get_property(struct battery *b, enum battery_property bp) +static int palmld_battery_get_property(struct power_supply *b, + enum power_supply_property psp, + union power_supply_propval *val) { - switch (bp) { - case BATTERY_PROP_VOLTAGE_MAX_DESIGN: - tmp = palmld_battery_max_voltage(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_MIN_DESIGN: - tmp = palmld_battery_min_voltage(b); - return &tmp; - case BATTERY_PROP_CHARGE_FULL_DESIGN: - tmp = 100; - return &tmp; - case BATTERY_PROP_CHARGE_EMPTY_DESIGN: - tmp = 0; - return &tmp; - case BATTERY_PROP_CHARGE_NOW: - tmp = palmld_battery_get_capacity(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_NOW: - tmp = palmld_battery_get_voltage(b); - return &tmp; - case BATTERY_PROP_STATUS: - tmp = palmld_battery_get_status(b); - return &tmp; - default: break; + switch (psp) { + case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: + val->intval = palmld_battery_max_voltage(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: + val->intval = palmld_battery_min_voltage(b); + break; + case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: + val->intval = 100; + break; + case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN: + val->intval = 0; + break; + case POWER_SUPPLY_PROP_CHARGE_NOW: + val->intval = palmld_battery_get_capacity(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_NOW: + val->intval = palmld_battery_get_voltage(b); + break; + case POWER_SUPPLY_PROP_STATUS: + val->intval = palmld_battery_get_status(b); + break; + default: + break; }; - return NULL; + return 0; } -static enum battery_property palmld_battery_props[] = { - BATTERY_PROP_VOLTAGE_MAX_DESIGN, - BATTERY_PROP_VOLTAGE_MIN_DESIGN, - BATTERY_PROP_CHARGE_FULL_DESIGN, - BATTERY_PROP_CHARGE_EMPTY_DESIGN, - BATTERY_PROP_CHARGE_NOW, - BATTERY_PROP_VOLTAGE_NOW, - BATTERY_PROP_STATUS, +static enum power_supply_property palmld_battery_props[] = { + POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, + POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, + POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, + POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN, + POWER_SUPPLY_PROP_CHARGE_NOW, + POWER_SUPPLY_PROP_VOLTAGE_NOW, + POWER_SUPPLY_PROP_STATUS, }; -struct battery palmld_battery = { +struct power_supply palmld_battery = { .name = "palmld_battery", .get_property = palmld_battery_get_property, .properties = palmld_battery_props, @@ -248,14 +247,15 @@ /* register battery to APM layer */ bat.battery_registered = 0; - - if(battery_register(NULL, &palmld_battery)) { +#ifdef CONFIG_POWER_SUPPLY + if(power_supply_register(NULL, &palmld_battery)) { printk(KERN_ERR "palmld_ac97_probe: could not register battery class\n"); } else { bat.battery_registered = 1; printk("Battery registered\n"); } +#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmld_apm_get_power_status; @@ -272,7 +272,9 @@ static void __exit palmld_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ - battery_unregister(&palmld_battery); +#ifdef CONFIG_POWER_SUPPLY + power_supply_unregister(&palmld_battery); +#endif driver_unregister(&palmld_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-06-24 13:47:32 UTC (rev 1069) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-06-24 18:01:19 UTC (rev 1070) @@ -15,7 +15,7 @@ #include <linux/input.h> #include <linux/device.h> #include <linux/workqueue.h> -#include <linux/battery.h> +#include <linux/power_supply.h> #include <linux/apm-emulation.h> #include <linux/wm97xx.h> @@ -50,13 +50,13 @@ static void (*apm_get_power_status_orig)(struct apm_power_info *info); #endif -int palmt5_battery_min_voltage(struct battery *b) +int palmt5_battery_min_voltage(struct power_supply *b) { return PALMT5_BAT_MIN_VOLTAGE; } -int palmt5_battery_max_voltage(struct battery *b) +int palmt5_battery_max_voltage(struct power_supply *b) { return PALMT5_BAT_MAX_VOLTAGE; /* mV */ } @@ -66,7 +66,7 @@ V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV] */ -int palmt5_battery_get_voltage(struct battery *b) +int palmt5_battery_get_voltage(struct power_supply *b) { if (bat.battery_registered){ bat.previous_voltage = bat.current_voltage; @@ -80,7 +80,7 @@ } } -int palmt5_battery_get_capacity(struct battery *b) +int palmt5_battery_get_capacity(struct power_supply *b) { if (bat.battery_registered){ return (((palmt5_battery_get_voltage(b)-palmt5_battery_min_voltage(b)) @@ -92,66 +92,65 @@ } } -int palmt5_battery_get_status(struct battery *b) +int palmt5_battery_get_status(struct power_supply *b) { - int ac_connected = GET_GPIO(GPIO_NR_PALMT5_POWER_DETECT); - int usb_connected = !GET_GPIO(GPIO_NR_PALMT5_USB_DETECT); - - if (bat.current_voltage <= 0) - return BATTERY_STATUS_UNKNOWN; - - if (ac_connected || usb_connected){ - if ( ( bat.current_voltage > bat.previous_voltage ) || (bat.current_voltage <= PALMT5_BAT_MAX_VOLTAGE) ) - return BATTERY_STATUS_CHARGING; - return BATTERY_STATUS_NOT_CHARGING; - } - else - return BATTERY_STATUS_DISCHARGING; + int ac_connected = GET_PALMT5_GPIO(POWER_DETECT); + int usb_connected = !GET_PALMT5_GPIO(USB_DETECT); + + if ( (ac_connected || usb_connected) && + ( ( bat.current_voltage > bat.previous_voltage ) || + (bat.current_voltage <= PALMT5_BAT_MAX_VOLTAGE) ) ) + return POWER_SUPPLY_STATUS_CHARGING; + else + return POWER_SUPPLY_STATUS_NOT_CHARGING; } int tmp; -static void *palmt5_battery_get_property(struct battery *b, enum battery_property bp) +static int palmt5_battery_get_property(struct power_supply *b, + enum power_supply_property psp, + union power_supply_propval *val) { - switch (bp) { - case BATTERY_PROP_VOLTAGE_MAX_DESIGN: - tmp = palmt5_battery_max_voltage(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_MIN_DESIGN: - tmp = palmt5_battery_min_voltage(b); - return &tmp; - case BATTERY_PROP_CHARGE_FULL_DESIGN: - tmp = 100; - return &tmp; - case BATTERY_PROP_CHARGE_EMPTY_DESIGN: - tmp = 0; - return &tmp; - case BATTERY_PROP_CHARGE_NOW: - tmp = palmt5_battery_get_capacity(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_NOW: - tmp = palmt5_battery_get_voltage(b); - return &tmp; - case BATTERY_PROP_STATUS: - tmp = palmt5_battery_get_status(b); - return &tmp; - default: break; + switch (psp) { + case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: + val->intval = palmt5_battery_max_voltage(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: + val->intval = palmt5_battery_min_voltage(b); + break; + case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: + val->intval = 100; + break; + case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN: + val->intval = 0; + break; + case POWER_SUPPLY_PROP_CHARGE_NOW: + val->intval = palmt5_battery_get_capacity(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_NOW: + val->intval = palmt5_battery_get_voltage(b); + break; + case POWER_SUPPLY_PROP_STATUS: + val->intval = palmt5_battery_get_status(b); + break; + default: + break; }; - return NULL; + return 0; } -static enum battery_property palmt5_battery_props[] = { - BATTERY_PROP_VOLTAGE_MAX_DESIGN, - BATTERY_PROP_VOLTAGE_MIN_DESIGN, - BATTERY_PROP_CHARGE_FULL_DESIGN, - BATTERY_PROP_CHARGE_EMPTY_DESIGN, - BATTERY_PROP_CHARGE_NOW, - BATTERY_PROP_VOLTAGE_NOW, - BATTERY_PROP_STATUS, +static enum power_supply_property palmt5_battery_props[] = { + POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, + POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, + POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, + POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN, + POWER_SUPPLY_PROP_CHARGE_NOW, + POWER_SUPPLY_PROP_VOLTAGE_NOW, + POWER_SUPPLY_PROP_STATUS, }; -struct battery palmt5_battery = { +struct power_supply palmt5_battery = { .name = "palmt5_battery", .get_property = palmt5_battery_get_property, .properties = palmt5_battery_props, @@ -258,13 +257,15 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_register(NULL, &palmt5_battery)) { +#ifdef CONFIG_POWER_SUPPLY + if(power_supply_register(NULL, &palmt5_battery)) { printk(KERN_ERR "palmt5_ac97_probe: could not register battery class\n"); } else { bat.battery_registered = 1; printk("Battery registered\n"); } +#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmt5_apm_get_power_status; @@ -281,7 +282,9 @@ static void __exit palmt5_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ - battery_unregister(&palmt5_battery); +#ifdef CONFIG_POWER_SUPPLY + power_supply_unregister(&palmt5_battery); +#endif driver_unregister(&palmt5_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-06-24 13:47:32 UTC (rev 1069) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-06-24 18:01:19 UTC (rev 1070) @@ -20,7 +20,7 @@ #include <linux/input.h> #include <linux/device.h> #include <linux/workqueue.h> -#include <linux/battery.h> +#include <linux/power_supply.h> #include <linux/apm-emulation.h> #include <linux/wm97xx.h> @@ -55,13 +55,13 @@ static void (*apm_get_power_status_orig)(struct apm_power_info *info); #endif -int palmtx_battery_min_voltage(struct battery *b) +int palmtx_battery_min_voltage(struct power_supply *b) { return PALMTX_BAT_MIN_VOLTAGE; } -int palmtx_battery_max_voltage(struct battery *b) +int palmtx_battery_max_voltage(struct power_supply *b) { return PALMTX_BAT_MAX_VOLTAGE; /* mV */ } @@ -71,7 +71,7 @@ V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV] */ -int palmtx_battery_get_voltage(struct battery *b) +int palmtx_battery_get_voltage(struct power_supply *b) { if (bat.battery_registered){ bat.previous_voltage = bat.current_voltage; @@ -85,7 +85,7 @@ } } -int palmtx_battery_get_capacity(struct battery *b) +int palmtx_battery_get_capacity(struct power_supply *b) { if (bat.battery_registered){ return (((palmtx_battery_get_voltage(b)-palmtx_battery_min_voltage(b)) @@ -97,66 +97,65 @@ } } -int palmtx_battery_get_status(struct battery *b) +int palmtx_battery_get_status(struct power_supply *b) { - int ac_connected = GET_GPIO(GPIO_NR_PALMTX_POWER_DETECT); - int usb_connected = !GET_GPIO(GPIO_NR_PALMTX_USB_DETECT); - - if (bat.current_voltage <= 0) - return BATTERY_STATUS_UNKNOWN; - - if (ac_connected || usb_connected){ - if ( ( bat.current_voltage > bat.previous_voltage ) || (bat.current_voltage <= PALMTX_BAT_MAX_VOLTAGE) ) - return BATTERY_STATUS_CHARGING; - return BATTERY_STATUS_NOT_CHARGING; - } - else - return BATTERY_STATUS_DISCHARGING; + int ac_connected = GET_PALMTX_GPIO(POWER_DETECT); + int usb_connected = !GET_PALMTX_GPIO(USB_DETECT); + + if ( (ac_connected || usb_connected) && + ( ( bat.current_voltage > bat.previous_voltage ) || + (bat.current_voltage <= PALMTX_BAT_MAX_VOLTAGE) ) ) + return POWER_SUPPLY_STATUS_CHARGING; + else + return POWER_SUPPLY_STATUS_NOT_CHARGING; } int tmp; -static void *palmtx_battery_get_property(struct battery *b, enum battery_property bp) +static int palmtx_battery_get_property(struct power_supply *b, + enum power_supply_property psp, + union power_supply_propval *val) { - switch (bp) { - case BATTERY_PROP_VOLTAGE_MAX_DESIGN: - tmp = palmtx_battery_max_voltage(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_MIN_DESIGN: - tmp = palmtx_battery_min_voltage(b); - return &tmp; - case BATTERY_PROP_CHARGE_FULL_DESIGN: - tmp = 100; - return &tmp; - case BATTERY_PROP_CHARGE_EMPTY_DESIGN: - tmp = 0; - return &tmp; - case BATTERY_PROP_CHARGE_NOW: - tmp = palmtx_battery_get_capacity(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_NOW: - tmp = palmtx_battery_get_voltage(b); - return &tmp; - case BATTERY_PROP_STATUS: - tmp = palmtx_battery_get_status(b); - return &tmp; - default: break; + switch (psp) { + case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: + val->intval = palmtx_battery_max_voltage(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: + val->intval = palmtx_battery_min_voltage(b); + break; + case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: + val->intval = 100; + break; + case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN: + val->intval = 0; + break; + case POWER_SUPPLY_PROP_CHARGE_NOW: + val->intval = palmtx_battery_get_capacity(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_NOW: + val->intval = palmtx_battery_get_voltage(b); + break; + case POWER_SUPPLY_PROP_STATUS: + val->intval = palmtx_battery_get_status(b); + break; + default: + break; }; - return NULL; + return 0; } -static enum battery_property palmtx_battery_props[] = { - BATTERY_PROP_VOLTAGE_MAX_DESIGN, - BATTERY_PROP_VOLTAGE_MIN_DESIGN, - BATTERY_PROP_CHARGE_FULL_DESIGN, - BATTERY_PROP_CHARGE_EMPTY_DESIGN, - BATTERY_PROP_CHARGE_NOW, - BATTERY_PROP_VOLTAGE_NOW, - BATTERY_PROP_STATUS, +static enum power_supply_property palmtx_battery_props[] = { + POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, + POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, + POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, + POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN, + POWER_SUPPLY_PROP_CHARGE_NOW, + POWER_SUPPLY_PROP_VOLTAGE_NOW, + POWER_SUPPLY_PROP_STATUS, }; -struct battery palmtx_battery = { +struct power_supply palmtx_battery = { .name = "palmtx_battery", .get_property = palmtx_battery_get_property, .properties = palmtx_battery_props, @@ -263,13 +262,15 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_register(NULL, &palmtx_battery)) { +#fidef CONFIG_POWER_SUPPLY + if(power_supply_register(NULL, &palmtx_battery)) { printk(KERN_ERR "palmtx_ac97_probe: could not register battery class\n"); } else { bat.battery_registered = 1; printk("Battery registered\n"); } +#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmtx_apm_get_power_status; @@ -286,7 +287,9 @@ static void __exit palmtx_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ - battery_unregister(&palmtx_battery); +#fidef CONFIG_POWER_SUPPLY + power_supply_unregister(&palmtx_battery); +#endif driver_unregister(&palmtx_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-06-24 13:47:32 UTC (rev 1069) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-06-24 18:01:19 UTC (rev 1070) @@ -16,7 +16,7 @@ #include <linux/input.h> #include <linux/device.h> #include <linux/workqueue.h> -#include <linux/battery.h> +#include <linux/power_supply.h> #include <linux/apm-emulation.h> #include <linux/wm97xx.h> @@ -55,13 +55,13 @@ static void (*apm_get_power_status_orig)(struct apm_power_info *info); #endif -int palmz72_battery_min_voltage(struct battery *b) +int palmz72_battery_min_voltage(struct power_supply *b) { return PALMZ72_BAT_MIN_VOLTAGE; } -int palmz72_battery_max_voltage(struct battery *b) +int palmz72_battery_max_voltage(struct power_supply *b) { return PALMZ72_BAT_MAX_VOLTAGE; /* mV */ } @@ -71,7 +71,7 @@ V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV] */ -int palmz72_battery_get_voltage(struct battery *b) +int palmz72_battery_get_voltage(struct power_supply *b) { if (bat.battery_registered){ bat.previous_voltage = bat.current_voltage; @@ -85,7 +85,7 @@ } } -int palmz72_battery_get_capacity(struct battery *b) +int palmz72_battery_get_capacity(struct power_supply *b) { if (bat.battery_registered){ return (((palmz72_battery_get_voltage(b)-palmz72_battery_min_voltage(b)) @@ -97,66 +97,65 @@ } } -int palmz72_battery_get_status(struct battery *b) +int palmz72_battery_get_status(struct power_supply *b) { - int ac_connected = GET_GPIO(GPIO_NR_PALMZ72_POWER_DETECT); - int usb_connected = !GET_GPIO(GPIO_NR_PALMZ72_USB_DETECT); - - if (bat.current_voltage <= 0) - return BATTERY_STATUS_UNKNOWN; - - if (ac_connected || usb_connected){ - if ( ( bat.current_voltage > bat.previous_voltage ) || (bat.current_voltage <= PALMZ72_BAT_MAX_VOLTAGE) ) - return BATTERY_STATUS_CHARGING; - return BATTERY_STATUS_NOT_CHARGING; - } - else - return BATTERY_STATUS_DISCHARGING; + int ac_connected = GET_PALMZ72_GPIO(POWER_DETECT); + int usb_connected = !GET_PALMZ72_GPIO(USB_DETECT); + + if ( (ac_connected || usb_connected) && + ( ( bat.current_voltage > bat.previous_voltage ) || + (bat.current_voltage <= PALMZ72_BAT_MAX_VOLTAGE) ) ) + return POWER_SUPPLY_STATUS_CHARGING; + else + return POWER_SUPPLY_STATUS_NOT_CHARGING; } int tmp; -static void *palmz72_battery_get_property(struct battery *b, enum battery_property bp) +static int palmz72_battery_get_property(struct power_supply *b, + enum power_supply_property psp, + union power_supply_propval *val) { - switch (bp) { - case BATTERY_PROP_VOLTAGE_MAX_DESIGN: - tmp = palmz72_battery_max_voltage(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_MIN_DESIGN: - tmp = palmz72_battery_min_voltage(b); - return &tmp; - case BATTERY_PROP_CHARGE_FULL_DESIGN: - tmp = 100; - return &tmp; - case BATTERY_PROP_CHARGE_EMPTY_DESIGN: - tmp = 0; - return &tmp; - case BATTERY_PROP_CHARGE_NOW: - tmp = palmz72_battery_get_capacity(b); - return &tmp; - case BATTERY_PROP_VOLTAGE_NOW: - tmp = palmz72_battery_get_voltage(b); - return &tmp; - case BATTERY_PROP_STATUS: - tmp = palmz72_battery_get_status(b); - return &tmp; - default: break; + switch (psp) { + case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: + val->intval = palmz72_battery_max_voltage(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: + val->intval = palmz72_battery_min_voltage(b); + break; + case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: + val->intval = 100; + break; + case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN: + val->intval = 0; + break; + case POWER_SUPPLY_PROP_CHARGE_NOW: + val->intval = palmz72_battery_get_capacity(b); + break; + case POWER_SUPPLY_PROP_VOLTAGE_NOW: + val->intval = palmz72_battery_get_voltage(b); + break; + case POWER_SUPPLY_PROP_STATUS: + val->intval = palmz72_battery_get_status(b); + break; + default: + break; }; - return NULL; + return 0; } -static enum battery_property palmz72_battery_props[] = { - BATTERY_PROP_VOLTAGE_MAX_DESIGN, - BATTERY_PROP_VOLTAGE_MIN_DESIGN, - BATTERY_PROP_CHARGE_FULL_DESIGN, - BATTERY_PROP_CHARGE_EMPTY_DESIGN, - BATTERY_PROP_CHARGE_NOW, - BATTERY_PROP_VOLTAGE_NOW, - BATTERY_PROP_STATUS, +static enum power_supply_property palmz72_battery_props[] = { + POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, + POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, + POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, + POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN, + POWER_SUPPLY_PROP_CHARGE_NOW, + POWER_SUPPLY_PROP_VOLTAGE_NOW, + POWER_SUPPLY_PROP_STATUS, }; -struct battery palmz72_battery = { +struct power_supply palmz72_battery = { .name = "palmz72_battery", .get_property = palmz72_battery_get_property, .properties = palmz72_battery_props, @@ -263,13 +262,15 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_register(NULL, &palmz72_battery)) { +#ifdef CONFIG_POWER_SUPPLY + if(power_supply_register(NULL, &palmz72_battery)) { printk(KERN_ERR "palmz72_ac97_probe: could not register battery class\n"); } else { bat.battery_registered = 1; printk("Battery registered\n"); } +#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmz72_apm_get_power_status; @@ -286,7 +287,9 @@ static void __exit palmz72_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ - battery_unregister(&palmz72_battery); +#ifdef CONFIG_POWER_SUPPLY + power_supply_unregister(&palmz72_battery); +#endif driver_unregister(&palmz72_wm97xx_driver); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-07-06 08:56:47
|
Revision: 1108 http://svn.sourceforge.net/hackndev/?rev=1108&view=rev Author: marex_z71 Date: 2007-07-06 01:56:42 -0700 (Fri, 06 Jul 2007) Log Message: ----------- PalmLD, PalmTX, PalmZ72, PalmT5: drop some useless ifdefs from battery driver Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-07-05 18:20:31 UTC (rev 1107) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-07-06 08:56:42 UTC (rev 1108) @@ -247,7 +247,6 @@ /* register battery to APM layer */ bat.battery_registered = 0; -#ifdef CONFIG_POWER_SUPPLY if(power_supply_register(NULL, &palmld_battery)) { printk(KERN_ERR "palmld_ac97_probe: could not register battery class\n"); } @@ -255,7 +254,6 @@ bat.battery_registered = 1; printk("Battery registered\n"); } -#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmld_apm_get_power_status; @@ -272,9 +270,7 @@ static void __exit palmld_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ -#ifdef CONFIG_POWER_SUPPLY power_supply_unregister(&palmld_battery); -#endif driver_unregister(&palmld_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-07-05 18:20:31 UTC (rev 1107) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-07-06 08:56:42 UTC (rev 1108) @@ -257,7 +257,6 @@ /* register battery to APM layer */ bat.battery_registered = 0; -#ifdef CONFIG_POWER_SUPPLY if(power_supply_register(NULL, &palmt5_battery)) { printk(KERN_ERR "palmt5_ac97_probe: could not register battery class\n"); } @@ -265,7 +264,6 @@ bat.battery_registered = 1; printk("Battery registered\n"); } -#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmt5_apm_get_power_status; @@ -282,9 +280,7 @@ static void __exit palmt5_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ -#ifdef CONFIG_POWER_SUPPLY power_supply_unregister(&palmt5_battery); -#endif driver_unregister(&palmt5_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-07-05 18:20:31 UTC (rev 1107) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-07-06 08:56:42 UTC (rev 1108) @@ -262,7 +262,6 @@ /* register battery to APM layer */ bat.battery_registered = 0; -#ifdef CONFIG_POWER_SUPPLY if(power_supply_register(NULL, &palmtx_battery)) { printk(KERN_ERR "palmtx_ac97_probe: could not register battery class\n"); } @@ -270,7 +269,6 @@ bat.battery_registered = 1; printk("Battery registered\n"); } -#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmtx_apm_get_power_status; @@ -287,9 +285,7 @@ static void __exit palmtx_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ -#ifdef CONFIG_POWER_SUPPLY power_supply_unregister(&palmtx_battery); -#endif driver_unregister(&palmtx_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-07-05 18:20:31 UTC (rev 1107) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-07-06 08:56:42 UTC (rev 1108) @@ -262,7 +262,6 @@ /* register battery to APM layer */ bat.battery_registered = 0; -#ifdef CONFIG_POWER_SUPPLY if(power_supply_register(NULL, &palmz72_battery)) { printk(KERN_ERR "palmz72_ac97_probe: could not register battery class\n"); } @@ -270,7 +269,6 @@ bat.battery_registered = 1; printk("Battery registered\n"); } -#endif #if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmz72_apm_get_power_status; @@ -287,9 +285,7 @@ static void __exit palmz72_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ -#ifdef CONFIG_POWER_SUPPLY power_supply_unregister(&palmz72_battery); -#endif driver_unregister(&palmz72_wm97xx_driver); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-08-24 22:50:05
|
Revision: 1265 http://hackndev.svn.sourceforge.net/hackndev/?rev=1265&view=rev Author: marex_z71 Date: 2007-08-24 15:49:55 -0700 (Fri, 24 Aug 2007) Log Message: ----------- HnD: kernel cleanup - time hack removal (thanks kEdAR) Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/pm.c linux4palm/linux/trunk/arch/arm/mach-pxa/time.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/pm.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/pm.c 2007-08-23 22:32:31 UTC (rev 1264) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/pm.c 2007-08-24 22:49:55 UTC (rev 1265) @@ -80,6 +80,7 @@ { unsigned long sleep_save[SLEEP_SAVE_SIZE]; unsigned long checksum = 0; + struct timespec delta, rtc; int i; extern void pxa_cpu_pm_enter(suspend_state_t state); extern void pxa_cpu_resume(void); @@ -90,6 +91,11 @@ iwmmxt_task_disable(NULL); #endif + /* preserve current time */ + rtc.tv_sec = RCNR; + rtc.tv_nsec = 0; + save_time_delta(&delta, &rtc); + SAVE(GPLR0); SAVE(GPLR1); SAVE(GPLR2); SAVE(GPDR0); SAVE(GPDR1); SAVE(GPDR2); SAVE(GRER0); SAVE(GRER1); SAVE(GRER2); @@ -193,6 +199,10 @@ RESTORE(PSTR); + /* restore current time */ + rtc.tv_sec = RCNR; + restore_time_delta(&delta, &rtc); + #ifdef DEBUG printk(KERN_DEBUG "*** made it back from resume\n"); #endif Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/time.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/time.c 2007-08-23 22:32:31 UTC (rev 1264) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/time.c 2007-08-24 22:49:55 UTC (rev 1265) @@ -29,6 +29,7 @@ #include <asm/mach/time.h> #include <asm/arch/pxa-regs.h> + static inline unsigned long pxa_get_rtc_time(void) { return RCNR; @@ -180,7 +181,6 @@ #ifdef CONFIG_PM static unsigned long osmr[4], oier; -static struct timespec delta, rtc; static void pxa_timer_suspend(void) { @@ -189,19 +189,10 @@ osmr[2] = OSMR2; osmr[3] = OSMR3; oier = OIER; - - /* preserve current time */ - rtc.tv_sec = RCNR; - rtc.tv_nsec = 0; - save_time_delta(&delta, &rtc); } static void pxa_timer_resume(void) { - /* restore current time */ - rtc.tv_sec = RCNR; - restore_time_delta(&delta, &rtc); - OSMR0 = osmr[0]; OSMR1 = osmr[1]; OSMR2 = osmr[2]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-08-29 15:42:53
|
Revision: 1287 http://hackndev.svn.sourceforge.net/hackndev/?rev=1287&view=rev Author: marex_z71 Date: 2007-08-29 08:42:49 -0700 (Wed, 29 Aug 2007) Log Message: ----------- PalmTX, PalmTT5, PalmLD: fix broken dependency (thanks Farcaller) Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig 2007-08-29 09:55:32 UTC (rev 1286) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig 2007-08-29 15:42:49 UTC (rev 1287) @@ -21,6 +21,7 @@ config PALMLD_BATTERY tristate "Palm LifeDrive Battery support" select TOUCHSCREEN_WM97XX + select POWER_SUPPLY depends on MACH_XSCALE_PALMLD default m help Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig 2007-08-29 09:55:32 UTC (rev 1286) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt5/Kconfig 2007-08-29 15:42:49 UTC (rev 1287) @@ -7,6 +7,7 @@ config PALMTT5_BATTERY tristate "Palm Tungsten|T5 Battery support" select TOUCHSCREEN_WM97XX + select POWER_SUPPLY depends on MACH_XSCALE_PALMTT5 default m help Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig 2007-08-29 09:55:32 UTC (rev 1286) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig 2007-08-29 15:42:49 UTC (rev 1287) @@ -14,6 +14,7 @@ config PALMTX_BATTERY tristate "Palm TX Battery support" select TOUCHSCREEN_WM97XX + select POWER_SUPPLY depends on MACH_XSCALE_PALMTX default m help This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-01-30 12:54:30
|
Revision: 785 http://svn.sourceforge.net/hackndev/?rev=785&view=rev Author: happy-slapin Date: 2007-01-30 04:54:28 -0800 (Tue, 30 Jan 2007) Log Message: ----------- z72: Initial attempt to follow corgi steps with PM driver z72: Added Zire 72 to line with MEM = STANDBY. Btw is this line really working for other machines? Seems not... So I fixed hanging issue with GPE. Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-01-29 19:42:21 UTC (rev 784) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-01-30 12:54:28 UTC (rev 785) @@ -1,8 +1,8 @@ /************************************************************************ * PalmOne Zire72 suspend/resume support * * * - * Authos: Jan Herman <2h...@se...> * - * Sergey Lapin <sla...@gm...> * + * Authors: Jan Herman <2h...@se...> * + * Sergey Lapin <sla...@gm...> * * * * 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 * @@ -18,17 +18,21 @@ #include <asm/mach-types.h> #include <asm/hardware.h> +#include <asm/arch/pm.h> #include <asm/arch/pxa-pm_ll.h> #include <asm/arch/hardware.h> #include <asm/arch/pxa-regs.h> #include <asm/arch/palmz72-gpio.h> -typedef struct +struct pm_save_data { int brightness; -} pm_save_data; + u32 jiffies; +}; +static struct pm_save_data pm_save_data; + #ifdef CONFIG_PM static int palmz72_suspend(struct device *dev, pm_message_t state) { @@ -42,13 +46,19 @@ /* Enabled Deep-Sleep mode ?? */ PCFR |= PCFR_DS; + /* Low power mode */ + PCFR |= PCFR_OPDE; + /* Here are all of special for suspend PalmOne Zire 72 */ //printk("Palmz72_suspend: suspending..."); + SET_PALMZ72_GPIO(LED, 0); + /* Turn off LCD power */ SET_PALMZ72_GPIO(LCD_POWER,0); /* Turn off USB power */ SET_PALMZ72_GPIO(USB_POWER,0); + /* disable GPIO reset - DO NOT REMOVE! */ PCFR &= PCFR_GPR_EN; @@ -59,7 +69,6 @@ static int palmz72_resume(struct device *dev) { - /* Disabled Deep-Sleep mode ?? */ PCFR &= PCFR_DS; @@ -73,6 +82,8 @@ SET_PALMZ72_GPIO(LCD_POWER,1); /* Turn on USB power */ SET_PALMZ72_GPIO(USB_POWER,1); + + SET_PALMZ72_GPIO(LED, 1); return 0; } @@ -97,8 +108,61 @@ .resume = palmz72_pxa_ll_pm_resume, }; +static int (*pxa_pm_enter)(suspend_state_t state); + +static void zire72_goto_sleep(suspend_state_t state) +{ + pxa_pm_enter(state); +} + +static int zire72_enter_suspend(suspend_state_t state) +{ + /* Here we should implement wakeup conditions + If we have none, just return 1 to continue + sleeping */ + if(PKSR & 0x00001) { + printk(KERN_NOTICE "Returning from sleep due to GPIO13\n"); + return 0; + } + if(jiffies < ( pm_save_data.jiffies + msecs_to_jiffies(5000))) { + if(!(PKSR & 0xe0001)) + pm_save_data.jiffies = jiffies; + zire72_goto_sleep(state); + return 1; + } + if(PKSR & 0xe0001) { + printk(KERN_NOTICE "Returning from sleep due to GPIOs 100-102 or 13\n"); + return 0; + } + return 1; +} + + +static int zire72_pxa_pm_enter(suspend_state_t state) +{ + pm_save_data.jiffies = jiffies; + zire72_goto_sleep(state); + + while (zire72_enter_suspend(state)) + {} + return 0; +} + + +static struct pm_ops zire72_pm_ops = { + .pm_disk_mode = PM_DISK_FIRMWARE, + .prepare = pxa_pm_prepare, + .enter = zire72_pxa_pm_enter, + .finish = pxa_pm_finish, +}; + +extern struct pm_ops pxa_pm_ops; + static int palmz72_pm_probe(struct device *dev) { + pm_save_data.jiffies = jiffies; + pxa_pm_enter = pxa_pm_ops.enter; + pm_set_ops(&zire72_pm_ops); printk(KERN_NOTICE "PalmOne Zire72 power management driver registered\n"); return 0; } @@ -118,6 +182,7 @@ static void __exit palmz72_pm_exit(void) { + pxa_pm_ops.enter = pxa_pm_enter; driver_unregister(&palmz72_pm_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c 2007-01-29 19:42:21 UTC (rev 784) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c 2007-01-30 12:54:28 UTC (rev 785) @@ -139,7 +139,7 @@ { extern void pxa_cpu_standby(void); extern void pxa_cpu_suspend(unsigned int); -#if defined(MACH_XSCALE_PALMLD) || defined(MACH_XSCALE_PALMTX) +#if defined(MACH_XSCALE_PALMLD) || defined(MACH_XSCALE_PALMTX) || defined(CONFIG_MACH_PALMZ72) /* For safety. suspend_mem puts the device in an unresetable state. * On TX one needs to desolder the battery to get out of it. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sle...@us...> - 2007-02-27 11:24:29
|
Revision: 881 http://svn.sourceforge.net/hackndev/?rev=881&view=rev Author: sleep_walker Date: 2007-02-27 03:24:05 -0800 (Tue, 27 Feb 2007) Log Message: ----------- l4p: gpioed for T|T3 in the same way as LD Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/gpioed.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile Added Paths: ----------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/gpioed.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/gpioed.c 2007-02-27 10:43:04 UTC (rev 880) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/gpioed.c 2007-02-27 11:24:05 UTC (rev 881) @@ -3,6 +3,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/proc_fs.h> +#include <linux/irq.h> #include <linux/interrupt.h> #include <asm/irq.h> @@ -96,7 +97,7 @@ static struct work_struct task; if (initialised == 0) { - INIT_WORK(&task, handle_gpio, dev_id); + INIT_WORK(&task, handle_gpio); initialised = 1; } else { PREPARE_WORK(&task, handle_gpio, dev_id); Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-02-27 10:43:04 UTC (rev 880) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-02-27 11:24:05 UTC (rev 881) @@ -21,3 +21,17 @@ depends on PALM_T3_TSC2101 help On-screen framebuffer keyboard + +config GPIOED + tristate "GPIOED" + depends on MACH_T3XSCALE + default n + help + Gpioed: only for debuging and testing! + +config GPIOEDNG + tristate "GPIOEDNG" + depends on MACH_T3XSCALE + default n + help + Gpioed-ng: only for debuging and testing! Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 10:43:04 UTC (rev 880) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 11:24:05 UTC (rev 881) @@ -5,3 +5,5 @@ obj-$(CONFIG_MACH_T3XSCALE) += palmt3.o obj-$(CONFIG_PALM_T3_BUTTONS) += palmt3_buttons.o obj-$(CONFIG_PALM_T3_BATTERY) += palmt3_battery.o +obj-$(CONFIG_GPIOED) += gpioed.o +obj-$(CONFIG_GPIOEDNG) += gpioed-ng.o Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c 2007-02-27 11:24:05 UTC (rev 881) @@ -0,0 +1,175 @@ +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/proc_fs.h> + +#include <linux/interrupt.h> +#include <asm/irq.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#include <asm/mach-types.h> +#include <asm/hardware.h> +#include <linux/sched.h> +#include <linux/workqueue.h> +#include <asm/arch/pxa-regs.h> +#include <asm/arch/irqs.h> +#include <asm/uaccess.h> + +#include <linux/debugfs.h> +#include <linux/seq_file.h> + +#define PROCFS_NAME "gpio" +#define DEBUGFS_NAME "gpio" + +static struct proc_dir_entry *proc_intf; +static struct dentry *debugfs_intf; + +#define PROCFS_MAX_SIZE 20 + +static char procfs_buffer[PROCFS_MAX_SIZE]; +static unsigned long procfs_buffer_size = 0; + +#define GPIO_TEST(reg, gp) (reg(gp) & GPIO_bit(gp)) +static int dfs_show(struct seq_file *s, void *_) +{ + int i,afn; + seq_printf(s, "GPIO lines status:\n"); + + for(i=0;i<121;i++) { + afn = (GAFR(i) & (0x3 << (((i) & 0xf)*2))) >> (((i) & 0xf)*2); + seq_printf(s, "%s%d: %s %s %s %s %lx\n", + i<10?"0":"", + i, + GPIO_TEST(GPLR, i)?"*":" ", + GPIO_TEST(GPDR, i)?"->":"<-", + GPIO_TEST(GRER, i)?"_/":" ", + GPIO_TEST(GFER, i)?"\\_":" ", + afn); + + } + + return 0; +} + +static int dfs_open(struct inode *inode, struct file *file) +{ + return single_open(file, dfs_show, inode->u.generic_ip); +} + +static struct file_operations debug_fops = { + .open = dfs_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static void gpio_set(int id, int on) +{ + do { + if (on) + GPSR(id) = GPIO_bit(id); + else + GPCR(id) = GPIO_bit(id); + } while (0); +} + +void set_afn(int gpio, int fn) +{ + int gafr; + gafr = GAFR(gpio) & ~(0x3 << (((gpio) & 0xf)*2)); + GAFR(gpio) = gafr | (fn << (((gpio) & 0xf)*2)); +} + +void handle_request() +{ + char *p = NULL; + unsigned long id = simple_strtoul(procfs_buffer+2, &p, 10); + switch(procfs_buffer[0]) { + case 'L': + gpio_set(id, 1); + printk(KERN_ERR "GPIOed: GPIO %lu set high\n", id); + break; + case 'l': + gpio_set(id, 0); + printk(KERN_ERR "GPIOed: GPIO %lu set low\n", id); + break; + case 'd': + GPDR(id) &= ~(GPIO_bit(id)); + break; + case 'D': + GPDR(id) |= GPIO_bit(id); + break; + case '0': + set_afn(id, 0); + break; + case '1': + set_afn(id, 1); + break; + case '2': + set_afn(id, 2); + break; + default: + printk(KERN_ERR "GPIOed: Unknown request\n"); + break; + } +} + + +int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data) +{ + procfs_buffer_size = count; + if (procfs_buffer_size > PROCFS_MAX_SIZE ) { + procfs_buffer_size = PROCFS_MAX_SIZE; + } + + /* write data to the buffer */ + if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) { + return -EFAULT; + } + + handle_request(); + + return procfs_buffer_size; +} + + +static int __init gpioed_init(void) +{ + proc_intf = create_proc_entry(PROCFS_NAME, 0644, NULL); + if (proc_intf == NULL) { + remove_proc_entry(PROCFS_NAME, &proc_root); + printk(KERN_ALERT "Error: Could not initialize /proc/%s\n", PROCFS_NAME); + return -ENOMEM; + } + + /*proc_intf->read_proc = procfile_read;*/ + proc_intf->write_proc = procfile_write; + proc_intf->owner = THIS_MODULE; + proc_intf->mode = S_IFREG | S_IRUGO; + proc_intf->uid = 0; + proc_intf->gid = 0; + proc_intf->size = 37; + + debugfs_intf = debugfs_create_file(DEBUGFS_NAME, S_IRUGO, NULL, NULL, &debug_fops); + + printk(KERN_INFO "/proc/%s created\n", PROCFS_NAME); + + return 0; +} + +static void __exit gpioed_exit(void) +{ + debugfs_remove(debugfs_intf); + remove_proc_entry(PROCFS_NAME, &proc_root); + printk(KERN_INFO "/proc/%s removed\n", PROCFS_NAME); +} + + +/*** Some more stuff ***/ +module_init(gpioed_init); +module_exit(gpioed_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Vladimir \"Farcaller\" Pouzanov <far...@gm...>"); +MODULE_DESCRIPTION("GPIO editor for PXA26x, second edition"); + Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c 2007-02-27 11:24:05 UTC (rev 881) @@ -0,0 +1,227 @@ +/*** Basic includes ***/ +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/proc_fs.h> +#include <linux/irq.h> + +#include <linux/interrupt.h> +#include <asm/irq.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#include <asm/mach-types.h> +#include <asm/hardware.h> +#include <linux/sched.h> +#include <linux/workqueue.h> +#include <asm/arch/pxa-regs.h> +#include <asm/arch/irqs.h> +#include <asm/uaccess.h> + +/*** GPIO macros ***/ +#define GET_PALMT3_GPIO(gpio) \ + (GPLR(GPIO_NR_PALMT3_ ## gpio) & GPIO_bit(GPIO_NR_PALMT3_ ## gpio)) + +#define SET_PALMT3_GPIO(gpio, setp) \ + do { \ + if (setp) \ + GPSR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ + else \ + GPCR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ + } while (0) + +#define SET_PALMT3_GPIO_N(gpio, setp) \ + do { \ + if (setp) \ + GPCR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ + else \ + GPSR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ + } while (0) + +#define GET_GPIO_REG(reg,gpio) (GP##reg(gpio) & GPIO_bit(gpio)) +#define GET_GPIO(gpio) GET_GPIO_REG(LR, gpio) + +/*** /proc interface ***/ +static struct proc_dir_entry *proc_intf; +#define procfs_name "gpioed" +#define PROCFS_MAX_SIZE 20 + +static char procfs_buffer[PROCFS_MAX_SIZE]; +static unsigned long procfs_buffer_size = 0; + +int procfile_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data) +{ + int ret; + + if (offset > 0) { + /* we have finished to read, return 0 */ + ret = 0; + } else { + /* fill the buffer, return the buffer size */ + ret = sprintf(buffer, "HelloWorld!\n"); + } + return ret; +} + +void handle_request(void); + +int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data) +{ + procfs_buffer_size = count; + if (procfs_buffer_size > PROCFS_MAX_SIZE ) { + procfs_buffer_size = PROCFS_MAX_SIZE; + } + + /* write data to the buffer */ + if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) { + return -EFAULT; + } + + handle_request(); + + return procfs_buffer_size; +} + +/*** IRQ (GPIO) handling ***/ +static struct workqueue_struct *my_workqueue; +#define MY_WORK_QUEUE_NAME "GPIOed" + +static void handle_gpio(void* irq) +{ + int gpn = (int)irq; + printk(KERN_ERR "*** GPIO *** %d *** is *** %s ***\n", gpn, GET_GPIO(gpn) ? "high" : "low "); +} + +irqreturn_t gpio_irq(int irq, void *dev_id, struct pt_regs *regs) +{ + static int initialised = 0; + static struct work_struct task; + + if (initialised == 0) { + INIT_WORK(&task, handle_gpio); + initialised = 1; + } else { + PREPARE_WORK(&task, handle_gpio); + } + + queue_work(my_workqueue, &task); + + return IRQ_HANDLED; +} + +/*** GPIO R/W ***/ +static int gpio_get(int id) +{ + return GET_GPIO(id); +} + +static void gpio_set(int id, int on) +{ + do { + if (on) + GPSR(id) = GPIO_bit(id); + else + GPCR(id) = GPIO_bit(id); + } while (0); +} + +static int gpio_watch(int x) +{ + int ret; + ret = request_irq (IRQ_GPIO(x), gpio_irq, SA_SAMPLE_RANDOM, "test_handler", (void*)x); + set_irq_type (IRQ_GPIO(x), IRQT_BOTHEDGE); + if(ret!=0) { + printk(KERN_ERR "GPIOed: failed to register for GPIO %d\n", x); + return 1; + } else { + printk(KERN_ERR "GPIOed: Registered GPIO %d\n", x); + return 0; + } +} + +/*** Request handler ***/ +void handle_request() +{ + char *p = NULL; + unsigned long base = 10; + unsigned long id; + + if((procfs_buffer[0] == 'P') || (procfs_buffer[0] == 'V')) + base = 16; + id = simple_strtoul(procfs_buffer+2, &p, base); + switch(procfs_buffer[0]) { + case 'r': + printk(KERN_ERR "GPIOed: GPIO %lu is %s\n", id, gpio_get(id)?"high":"low "); + break; + case 's': + gpio_watch(id); + break; + case 'h': + gpio_set(id, 1); + printk(KERN_ERR "GPIOed: GPIO %lu set high\n", id); + break; + case 'l': + gpio_set(id, 0); + printk(KERN_ERR "GPIOed: GPIO %lu set low\n", id); + break; + case 'd': + printk(KERN_ERR "GPIOed: GPIO %lu is %s\n", id, GET_GPIO_REG(DR,id)?"output":"input"); + break; + + case 'P': + printk(KERN_ERR "GPIOed: P-V for 0x%x is 0x%x\n", id, (unsigned int)phys_to_virt(id)); + break; + case 'V': + printk(KERN_ERR "GPIOed: V-P for 0x%x is 0x%x\n", id, (unsigned int)virt_to_phys(id)); + break; + case 'D': + base = *((unsigned int*)id); + printk(KERN_ERR "GPIOed: 0x%x = 0x%x\n", id, base); + break; + default: + printk(KERN_ERR "GPIOed: Unknown request\n"); + break; + } +} + +/*** init&exit ***/ +static int __init gpioed_init(void) +{ + my_workqueue = create_workqueue(MY_WORK_QUEUE_NAME); + + proc_intf = create_proc_entry(procfs_name, 0644, NULL); + if (proc_intf == NULL) { + remove_proc_entry(procfs_name, &proc_root); + printk(KERN_ALERT "Error: Could not initialize /proc/%s\n", + procfs_name); + return -ENOMEM; + } + + proc_intf->read_proc = procfile_read; + proc_intf->write_proc = procfile_write; + proc_intf->owner = THIS_MODULE; + proc_intf->mode = S_IFREG | S_IRUGO; + proc_intf->uid = 0; + proc_intf->gid = 0; + proc_intf->size = 37; + + printk(KERN_INFO "/proc/%s created\n", procfs_name); + + return 0; +} + +static void __exit gpioed_exit(void) +{ + destroy_workqueue(my_workqueue); + remove_proc_entry(procfs_name, &proc_root); + printk(KERN_INFO "/proc/%s removed\n", procfs_name); +} + + +/*** Some more stuff ***/ +module_init(gpioed_init); +module_exit(gpioed_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Vladimir \"Farcaller\" Pouzanov <far...@gm...>"); +MODULE_DESCRIPTION("GPIO editor for PXA26x"); + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-05-27 21:06:25
|
Revision: 1001 http://svn.sourceforge.net/hackndev/?rev=1001&view=rev Author: marex_z71 Date: 2007-05-27 14:05:55 -0700 (Sun, 27 May 2007) Log Message: ----------- l4p: fix battery driver on other models, needs to be revided though Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-05-27 17:44:20 UTC (rev 1000) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-05-27 21:05:55 UTC (rev 1001) @@ -16,8 +16,9 @@ #include <linux/device.h> #include <linux/workqueue.h> #include <linux/battery.h> +#include <linux/apm-emulation.h> +#include <linux/wm97xx.h> -#include <asm/apm.h> #include <asm/delay.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -25,16 +26,14 @@ #include <asm/arch/hardware.h> #include <asm/arch/pxa-regs.h> #include <asm/arch/irqs.h> +#include <asm/arch/palmt5-gpio.h> +#include <asm/arch/palmt5-init.h> #include <sound/driver.h> #include <sound/core.h> #include <sound/pcm.h> #include <sound/initval.h> -#include <linux/wm97xx.h> -#include <asm/arch/palmt5-gpio.h> -#include <asm/arch/palmt5-init.h> - struct palmt5_battery_dev { struct wm97xx * wm; @@ -46,7 +45,7 @@ struct palmt5_battery_dev bat; -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) /* original APM hook */ static void (*apm_get_power_status_orig)(struct apm_power_info *info); #endif @@ -81,6 +80,17 @@ } } +int palmt5_battery_get_capacity(struct battery *b) +{ + if (bat.battery_registered){ + return ((palmt5_battery_get_voltage(b)-palmt5_battery_min_voltage(b)) + /(palmt5_battery_max_voltage(b)-palmt5_battery_min_voltage(b))); + } + else{ + printk("palmt5_battery: cannot get capacity -> battery driver unregistered\n"); + return 0; + } +} int palmt5_battery_get_status(struct battery *b) { @@ -99,13 +109,53 @@ return BATTERY_STATUS_DISCHARGING; } +int tmp; + +static void *palmt5_battery_get_property(struct battery *b, enum battery_property bp) +{ + switch (bp) { + case BATTERY_PROP_VOLTAGE_MAX_DESIGN: + tmp = palmt5_battery_max_voltage(b); + return &tmp; + case BATTERY_PROP_VOLTAGE_MIN_DESIGN: + tmp = palmt5_battery_min_voltage(b); + return &tmp; + case BATTERY_PROP_CHARGE_FULL_DESIGN: + tmp = 100; + return &tmp; + case BATTERY_PROP_CHARGE_EMPTY_DESIGN: + tmp = 0; + return &tmp; + case BATTERY_PROP_CHARGE_NOW: + tmp = palmt5_battery_get_capacity(b); + return &tmp; + case BATTERY_PROP_VOLTAGE_NOW: + tmp = palmt5_battery_get_voltage(b); + return &tmp; + case BATTERY_PROP_STATUS: + tmp = palmt5_battery_get_status(b); + return &tmp; + default: break; + }; + + return NULL; +} + +static enum battery_property palmld_battery_props[] = { + BATTERY_PROP_VOLTAGE_MAX_DESIGN, + BATTERY_PROP_VOLTAGE_MIN_DESIGN, + BATTERY_PROP_CHARGE_FULL_DESIGN, + BATTERY_PROP_CHARGE_EMPTY_DESIGN, + BATTERY_PROP_CHARGE_NOW, + BATTERY_PROP_VOLTAGE_NOW, + BATTERY_PROP_STATUS, +}; + struct battery palmt5_battery = { - .name = "palmt5_battery", - .id = "battery0", - .get_min_voltage = palmt5_battery_min_voltage, - .get_max_voltage = palmt5_battery_max_voltage, - .get_voltage = palmt5_battery_get_voltage, - .get_status = palmt5_battery_get_status, + .name = "palmt5_battery", + .get_property = palmt5_battery_get_property, + .properties = palmt5_battery_props, + .num_properties = ARRAY_SIZE(palmt5_battery_props), }; static int palmt5_wm97xx_probe(struct device *dev) @@ -123,7 +173,7 @@ static void palmt5_wm97xx_shutdown(struct device *dev) { -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status = apm_get_power_status_orig; #endif } @@ -163,7 +213,7 @@ return ret; } -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) /* APM status query callback implementation */ static void palmt5_apm_get_power_status(struct apm_power_info *info) @@ -208,14 +258,14 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_class_register(&palmt5_battery)) { + if(battery_register(&palmt5_battery)) { printk(KERN_ERR "palmt5_ac97_probe: could not register battery class\n"); } else { bat.battery_registered = 1; printk("Battery registered\n"); } -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmt5_apm_get_power_status; #endif @@ -231,7 +281,7 @@ static void __exit palmt5_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ - battery_class_unregister(&palmt5_battery); + battery_unregister(&palmt5_battery); driver_unregister(&palmt5_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-05-27 17:44:20 UTC (rev 1000) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-05-27 21:05:55 UTC (rev 1001) @@ -21,8 +21,9 @@ #include <linux/device.h> #include <linux/workqueue.h> #include <linux/battery.h> +#include <linux/apm-emulation.h> +#include <linux/wm97xx.h> -#include <asm/apm.h> #include <asm/delay.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -30,16 +31,14 @@ #include <asm/arch/hardware.h> #include <asm/arch/pxa-regs.h> #include <asm/arch/irqs.h> +#include <asm/arch/palmtx-gpio.h> +#include <asm/arch/palmtx-init.h> #include <sound/driver.h> #include <sound/core.h> #include <sound/pcm.h> #include <sound/initval.h> -#include <linux/wm97xx.h> -#include <asm/arch/palmtx-gpio.h> -#include <asm/arch/palmtx-init.h> - struct palmtx_battery_dev { struct wm97xx * wm; @@ -51,7 +50,7 @@ struct palmtx_battery_dev bat; -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) /* original APM hook */ static void (*apm_get_power_status_orig)(struct apm_power_info *info); #endif @@ -86,6 +85,17 @@ } } +int palmtx_battery_get_capacity(struct battery *b) +{ + if (bat.battery_registered){ + return ((palmtx_battery_get_voltage(b)-palmtx_battery_min_voltage(b)) + /(palmtx_battery_max_voltage(b)-palmtx_battery_min_voltage(b))); + } + else{ + printk("palmtx_battery: cannot get capacity -> battery driver unregistered\n"); + return 0; + } +} int palmtx_battery_get_status(struct battery *b) { @@ -104,13 +114,53 @@ return BATTERY_STATUS_DISCHARGING; } +int tmp; + +static void *palmtx_battery_get_property(struct battery *b, enum battery_property bp) +{ + switch (bp) { + case BATTERY_PROP_VOLTAGE_MAX_DESIGN: + tmp = palmtx_battery_max_voltage(b); + return &tmp; + case BATTERY_PROP_VOLTAGE_MIN_DESIGN: + tmp = palmtx_battery_min_voltage(b); + return &tmp; + case BATTERY_PROP_CHARGE_FULL_DESIGN: + tmp = 100; + return &tmp; + case BATTERY_PROP_CHARGE_EMPTY_DESIGN: + tmp = 0; + return &tmp; + case BATTERY_PROP_CHARGE_NOW: + tmp = palmtx_battery_get_capacity(b); + return &tmp; + case BATTERY_PROP_VOLTAGE_NOW: + tmp = palmtx_battery_get_voltage(b); + return &tmp; + case BATTERY_PROP_STATUS: + tmp = palmtx_battery_get_status(b); + return &tmp; + default: break; + }; + + return NULL; +} + +static enum battery_property palmtx_battery_props[] = { + BATTERY_PROP_VOLTAGE_MAX_DESIGN, + BATTERY_PROP_VOLTAGE_MIN_DESIGN, + BATTERY_PROP_CHARGE_FULL_DESIGN, + BATTERY_PROP_CHARGE_EMPTY_DESIGN, + BATTERY_PROP_CHARGE_NOW, + BATTERY_PROP_VOLTAGE_NOW, + BATTERY_PROP_STATUS, +}; + struct battery palmtx_battery = { - .name = "palmtx_battery", - .id = "battery0", - .get_min_voltage = palmtx_battery_min_voltage, - .get_max_voltage = palmtx_battery_max_voltage, - .get_voltage = palmtx_battery_get_voltage, - .get_status = palmtx_battery_get_status, + .name = "palmtx_battery", + .get_property = palmtx_battery_get_property, + .properties = palmtx_battery_props, + .num_properties = ARRAY_SIZE(palmtx_battery_props), }; static int palmtx_wm97xx_probe(struct device *dev) @@ -128,7 +178,7 @@ static void palmtx_wm97xx_shutdown(struct device *dev) { -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status = apm_get_power_status_orig; #endif } @@ -168,7 +218,7 @@ return ret; } -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) /* APM status query callback implementation */ static void palmtx_apm_get_power_status(struct apm_power_info *info) @@ -213,14 +263,14 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_class_register(&palmtx_battery)) { + if(battery_register(&palmtx_battery)) { printk(KERN_ERR "palmtx_ac97_probe: could not register battery class\n"); } else { bat.battery_registered = 1; printk("Battery registered\n"); } -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmtx_apm_get_power_status; #endif @@ -236,7 +286,7 @@ static void __exit palmtx_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ - battery_class_unregister(&palmtx_battery); + battery_unregister(&palmtx_battery); driver_unregister(&palmtx_wm97xx_driver); } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-05-27 17:44:20 UTC (rev 1000) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-05-27 21:05:55 UTC (rev 1001) @@ -17,8 +17,9 @@ #include <linux/device.h> #include <linux/workqueue.h> #include <linux/battery.h> +#include <linux/apm-emulation.h> +#include <linux/wm97xx.h> -#include <asm/apm.h> #include <asm/delay.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -26,6 +27,8 @@ #include <asm/arch/hardware.h> #include <asm/arch/pxa-regs.h> #include <asm/arch/irqs.h> +#include <asm/arch/palmz72-gpio.h> +#include <asm/arch/palmz72-init.h> #include <sound/driver.h> #include <sound/core.h> @@ -47,7 +50,7 @@ struct palmz72_battery_dev bat; -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) /* original APM hook */ static void (*apm_get_power_status_orig)(struct apm_power_info *info); #endif @@ -82,6 +85,17 @@ } } +int palmz72_battery_get_capacity(struct battery *b) +{ + if (bat.battery_registered){ + return ((palmz72_battery_get_voltage(b)-palmz72_battery_min_voltage(b)) + /(palmz72_battery_max_voltage(b)-palmz72_battery_min_voltage(b))); + } + else{ + printk("palmz72_battery: cannot get capacity -> battery driver unregistered\n"); + return 0; + } +} int palmz72_battery_get_status(struct battery *b) { @@ -100,13 +114,53 @@ return BATTERY_STATUS_DISCHARGING; } +int tmp; + +static void *palmz72_battery_get_property(struct battery *b, enum battery_property bp) +{ + switch (bp) { + case BATTERY_PROP_VOLTAGE_MAX_DESIGN: + tmp = palmz72_battery_max_voltage(b); + return &tmp; + case BATTERY_PROP_VOLTAGE_MIN_DESIGN: + tmp = palmz72_battery_min_voltage(b); + return &tmp; + case BATTERY_PROP_CHARGE_FULL_DESIGN: + tmp = 100; + return &tmp; + case BATTERY_PROP_CHARGE_EMPTY_DESIGN: + tmp = 0; + return &tmp; + case BATTERY_PROP_CHARGE_NOW: + tmp = palmz72_battery_get_capacity(b); + return &tmp; + case BATTERY_PROP_VOLTAGE_NOW: + tmp = palmz72_battery_get_voltage(b); + return &tmp; + case BATTERY_PROP_STATUS: + tmp = palmz72_battery_get_status(b); + return &tmp; + default: break; + }; + + return NULL; +} + +static enum battery_property palmz72_battery_props[] = { + BATTERY_PROP_VOLTAGE_MAX_DESIGN, + BATTERY_PROP_VOLTAGE_MIN_DESIGN, + BATTERY_PROP_CHARGE_FULL_DESIGN, + BATTERY_PROP_CHARGE_EMPTY_DESIGN, + BATTERY_PROP_CHARGE_NOW, + BATTERY_PROP_VOLTAGE_NOW, + BATTERY_PROP_STATUS, +}; + struct battery palmz72_battery = { - .name = "palmz72_battery", - .id = "battery0", - .get_min_voltage = palmz72_battery_min_voltage, - .get_max_voltage = palmz72_battery_max_voltage, - .get_voltage = palmz72_battery_get_voltage, - .get_status = palmz72_battery_get_status, + .name = "palmz72_battery", + .get_property = palmz72_battery_get_property, + .properties = palmz72_battery_props, + .num_properties = ARRAY_SIZE(palmz72_battery_props), }; static int palmz72_wm97xx_probe(struct device *dev) @@ -124,7 +178,7 @@ static void palmz72_wm97xx_shutdown(struct device *dev) { -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status = apm_get_power_status_orig; #endif } @@ -164,7 +218,7 @@ return ret; } -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) /* APM status query callback implementation */ static void palmz72_apm_get_power_status(struct apm_power_info *info) @@ -209,14 +263,14 @@ /* register battery to APM layer */ bat.battery_registered = 0; - if(battery_class_register(&palmz72_battery)) { + if(battery_register(&palmz72_battery)) { printk(KERN_ERR "palmz72_ac97_probe: could not register battery class\n"); } else { bat.battery_registered = 1; printk("Battery registered\n"); } -#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE) +#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE) apm_get_power_status_orig = apm_get_power_status; apm_get_power_status = palmz72_apm_get_power_status; #endif @@ -232,7 +286,7 @@ static void __exit palmz72_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ - battery_class_unregister(&palmz72_battery); + battery_unregister(&palmz72_battery); driver_unregister(&palmz72_wm97xx_driver); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-06-09 03:12:47
|
Revision: 1028 http://svn.sourceforge.net/hackndev/?rev=1028&view=rev Author: marex_z71 Date: 2007-06-08 20:12:45 -0700 (Fri, 08 Jun 2007) Log Message: ----------- PalmTC, PalmT5: correct machine names to be somehow "standard" Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c 2007-06-09 01:06:35 UTC (rev 1027) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c 2007-06-09 03:12:45 UTC (rev 1028) @@ -430,7 +430,7 @@ -MACHINE_START(XSCALE_PALMTT5, "Palm T5") +MACHINE_START(XSCALE_PALMTT5, "Palm Tungsten T5") .phys_io = PALMT5_PHYS_IO_START, .io_pg_offst = io_p2v(0x40000000), .boot_params = 0xa0000100, Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c 2007-06-09 01:06:35 UTC (rev 1027) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c 2007-06-09 03:12:45 UTC (rev 1028) @@ -162,7 +162,7 @@ } -MACHINE_START(OMAP_PALMTC, "Palm TC") +MACHINE_START(OMAP_PALMTC, "Palm Tungsten C") /* Maintainer: P3T3, Petr Blaha <p3...@ce...> */ // .phys_ram = 0xa0000000, .phys_io = 0x40000000, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-06-14 15:48:07
|
Revision: 1035 http://svn.sourceforge.net/hackndev/?rev=1035&view=rev Author: marex_z71 Date: 2007-06-14 08:47:55 -0700 (Thu, 14 Jun 2007) Log Message: ----------- PalmTE2, PalmTC: fix horrible coding style Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c 2007-06-13 15:59:41 UTC (rev 1034) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c 2007-06-14 15:47:55 UTC (rev 1035) @@ -98,9 +98,9 @@ } static struct pxamci_platform_data palmtc_mci_platform_data = { - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, + .ocr_mask = (MMC_VDD_32_33 | MMC_VDD_33_34), .init = palmtc_mci_init, - /* .setpower = palmld_mci_setpower, */ +/* .setpower = palmld_mci_setpower, */ .exit = palmtc_mci_exit, }; @@ -108,11 +108,11 @@ /* Backlight ***/ static struct pxapwmbl_platform_data palmtc_backlight_data = { .pwm = 1, - .max_intensity = 0x100, //120 - .default_intensity = 0x50, //11a + .max_intensity = 0x100, + .default_intensity = 0x50, .limit_mask = 0x7F, - .prescaler = 1, // 7 - .period = 0x12B, // 16c + .prescaler = 1, + .period = 0x12B, }; @@ -126,9 +126,9 @@ }; static struct platform_device palmtc_backlight = { - .name = "pxapwm-bl", - .dev = { - .platform_data = &palmtc_backlight_data, + .name = "pxapwm-bl", + .dev = { + .platform_data = &palmtc_backlight_data, }, }; @@ -136,7 +136,9 @@ static struct platform_device palmtc_ac97_device = { .name = "pxa2xx-ac97", .id = -1, - .dev = { .platform_data = &palmtc_audio_ops }, + .dev = { + .platform_data = &palmtc_audio_ops + }, }; static struct platform_device palmtc_keyboard_device = { @@ -163,8 +165,8 @@ } MACHINE_START(OMAP_PALMTC, "Palm Tungsten C") - /* Maintainer: P3T3, Petr Blaha <p3...@ce...> */ -// .phys_ram = 0xa0000000, +/* Maintainer: P3T3, Petr Blaha <p3...@ce...> */ +/* .phys_ram = 0xa0000000, */ .phys_io = 0x40000000, .boot_params = 0xa0000100, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, @@ -173,4 +175,3 @@ .timer = &pxa_timer, .init_machine = palmtc_init MACHINE_END - Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c 2007-06-13 15:59:41 UTC (rev 1034) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c 2007-06-14 15:47:55 UTC (rev 1035) @@ -48,7 +48,7 @@ static void palmte2_irda_configure (struct uart_pxa_port *up, int enable) { - //printk("irda_configure, %d\n", enable); + /* printk("irda_configure, %d\n", enable); */ /* Switch STUART RX/TX pins to SIR */ pxa_gpio_mode(GPIO_NR_PALMLD_STD_RXD_MD); @@ -92,8 +92,7 @@ new_stisr &= ~STISR_RCVEIR; if (new_stisr != old_stisr) { - while (!(STLSR & LSR_TEMT)) - ; + while (!(STLSR & LSR_TEMT)); STISR = new_stisr; } } @@ -101,22 +100,22 @@ static int palmte2_irda_get_txrx (struct uart_pxa_port *up) { - return ((STISR & STISR_XMITIR) ? PXA_SERIAL_TX : 0) | - ((STISR & STISR_RCVEIR) ? PXA_SERIAL_RX : 0); + return (((STISR & STISR_XMITIR) ? PXA_SERIAL_TX : 0) | + ((STISR & STISR_RCVEIR) ? PXA_SERIAL_RX : 0)); } static struct platform_pxa_serial_funcs palmte2_pxa_irda_funcs = { - .configure = palmte2_irda_configure, - .set_txrx = palmte2_irda_set_txrx, - .get_txrx = palmte2_irda_get_txrx, + .configure = palmte2_irda_configure, + .set_txrx = palmte2_irda_set_txrx, + .get_txrx = palmte2_irda_get_txrx, }; #endif struct platform_device palmte2_buttons = { - .name = "palmte2-buttons", - .id = -1, + .name = "palmte2-buttons", + .id = -1, }; /** @@ -135,7 +134,9 @@ static struct platform_device palmld_ac97 = { .name = "pxa2xx-ac97", .id = -1, - .dev = { .platform_data = &palmld_audio_ops }, + .dev = { + .platform_data = &palmld_audio_ops + }, }; @@ -153,10 +154,10 @@ }; static struct platform_device palmte2_backlight = { - .name = "pxapwm-bl", - .dev = { - .platform_data = &palmte2_backlight_data, - }, + .name = "pxapwm-bl", + .dev = { + .platform_data = &palmte2_backlight_data, + }, }; @@ -178,14 +179,14 @@ PWM_PERVAL0 = 0x16c; /* turn on PWMs */ CKEN |= CKEN0_PWM0 | CKEN1_PWM1; - } else { - /* turn off PWMs */ - CKEN &= ~(CKEN0_PWM0 | CKEN1_PWM1); - } + } else { + /* turn off PWMs */ + CKEN &= ~(CKEN0_PWM0 | CKEN1_PWM1); + } } static struct pxafb_mode_info palmte2_lcd_modes[] = { -{ + { .pixclock = 0, .xres = 320, .yres = 320, @@ -198,9 +199,7 @@ .upper_margin = 7, .lower_margin = 5, .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, - -// .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, -}, + }, }; static struct pxafb_mach_info palmte2_lcd_screen = { @@ -218,7 +217,7 @@ set_pxa_fb_info(&palmte2_lcd_screen); -// stuart_device.dev.platform_data = &palmte2_pxa_irda_funcs; +/* stuart_device.dev.platform_data = &palmte2_pxa_irda_funcs; */ platform_add_devices(devices, ARRAY_SIZE(devices)); /* @@ -228,8 +227,8 @@ } MACHINE_START(TUNGE2, "Palm Tungsten E2") - Maintainer: Carlos E. Medaglia Dyonisio <ca...@ne...> - //.phys_ram = 0xa0000000, +/* Maintainer: Carlos E. Medaglia Dyonisio <ca...@ne...> */ +/* .phys_ram = 0xa0000000, */ .phys_io = 0x40000000, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, .map_io = pxa_map_io, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-07-27 23:13:43
|
Revision: 1209 http://hackndev.svn.sourceforge.net/hackndev/?rev=1209&view=rev Author: happy-slapin Date: 2007-07-27 16:13:41 -0700 (Fri, 27 Jul 2007) Log Message: ----------- z72: some smoked code: * Sleep mode works now! Requires proper testing though. * Recovering 1 location which broke kernel task wakeup handling because PalmOS bl overwrite it. Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-07-24 17:44:21 UTC (rev 1208) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-07-27 23:13:41 UTC (rev 1209) @@ -52,8 +52,16 @@ /* Turn off USB power */ SET_PALMZ72_GPIO(USB_POWER,0); + /* hold current GPIO levels for now + * TODO: find out what we can disable. + */ + PGSR0 = GPLR0; + PGSR1 = GPLR1; + PGSR2 = GPLR2; + PGSR3 = GPLR3; /* disable GPIO reset - DO NOT REMOVE! */ + /* not it, but we can't sleep otherwise */ PCFR &= PCFR_GPR_EN; return 0; @@ -107,7 +115,7 @@ .domain_access = 0, .process_id = 0, }; - +static unsigned long store_ptr; static void palmz72_pxa_ll_pm_suspend(unsigned long resume_addr) { /* hold current GPIO levels on outputs */ @@ -118,11 +126,14 @@ /* setup the resume_info struct for the original bootloader */ palmz72_resume_info.resume_addr = resume_addr; + printk(KERN_INFO "PSPR=%lu\n", virt_to_phys(&palmz72_resume_info)); + store_ptr = *((unsigned long *)0xc0000050); PSPR = virt_to_phys(&palmz72_resume_info); } static void palmz72_pxa_ll_pm_resume(void) { + *((unsigned long *)0xc0000050) = store_ptr; /* For future */ } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c 2007-07-24 17:44:21 UTC (rev 1208) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c 2007-07-27 23:13:41 UTC (rev 1209) @@ -153,7 +153,7 @@ break; case PM_SUSPEND_MEM: if(machine_is_xscale_palmld() || machine_is_xscale_palmtx() || - machine_is_palmz72() || machine_is_xscale_palmtt5()) { + machine_is_xscale_palmtt5()) { /* For safety. suspend_mem puts the device in an unresetable * state. * On TX one needs to desolder the battery to get out of it. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-08-21 10:57:19
|
Revision: 1252 http://hackndev.svn.sourceforge.net/hackndev/?rev=1252&view=rev Author: marex_z71 Date: 2007-08-21 03:57:15 -0700 (Tue, 21 Aug 2007) Log Message: ----------- HTC_Beetles: part 2 Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2007-08-21 10:56:33 UTC (rev 1251) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2007-08-21 10:57:15 UTC (rev 1252) @@ -36,7 +36,6 @@ source "arch/arm/mach-pxa/magician/Kconfig" source "arch/arm/mach-pxa/htcapache/Kconfig" source "arch/arm/mach-pxa/htcblueangel/Kconfig" -source "arch/arm/mach-pxa/htcbeetles/Kconfig" source "arch/arm/mach-pxa/htcsable/Kconfig" source "arch/arm/mach-pxa/htcathena/Kconfig" source "arch/arm/mach-pxa/aximx3/Kconfig" Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-08-21 10:56:33 UTC (rev 1251) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-08-21 10:57:15 UTC (rev 1252) @@ -36,7 +36,7 @@ obj-$(CONFIG_MACH_MAGICIAN) += magician/ obj-$(CONFIG_MACH_HTCAPACHE) += htcapache/ obj-$(CONFIG_MACH_BLUEANGEL) += htcblueangel/ -obj-$(CONFIG_MACH_HTCBEETLES) += htcbeetles/ +obj-$(CONFIG_MACH_HTCBEETLES) += htcsable/ obj-$(CONFIG_MACH_HTCATHENA) += htcathena/ obj-$(CONFIG_MACH_HW6900) += htcsable/ obj-$(CONFIG_ARCH_ROVERP1) += rover/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-08-23 17:55:15
|
Revision: 1263 http://hackndev.svn.sourceforge.net/hackndev/?rev=1263&view=rev Author: marex_z71 Date: 2007-08-23 10:55:14 -0700 (Thu, 23 Aug 2007) Log Message: ----------- HnD: make Kconfig and Makefile for palms less messy, sort things Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2007-08-23 17:35:31 UTC (rev 1262) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Kconfig 2007-08-23 17:55:14 UTC (rev 1263) @@ -43,17 +43,17 @@ source "arch/arm/mach-pxa/aximx30/Kconfig" source "arch/arm/mach-pxa/aximx50/Kconfig" source "arch/arm/mach-pxa/rover/Kconfig" -source "arch/arm/mach-pxa/palmld/Kconfig" -source "arch/arm/mach-pxa/palmt650/Kconfig" -source "arch/arm/mach-pxa/palmt680/Kconfig" -source "arch/arm/mach-pxa/palmt700wx/Kconfig" source "arch/arm/mach-pxa/palmte2/Kconfig" +source "arch/arm/mach-pxa/palmtc/Kconfig" source "arch/arm/mach-pxa/palmtt3/Kconfig" source "arch/arm/mach-pxa/palmtt5/Kconfig" source "arch/arm/mach-pxa/palmtx/Kconfig" +source "arch/arm/mach-pxa/palmld/Kconfig" +source "arch/arm/mach-pxa/palmz31/Kconfig" source "arch/arm/mach-pxa/palmz72/Kconfig" -source "arch/arm/mach-pxa/palmtc/Kconfig" -source "arch/arm/mach-pxa/palmz31/Kconfig" +source "arch/arm/mach-pxa/palmt650/Kconfig" +source "arch/arm/mach-pxa/palmt680/Kconfig" +source "arch/arm/mach-pxa/palmt700wx/Kconfig" config MACH_GHI270HG bool "Grayhill Duramax HG" Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-08-23 17:35:31 UTC (rev 1262) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/Makefile 2007-08-23 17:55:14 UTC (rev 1263) @@ -47,17 +47,17 @@ obj-$(CONFIG_MACH_RECON) += plat-recon/ obj-$(CONFIG_MACH_LOOXC550) += looxc550/ obj-$(CONFIG_MACH_X50) += aximx50/ +obj-$(CONFIG_MACH_TUNGE2) += palmte2/ +obj-$(CONFIG_MACH_OMAP_PALMTC) += ssp.o palmtc/ +obj-$(CONFIG_MACH_T3XSCALE) += ssp.o palmtt3/ +obj-$(CONFIG_MACH_XSCALE_PALMTT5) += palmtt5/ +obj-$(CONFIG_MACH_XSCALE_PALMTX) += palmtx/ obj-$(CONFIG_MACH_XSCALE_PALMLD) += palmld/ +obj-$(CONFIG_MACH_ZIRE31) += palmz31/ +obj-$(CONFIG_MACH_PALMZ72) += palmz72/ obj-$(CONFIG_MACH_XSCALE_PALMTREO650) += palmt650/ obj-$(CONFIG_MACH_XSCALE_TREO680) += palmt680/ obj-$(CONFIG_MACH_T700WX) += palmt700wx/ -obj-$(CONFIG_MACH_T3XSCALE) += ssp.o palmtt3/ -obj-$(CONFIG_MACH_XSCALE_PALMTT5) += palmtt5/ -obj-$(CONFIG_MACH_XSCALE_PALMTX) += palmtx/ -obj-$(CONFIG_MACH_PALMZ72) += palmz72/ -obj-$(CONFIG_MACH_TUNGE2) += palmte2/ -obj-$(CONFIG_MACH_OMAP_PALMTC) += ssp.o palmtc/ -obj-$(CONFIG_MACH_ZIRE31) += palmz31/ # Support for blinky lights led-y := leds.o This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-09-21 00:40:35
|
Revision: 1333 http://hackndev.svn.sourceforge.net/hackndev/?rev=1333&view=rev Author: marex_z71 Date: 2007-09-20 17:40:32 -0700 (Thu, 20 Sep 2007) Log Message: ----------- PalmTX: migrate to palmlcd_border Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c Removed Paths: ------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-09-21 00:12:29 UTC (rev 1332) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-09-21 00:40:32 UTC (rev 1333) @@ -223,7 +223,7 @@ struct platform_device palmld_border = { .name = "palmlcd-border", - .id = 0, + .id = -1, .dev = { .platform_data = &border_machinfo, }, Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig 2007-09-21 00:12:29 UTC (rev 1332) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig 2007-09-21 00:40:32 UTC (rev 1333) @@ -33,9 +33,3 @@ depends on MACH_XSCALE_PALMTX help This driver handles the CF/PCCARD/PCMCIA bus. - -config PALMTX_BORDER - tristate "Palm TX Display border switch" - depends on MACH_XSCALE_PALMTX - help - Enable support for turning LCD border on/off Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile 2007-09-21 00:12:29 UTC (rev 1332) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile 2007-09-21 00:40:32 UTC (rev 1333) @@ -6,4 +6,3 @@ obj-$(CONFIG_PALMTX_BATTERY) += palmtx_battery.o obj-$(CONFIG_PALMTX_PM) += palmtx_pm.o obj-$(CONFIG_PALMTX_PCMCIA) += palmtx_pcmcia.o -obj-$(CONFIG_PALMTX_BORDER) += palmtx_border.o Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c 2007-09-21 00:12:29 UTC (rev 1332) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c 2007-09-21 00:40:32 UTC (rev 1333) @@ -45,6 +45,7 @@ #include <asm/arch/palmtx-init.h> #include <asm/arch/palmtx-gpio.h> #include <asm/arch/pxa2xx_udc_gpio.h> +#include <asm/arch/palmlcd-border.h> #include "../generic.h" @@ -154,12 +155,16 @@ /************** * LCD Border * **************/ +static struct palmlcd_border_pdata border_machinfo = { + .select_gpio = GPIO_NR_PALMTX_BORDER_SELECT, + .switch_gpio = GPIO_NR_PALMTX_BORDER_SWITCH, +}; struct platform_device palmtx_border = { - .name = "palmtx-border", + .name = "palmlcd-border", .id = -1, .dev = { - .platform_data = NULL, + .platform_data = &border_machinfo, }, }; Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c 2007-09-21 00:12:29 UTC (rev 1332) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c 2007-09-21 00:40:32 UTC (rev 1333) @@ -1,100 +0,0 @@ -/* - * Palm T|X LCD Border switch - * - * Copyright (C) 2007 Marek Vasut <mar...@gm...> - * - * 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/module.h> -#include <linux/kernel.h> -#include <linux/platform_device.h> -#include <linux/delay.h> - -#include <asm/arch/hardware.h> -#include <asm/arch/palmtx-gpio.h> - -static ssize_t palmtx_border_write(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count) -{ - signed long state = simple_strtol(buf, NULL, 10); - - if ( state >= 1 ) - SET_PALMTX_GPIO(BORDER_SELECT, 1); - else - SET_PALMTX_GPIO(BORDER_SELECT, 0); - - msleep(50); - SET_PALMTX_GPIO(BORDER_SWITCH, 1); - - if ((state == 1) || (state == 0)) /* default - switch border on/off */ - msleep(200); - else { /* hidden functionality - colored border */ - if (state >= 0) - msleep(state); - else - msleep(-state); - } - - SET_PALMTX_GPIO(BORDER_SWITCH, 0); - - return count; -} - -static ssize_t palmtx_border_read(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - return strlcpy(buf, GET_PALMTX_GPIO(BORDER_SELECT) ? "1\n" : "0\n", 3); -} - -static DEVICE_ATTR(border_power, 0644, palmtx_border_read, palmtx_border_write); - -static struct attribute *palmtx_border_attrs[] = { - &dev_attr_border_power.attr, - NULL -}; - -static struct attribute_group palmtx_border_attr_group = { - .attrs = palmtx_border_attrs, -}; - -static int __devinit palmtx_border_probe(struct platform_device *pdev) -{ - return sysfs_create_group(&pdev->dev.kobj, &palmtx_border_attr_group); -} - -static int palmtx_border_remove(struct platform_device *pdev) -{ - sysfs_remove_group(&pdev->dev.kobj, &palmtx_border_attr_group); - return 0; -} - -static struct platform_driver palmtx_border_driver = { - .probe = palmtx_border_probe, - .remove = palmtx_border_remove, - .suspend = NULL, - .resume = NULL, - .driver = { - .name = "palmtx-border", - } -}; - -static int __init palmtx_border_init(void) -{ - return platform_driver_register(&palmtx_border_driver); -} - -static void palmtx_border_exit(void) -{ - platform_driver_unregister(&palmtx_border_driver); -} - -module_init(palmtx_border_init); -module_exit(palmtx_border_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Marek Vasut <mar...@gm...>"); -MODULE_DESCRIPTION("Palm T|X Border switch"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |