You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(26) |
Sep
(22) |
Oct
(55) |
Nov
(24) |
Dec
(30) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(68) |
Feb
(85) |
Mar
(54) |
Apr
(12) |
May
(52) |
Jun
(75) |
Jul
(116) |
Aug
(71) |
Sep
(54) |
Oct
|
Nov
(2) |
Dec
|
From: <hap...@us...> - 2007-06-28 18:09:52
|
Revision: 1090 http://svn.sourceforge.net/hackndev/?rev=1090&view=rev Author: happy-slapin Date: 2007-06-28 11:09:50 -0700 (Thu, 28 Jun 2007) Log Message: ----------- z72: Found more camera GPIO candidates Added Paths: ----------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/camera.txt Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/camera.txt =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/camera.txt (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/camera.txt 2007-06-28 18:09:50 UTC (rev 1090) @@ -0,0 +1,60 @@ +GPLR0 GPLR1 GPLR2 GPLR3 + +No camera +0xFF511B05 0x3C7EDDFD 0xFF3F7328 0X8D1B6600 +0xFF511B15 0X3C7EDDFD 0XFF2F7328 0X8D1B6600 +0xff511b05 0x3c7efdfd 0xff2f7328 0x8d1b6600 +0xff511a85 0x3c7efda9 0x4a2d7328 0x8d1b6600 +0xff511a15 0x3c7efd19 0x8c3e7328 0x8d1b6600 +0xff511af5 0x3c7efdb9 0x8c2d7328 0x8d1b6600 + +Camera on +0XFF511B15 0X3C7ECB04 0X063C632A 0XBD0B6600 +0xff511b15 0x3cfe7328 0x002c630a 0x8d0b6600 +0xff511b85 0x3cfe1700 0x002c6308 0x8d0b6600 +0xff511b05 0x3cfe6288 0x633c612a 0x8d1b6600 +0xff511a15 0x3cfed304 0x443c410a 0x8d0b6600 +0xff511a05 0x3cfe8ee8 0xf72e4108 0x8d1b6600 + + XXXXXXXX XXXXX X XX XXX XXXXXXXX + + +GPLR1 +Camera off +dfd 1101 1111 1101 +da9 1101 1010 1001 +d19 1101 0001 1001 +db9 1101 1011 1001 + +Camera on +b04 1011 0000 0100 +328 0011 0010 1000 +700 0111 0000 0000 +288 0010 1000 1000 +304 0011 0000 0100 +ee8 1110 1110 1000 + + XX X XXXX XXX +Camera: off on +GPIO32 1 0 +GPIO41 0 1 + +GPLR2 +Camera off +XFXX7XXX 1111 XXXX XXXX 0111 XXXX XXXX XXXX +XAXX7XXX 1010 XXXX XXXX 0111 XXXX XXXX XXXX +XCXX7XXX 1100 XXXX XXXX 0111 XXXX XXXX XXXX + +Camera on +X6XX6XXX 0110 XXXX XXXX 0110 XXXX XXXX XXXX +X0XX6XXX 0000 XXXX XXXX 0110 XXXX XXXX XXXX +X3XX6XXX 0011 XXXX XXXX 0110 XXXX XXXX XXXX +X4XX4XXX 0100 XXXX XXXX 0100 XXXX XXXX XXXX +X7XX4XXX 0111 XXXX XXXX 0100 XXXX XXXX XXXX + + XXX XXXX XXXX XXX XXXX XXXX XXXX + +Camera: off on +GPIO76 1 0 +GPIO91 1 0 + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sn...@us...> - 2007-06-28 08:01:32
|
Revision: 1089 http://svn.sourceforge.net/hackndev/?rev=1089&view=rev Author: snua12 Date: 2007-06-28 01:01:04 -0700 (Thu, 28 Jun 2007) Log Message: ----------- misspell fix. Modified Paths: -------------- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h =================================================================== --- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h 2007-06-27 15:55:05 UTC (rev 1088) +++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h 2007-06-28 08:01:04 UTC (rev 1089) @@ -59,7 +59,7 @@ #define GPIO_NR_PALMT5_IR_DISABLE 40 // connected to SD pin of tranceiver (TFBS4710?) ? #define GPIO_NR_PALMT5_ICP_RXD_MD (GPIO_NR_PALMT5_ICP_RXD | GPIO_ALT_FN_1_IN) -#define GPIO_NR_PALMT5_ICP_TXD_MD (GPIO_NR_PALMT5_ICP_T5D | GPIO_ALT_FN_2_OUT) +#define GPIO_NR_PALMT5_ICP_TXD_MD (GPIO_NR_PALMT5_ICP_TXD | GPIO_ALT_FN_2_OUT) #define GPIO_NR_PALMT5_USB_DETECT 13 #define GPIO_NR_PALMT5_USB_POWER 95 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-06-27 15:55:21
|
Revision: 1088 http://svn.sourceforge.net/hackndev/?rev=1088&view=rev Author: marex_z71 Date: 2007-06-27 08:55:05 -0700 (Wed, 27 Jun 2007) Log Message: ----------- PalmLD: updated defconfig with compiled-in power_supply (battery works again) Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig Modified: linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig 2007-06-27 13:52:28 UTC (rev 1087) +++ linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig 2007-06-27 15:55:05 UTC (rev 1088) @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.21-hnd0 -# Sun May 27 14:49:20 2007 +# Linux kernel version: 2.6.21-hnd2 +# Wed Jun 27 17:44:15 2007 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -189,6 +189,8 @@ # CONFIG_MACH_ZIRE31 is not set CONFIG_GPIOED=m CONFIG_GPIOEDNG=m +# CONFIG_MACH_GHI270HG is not set +# CONFIG_MACH_GHI270 is not set # CONFIG_PXA_SHARPSL is not set # CONFIG_MACH_TRIZEPS4 is not set CONFIG_PXA27x=y @@ -691,6 +693,12 @@ # # Wireless 802.11b ISA/PCI cards support # +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_CS=m +CONFIG_LIBERTAS_CF8305=y +# CONFIG_LIBERTAS_CF8381 is not set +# CONFIG_LIBERTAS_CF8385 is not set +CONFIG_LIBERTAS_DEBUG=y # CONFIG_HERMES is not set # CONFIG_ATMEL is not set @@ -752,6 +760,7 @@ CONFIG_INPUT_TSDEV_SCREEN_Y=480 CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set +# CONFIG_INPUT_LED_TRIGGER is not set # # Input Device Drivers @@ -837,7 +846,6 @@ # CONFIG_WATCHDOG is not set CONFIG_HW_RANDOM=m # CONFIG_NVRAM is not set -# CONFIG_SA1100_RTC is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_TIHTC is not set @@ -876,16 +884,13 @@ # # CONFIG_HWMON is not set # CONFIG_HWMON_VID is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +# CONFIG_BATTERY_DS2760 is not set # -# Hardware Monitoring - external power and batteries -# -CONFIG_EXTERNAL_POWER=m -CONFIG_BATTERY=m -CONFIG_PDA_POWER=m -CONFIG_APM_POWER=m - -# # L3 serial bus support # # CONFIG_L3 is not set @@ -906,6 +911,7 @@ # CONFIG_MFD_SM501 is not set # CONFIG_HTC_ASIC2 is not set # CONFIG_HTC_ASIC3 is not set +# CONFIG_HTC_EGPIO is not set # CONFIG_HTC_ASIC3_DS1WM is not set # CONFIG_SOC_SAMCOP is not set # CONFIG_SOC_HAMCOP is not set @@ -987,13 +993,13 @@ CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_FONTS=y -CONFIG_FONT_8x8=y +# CONFIG_FONT_8x8 is not set # CONFIG_FONT_8x16 is not set # CONFIG_FONT_6x11 is not set # CONFIG_FONT_7x14 is not set # CONFIG_FONT_PEARL_8x8 is not set # CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set +CONFIG_FONT_MINI_4x6=y # CONFIG_FONT_SUN8x16 is not set # CONFIG_FONT_SUN12x22 is not set # CONFIG_FONT_10x18 is not set @@ -1202,6 +1208,7 @@ # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set +# CONFIG_AUFS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-27 13:52:31
|
Revision: 1087 http://svn.sourceforge.net/hackndev/?rev=1087&view=rev Author: happy-slapin Date: 2007-06-27 06:52:28 -0700 (Wed, 27 Jun 2007) Log Message: ----------- OV9640: fixed addresses Modified Paths: -------------- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-27 08:26:37 UTC (rev 1086) +++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-27 13:52:28 UTC (rev 1087) @@ -31,7 +31,7 @@ extern struct i2c_adapter *i2cdev_adaps[]; struct i2c_client *g_client = NULL; -static unsigned short normal_i2c[] = {0x14, 0x50, 0x52, 0x54, 0x56, 0x5e, OV9640_SLAVE_ADDR ,I2C_CLIENT_END }; +static unsigned short normal_i2c[] = {OV9640_SLAVE_ADDR ,I2C_CLIENT_END }; /* static unsigned short normal_i2c_range[] = { I2C_CLIENT_END }; */ I2C_CLIENT_INSMOD; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z7...@us...> - 2007-06-27 08:26:42
|
Revision: 1086 http://svn.sourceforge.net/hackndev/?rev=1086&view=rev Author: z72ka Date: 2007-06-27 01:26:37 -0700 (Wed, 27 Jun 2007) Log Message: ----------- palmz72: Fixed backlight problem, hack to reducing whine, revert latest revision for PM (last commit is test for fixing BL) Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-27 08:23:55 UTC (rev 1085) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-27 08:26:37 UTC (rev 1086) @@ -334,8 +334,8 @@ .max_intensity = PALMZ72_MAX_INTENSITY, .default_intensity = PALMZ72_DEFAULT_INTENSITY, .limit_mask = PALMZ72_LIMIT_MASK, - .prescaler = 1, - .period = 0x12c, + .prescaler = PALMZ72_PRESCALER, + .period = PALMZ72_PERIOD, .turn_bl_on = palmz72_bl_on, .turn_bl_off = palmz72_bl_off, }; @@ -435,7 +435,8 @@ palmz72_lcd_screen.lccr3=0x03700007; break; case 16: - palmz72_lcd_screen.lccr3=0x04700007; + /* right value for lcc3 is 0x04700007, but little change reducing display whine */ + palmz72_lcd_screen.lccr3=0x04700004; break; } Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-06-27 08:23:55 UTC (rev 1085) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-06-27 08:26:37 UTC (rev 1086) @@ -15,7 +15,6 @@ #include <linux/pm.h> #include <linux/fb.h> #include <linux/platform_device.h> -#include <linux/delay.h> #include <asm/mach-types.h> #include <asm/hardware.h> @@ -53,9 +52,6 @@ /* Turn off USB power */ SET_PALMZ72_GPIO(USB_POWER,0); - SET_PALMZ72_GPIO(BL_POWER, 0); - mdelay(50); - /* disable GPIO reset - DO NOT REMOVE! */ PCFR &= PCFR_GPR_EN; @@ -81,9 +77,6 @@ SET_PALMZ72_GPIO(SCREEN,1); /* Turn on USB power */ SET_PALMZ72_GPIO(USB_POWER,1); - /* Hack - something seems to switch it off in-between */ - SET_PALMZ72_GPIO(BL_POWER, 1); - mdelay(50); return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z7...@us...> - 2007-06-27 08:23:57
|
Revision: 1085 http://svn.sourceforge.net/hackndev/?rev=1085&view=rev Author: z72ka Date: 2007-06-27 01:23:55 -0700 (Wed, 27 Jun 2007) Log Message: ----------- palmz72: Moving backlight definitions to header and fixed values (dumped by HARET) for PWM instead old totally wrong values. Modified Paths: -------------- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-init.h Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-init.h =================================================================== --- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-init.h 2007-06-27 08:03:31 UTC (rev 1084) +++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmz72-init.h 2007-06-27 08:23:55 UTC (rev 1085) @@ -20,9 +20,11 @@ // BACKLIGHT -#define PALMZ72_MAX_INTENSITY 0x100 +#define PALMZ72_MAX_INTENSITY 0xFE #define PALMZ72_DEFAULT_INTENSITY 0x7E #define PALMZ72_LIMIT_MASK 0x7F +#define PALMZ72_PRESCALER 0x3F +#define PALMZ72_PERIOD 0x112 // BATTERY This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sle...@us...> - 2007-06-27 08:03:36
|
Revision: 1084 http://svn.sourceforge.net/hackndev/?rev=1084&view=rev Author: sleep_walker Date: 2007-06-27 01:03:31 -0700 (Wed, 27 Jun 2007) Log Message: ----------- palmtt3: suspend/resume fix backported to OUR 2.6.20 tsc2101 version, made up-to-date Modified Paths: -------------- linux4palm/linux/trunk/drivers/mfd/tsc2101.c linux4palm/linux/trunk/drivers/mfd/tsc2101.h Modified: linux4palm/linux/trunk/drivers/mfd/tsc2101.c =================================================================== --- linux4palm/linux/trunk/drivers/mfd/tsc2101.c 2007-06-27 05:35:39 UTC (rev 1083) +++ linux4palm/linux/trunk/drivers/mfd/tsc2101.c 2007-06-27 08:03:31 UTC (rev 1084) @@ -11,42 +11,579 @@ * */ +#define DEBUG + #include <linux/delay.h> #include <linux/device.h> #include <linux/init.h> #include <linux/input.h> #include <linux/interrupt.h> +#include <linux/irq.h> #include <linux/module.h> #include <linux/slab.h> -#include <linux/soc/tsc2101.h> -#include <linux/irq.h> +#include <linux/soc/tsc2101.h> #include <linux/platform_device.h> +#include <sound/control.h> +#include <asm/arch/pxa-regs.h> +#include <asm/arch/irqs.h> #include "tsc2101.h" +#include <asm/arch/tps65010.h> -extern void tsc2101_ts_setup(struct platform_device *dev); -extern void tsc2101_ts_report(struct tsc2101_data *devdata, int x, int y, int p, int pendown); +// VF +#include <linux/platform_device.h> -static int tsc2101_regread(struct tsc2101_data *devdata, int regnum) +#include "../../sound/arm/pxa2xx-i2sound.h" + +static u32 tsc2101_regread(struct tsc2101_data *devdata, int regnum) { - int reg; + u32 reg; devdata->platform->send(TSC2101_READ, regnum, ®, 1); return reg; } -static void tsc2101_regwrite(struct tsc2101_data *devdata, int regnum, int value) +static void tsc2101_regwrite(struct tsc2101_data *devdata, int regnum, u32 value) { - int reg=value; + u32 reg; + devdata->platform->send(TSC2101_READ, regnum, ®, 1); + /*if(((regnum >> 11) & 0x0f) == 2) + { + printk("Changing %X: %04X to %04X\n", regnum, reg, value); + }*/ + reg = value; devdata->platform->send(TSC2101_WRITE, regnum, ®, 1); return; } - +/* static int tsc2101_ts_penup(struct tsc2101_data *devdata) { return !( tsc2101_regread(devdata, TSC2101_REG_STATUS) & TSC2101_STATUS_DAVAIL); } - +*/ #define TSC2101_ADC_DEFAULT (TSC2101_ADC_RES(TSC2101_ADC_RES_12BITP) | TSC2101_ADC_AVG(TSC2101_ADC_4AVG) | TSC2101_ADC_CL(TSC2101_ADC_CL_1MHZ_12BIT) | TSC2101_ADC_PV(TSC2101_ADC_PV_500us) | TSC2101_ADC_AVGFILT_MEAN) +/* + * Sound part + */ + +#define LIV_MAX 0x7F +#define VOLtoTSC(x) ((x * LIV_MAX) / 100) +#define TSCtoVOL(x) ((x * 100) / LIV_MAX) + +static struct tsc2101_data *snd_data; +static u8 flags; + +static void tsc2101_set_route(void) +{ + u32 reg; + + reg = tsc2101_regread(snd_data, TSC2101_REG_AUDIOCON7); + + if(reg & TSC2101_HDDETFL) //Headphones + { + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON5, TSC2101_DAC2SPK1(1) | TSC2101_DAC2SPK2(2) | TSC2101_MUTSPK1 | TSC2101_MUTSPK2); + + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON6, TSC2101_MUTCELL | TSC2101_MUTLSPK | TSC2101_LDSCPTC | TSC2101_CAPINTF); + + flags |= FLAG_HEADPHONES; + } + else //Loudspeaker + { + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON5, TSC2101_DAC2SPK1(3) | TSC2101_MUTSPK1 | TSC2101_MUTSPK2); + + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON6, TSC2101_MUTCELL | TSC2101_SPL2LSK | TSC2101_LDSCPTC | TSC2101_CAPINTF); + + flags &= ~FLAG_HEADPHONES; + } +} + +static irqreturn_t tsc2101_headset_int(int irq, void *dev_id) +{ + tsc2101_set_route(); + return IRQ_HANDLED; +} + +static int tsc2101_snd_activate(void) { + u32 data; + + if(snd_data == NULL) + return 1; + + snd_pxa2xx_i2sound_i2slink_get(); + + tsc2101_regwrite(snd_data, TSC2101_REG_PWRDOWN, 0xFFFC); //power down whole codec + + /*Mute Analog Sidetone */ + /*Select MIC_INHED input for headset */ + /*Cell Phone In not connected */ + tsc2101_regwrite(snd_data, TSC2101_REG_MIXERPGA, + TSC2101_ASTMU | TSC2101_ASTG(0x45) | TSC2101_MICADC | TSC2101_MICSEL(1) ); + + /* ADC, DAC, Analog Sidetone, cellphone, buzzer softstepping enabled */ + /* 1dB AGC hysteresis */ + /* MICes bias 2V */ + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON4, TSC2101_MB_HED(0) | TSC2101_MB_HND | TSC2101_ADSTPD | + TSC2101_DASTPD | TSC2101_ASSTPD | TSC2101_CISTPD | TSC2101_BISTPD ); + + /* Set codec output volume */ + tsc2101_regwrite(snd_data, TSC2101_REG_DACPGA, ~(TSC2101_DALMU | TSC2101_DARMU) ); + + /* OUT8P/N muted, CPOUT muted */ + + /* Headset/Hook switch detect disabled */ + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON7, TSC2101_DETECT | TSC2101_HDDEBNPG(2) | TSC2101_DGPIO2); + + /*Mic support*/ + tsc2101_regwrite(snd_data, TSC2101_REG_MICAGC, TSC2101_MMPGA(0) | TSC2101_MDEBNS(0x03) | TSC2101_MDEBSN(0x03) ); + + + //Hack - PalmOS sets that, so cleaning it + tsc2101_regwrite(snd_data, TSC2101_REG_HEADSETPGA, 0x0000); + + data = request_irq (IRQ_GPIO(55), tsc2101_headset_int, SA_SAMPLE_RANDOM, "TSC2101 Headphones", (void*)55); + set_irq_type (IRQ_GPIO(55), IRQT_RISING); + + if(data) + return data; + + tsc2101_set_route(); + return 0; +} + +static void tsc2101_snd_deactivate(void) { + snd_pxa2xx_i2sound_i2slink_free(); + free_irq(IRQ_GPIO(55), (void*) 55); +} +// FIXME - is it really suspend == deactivate? +static int tsc2101_snd_suspend(pm_message_t state) { + tsc2101_snd_deactivate(); + return 0; +} + +static int tsc2101_snd_resume(void) { + tsc2101_snd_activate(); + return 0; +} + + +static int tsc2101_snd_set_rate(unsigned int rate) { + uint div, fs_44; + u32 data; + + printk("Rate: %d ", rate); + + if (rate >= 48000) + { div = 7; fs_44 = 1; } + else if (rate >= 44100) + { div = 7; fs_44 = 0; } + else if (rate >= 32000) + { div = 6; fs_44 = 1; } + else if (rate >= 29400) + { div = 6; fs_44 = 0; } + else if (rate >= 24000) + { div = 5; fs_44 = 1; } + else if (rate >= 22050) + { div = 5; fs_44 = 0; } + else if (rate >= 16000) + { div = 4; fs_44 = 1; } + else if (rate >= 14700) + { div = 4; fs_44 = 0; } + else if (rate >= 12000) + { div = 3; fs_44 = 1; } + else if (rate >= 11025) + { div = 3; fs_44 = 0; } + else if (rate >= 9600) + { div = 2; fs_44 = 1; } + else if (rate >= 8820) + { div = 2; fs_44 = 0; } + else if (rate >= 8727) + { div = 1; fs_44 = 1; } + else if (rate >= 8018) + { div = 1; fs_44 = 0; } + else if (rate >= 8000) + { div = 0; fs_44 = 1; } + else + { div = 0; fs_44 = 0; } + + /* wait for any frame to complete */ + udelay(125); + + /* Set AC1 */ + data = tsc2101_regread(snd_data, TSC2101_REG_AUDIOCON1); + /*Clear prev settings */ + data &= ~(TSC2101_DACFS(0xF) | TSC2101_ADCFS(0xF)); + data |= TSC2101_DACFS(div) | TSC2101_ADCFS(div); + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON1, data); + + /* Set the AC3 */ + data = tsc2101_regread(snd_data, TSC2101_REG_AUDIOCON3); + /*Clear prev settings */ + data &= ~(TSC2101_REFFS | TSC2101_SLVMS); + + data |= fs_44 ? TSC2101_REFFS : 0; + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON3, data); + + + /* program the PLLs */ + if (fs_44) { + /* 44.1 khz - 12 MHz Mclk */ + printk("selected 44.1khz PLL\n"); + tsc2101_regwrite(snd_data, TSC2101_REG_PLL1, TSC2101_PLL_ENABLE | TSC2101_PLL_PVAL(2) | TSC2101_PLL_JVAL(7)); + tsc2101_regwrite(snd_data, TSC2101_REG_PLL2, TSC2101_PLL2_DVAL(5740)); + } else { + /* 48 khz - 12 Mhz Mclk */ + printk("selected 48khz PLL\n"); + tsc2101_regwrite(snd_data, TSC2101_REG_PLL1, TSC2101_PLL_ENABLE | TSC2101_PLL_PVAL(1) | TSC2101_PLL_JVAL(8)); + tsc2101_regwrite(snd_data, TSC2101_REG_PLL2, TSC2101_PLL2_DVAL(1920)); + } + + return 0; +} + +static int tsc2101_snd_open_stream(int stream) { + u32 reg, pwdn; + + reg = tsc2101_regread(snd_data, TSC2101_REG_AUDIOCON5); + + if(stream == SNDRV_PCM_STREAM_PLAYBACK) { + if(flags & FLAG_HEADPHONES) { + reg &= ~(TSC2101_MUTSPK1 | TSC2101_MUTSPK2); + pwdn = TSC2101_MBIAS_HND | + TSC2101_MBIAS_HED | + TSC2101_ASTPWD | + TSC2101_ADPWDN | + TSC2101_VGPWDN | + TSC2101_COPWDN | + TSC2101_LSPWDN; + } else { + reg |= (TSC2101_MUTSPK1 | TSC2101_MUTSPK2); + pwdn = TSC2101_MBIAS_HND | + TSC2101_MBIAS_HED | + TSC2101_ASTPWD | + TSC2101_SPI1PWDN | + TSC2101_SPI2PWDN | + TSC2101_VGPWDN | + TSC2101_COPWDN; + } + + } else { + pwdn = TSC2101_ASTPWD | + TSC2101_MBIAS_HED | + TSC2101_DAPWDN | + TSC2101_SPI1PWDN | + TSC2101_SPI2PWDN | + TSC2101_VGPWDN | + TSC2101_COPWDN | + TSC2101_LSPWDN; + } + + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON5, reg); + tsc2101_regwrite(snd_data, TSC2101_REG_PWRDOWN, pwdn); + return 0; +} + +static void tsc2101_snd_close_stream(int stream) { + u32 reg; + + if(flags & FLAG_HEADPHONES) { + reg = tsc2101_regread(snd_data, TSC2101_REG_AUDIOCON5); + reg |= TSC2101_MUTSPK1 | TSC2101_MUTSPK2; + tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON5, reg); + } + + tsc2101_regwrite(snd_data, TSC2101_REG_PWRDOWN, + ~(TSC2101_EFFCTL) ); +} + +static int __pcm_playback_volume_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; + uinfo->count = 2; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 100; + return 0; +} + +/* + * Alsa mixer interface function for getting the volume read from the DGC in a + * 0 -100 alsa mixer format. + */ +static int __pcm_playback_volume_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_DACPGA); + + ucontrol->value.integer.value[0] = 100 - TSCtoVOL(TSC2101_DALVLI(val) ); + ucontrol->value.integer.value[1] = 100 - TSCtoVOL(TSC2101_DARVLI(val) ); + + return 0; +} + +static int __pcm_playback_volume_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread (snd_data, TSC2101_REG_DACPGA); + + val &= ~(TSC2101_DALVL(0xFF) | TSC2101_DARVL(0xFF) ); + val |= TSC2101_DALVL(VOLtoTSC(100 - ucontrol->value.integer.value[0] ) - 2 ); + val |= TSC2101_DARVL(VOLtoTSC(100 - ucontrol->value.integer.value[1] ) - 2 ); + + tsc2101_regwrite(snd_data, TSC2101_REG_DACPGA, val); + return 2; +} + +static int __pcm_playback_switch_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; + uinfo->count = 2; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 1; + return 0; +} + +/* + * When DGC_DALMU (bit 15) is 1, the left channel is muted. + * When DGC_DALMU is 0, left channel is not muted. + * Same logic apply also for the right channel. + */ +static int __pcm_playback_switch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread (snd_data, TSC2101_REG_DACPGA); + + ucontrol->value.integer.value[0] = !(val & TSC2101_DALMU); + ucontrol->value.integer.value[1] = !(val & TSC2101_DARMU); + return 0; +} + +static int __pcm_playback_switch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_DACPGA); + + // in alsa mixer 1 --> on, 0 == off. In tsc2101 registry 1 --> off, 0 --> on + // so if values are same, it's time to change the registry value. + if (!ucontrol->value.integer.value[0]) + val |= TSC2101_DALMU; // mute --> turn bit on + else + val &= ~TSC2101_DALMU; // unmute --> turn bit off + /* L */ + + if (!ucontrol->value.integer.value[1]) + val |= TSC2101_DARMU; // mute --> turn bit on + else + val &= ~TSC2101_DARMU; // unmute --> turn bit off + /* R */ + + tsc2101_regwrite(snd_data, TSC2101_REG_DACPGA, val); + return 2; +} + +static int __headset_playback_volume_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; + uinfo->count = 1; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 100; + return 0; +} + +static int __headset_playback_volume_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HEADSETPGA); + + ucontrol->value.integer.value[0] = TSCtoVOL(TSC2101_ADPGA_HEDI(val) ); + return 0; +} + +static int __headset_playback_volume_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HEADSETPGA); + + val &= ~TSC2101_ADPGA_HED(0xFF); + val |= TSC2101_ADPGA_HED(VOLtoTSC(ucontrol->value.integer.value[0] ) ); + + tsc2101_regwrite(snd_data, TSC2101_REG_HEADSETPGA, val); + return 1; +} + +static int __headset_playback_switch_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; + uinfo->count = 1; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 1; + return 0; +} + +static int __headset_playback_switch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HEADSETPGA); + + ucontrol->value.integer.value[0] = !(val & TSC2101_ADMUT_HED); + return 0; +} + + // in alsa mixer 1 --> on, 0 == off. In tsc2101 registry 1 --> off, 0 --> on + // so if values are same, it's time to change the registry value... +static int __headset_playback_switch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HEADSETPGA); + + if (!ucontrol->value.integer.value[0]) + val = val | TSC2101_ADMUT_HED; // mute --> turn bit on + else + val = val & ~TSC2101_ADMUT_HED; // unmute --> turn bit off + + tsc2101_regwrite(snd_data, TSC2101_REG_HEADSETPGA, val); + return 1; +} + +static int __handset_playback_volume_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; + uinfo->count = 1; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 100; + return 0; +} + +static int __handset_playback_volume_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HANDSETPGA); + + ucontrol->value.integer.value[0] = TSCtoVOL(TSC2101_ADPGA_HNDI(val) ); + return 0; +} + +static int __handset_playback_volume_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HANDSETPGA); + + val &= ~TSC2101_ADPGA_HND(0xFF); + val |= TSC2101_ADPGA_HND(VOLtoTSC(ucontrol->value.integer.value[0] ) ); + + tsc2101_regwrite(snd_data, TSC2101_REG_HANDSETPGA, val); + return 1; +} + +static int __handset_playback_switch_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; + uinfo->count = 1; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 1; + return 0; +} + +static int __handset_playback_switch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HANDSETPGA); + + ucontrol->value.integer.value[0] = !(val & TSC2101_ADMUT_HND); + return 0; +} + + // in alsa mixer 1 --> on, 0 == off. In tsc2101 registry 1 --> off, 0 --> on + // so if values are same, it's time to change the registry value... +static int __handset_playback_switch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { + u32 val = tsc2101_regread(snd_data, TSC2101_REG_HANDSETPGA); + + if (!ucontrol->value.integer.value[0]) + val = val | TSC2101_ADMUT_HND; // mute --> turn bit on + else + val = val & ~TSC2101_ADMUT_HND; // unmute --> turn bit off + + tsc2101_regwrite(snd_data, TSC2101_REG_HANDSETPGA, val); + return 1; +} + +static struct snd_kcontrol_new tsc2101_control[] __devinitdata={ + { + .name = "PCM Playback Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __pcm_playback_volume_info, + .get = __pcm_playback_volume_get, + .put = __pcm_playback_volume_put, + }, { + .name = "PCM Playback Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 0, + .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __pcm_playback_switch_info, + .get = __pcm_playback_switch_get, + .put = __pcm_playback_switch_put, + }, { + .name = "Not Used Headset Input Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 1, + .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __headset_playback_volume_info, + .get = __headset_playback_volume_get, + .put = __headset_playback_volume_put, + }, { + .name = "Not Used Headset Input Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 1, + .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __headset_playback_switch_info, + .get = __headset_playback_switch_get, + .put = __headset_playback_switch_put, + }, { + .name = "Handset Input Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 2, + .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __handset_playback_volume_info, + .get = __handset_playback_volume_get, + .put = __handset_playback_volume_put, + }, { + .name = "Handset Input Switch", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .index = 2, + .access= SNDRV_CTL_ELEM_ACCESS_READWRITE, + .info = __handset_playback_switch_info, + .get = __handset_playback_switch_get, + .put = __handset_playback_switch_put, + } +}; + +static int tsc2101_snd_add_mixer_controls(struct snd_card *acard) { + int i; + int err = 0; + + for (i = 0; i < ARRAY_SIZE(tsc2101_control); i++) { + if ((err = snd_ctl_add(acard, snd_ctl_new1(&tsc2101_control[i], acard ) ) ) < 0) { + return err; + } + } + + return 0; +} + +static struct snd_pxa2xx_i2sound_board tsc2101_audio = { + .name = "tsc2101 Audio", + .desc = "TI tsc2101 Audio driver", + .acard_id = "tsc2101", + .info = SND_PXA2xx_I2SOUND_INFO_CAN_CAPTURE | SND_PXA2xx_I2SOUND_INFO_CLOCK_FROM_PXA | + SND_PXA2xx_I2SOUND_INFO_SYSCLOCK_DISABLE, + .activate = tsc2101_snd_activate, + .deactivate = tsc2101_snd_deactivate, + .set_rate = tsc2101_snd_set_rate, + .open_stream = tsc2101_snd_open_stream, + .close_stream = tsc2101_snd_close_stream, + .add_mixer_controls = tsc2101_snd_add_mixer_controls, + + .streams_hw = { + { + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | + SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | + SNDRV_PCM_RATE_48000, + .rate_min = 8000, + .rate_max = 48000, + }, + { + .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | + SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | + SNDRV_PCM_RATE_48000, + .rate_min = 8000, + .rate_max = 48000, + } + }, +#ifdef CONFIG_PM + .suspend = tsc2101_snd_suspend, + .resume = tsc2101_snd_resume, +#endif +}; + + +/* + * Touchscreen part + */ + +extern void tsc2101_ts_setup(struct platform_device *dev); +extern void tsc2101_ts_report(struct tsc2101_data *devdata, int x, int y, int p, int pendown); + static void tsc2101_readdata(struct tsc2101_data *devdata, struct tsc2101_ts_event *ts_data) { int z1,z2,fixadc=0; @@ -142,7 +679,7 @@ tsc2101_regwrite(devdata, TSC2101_REG_ADC, 0x4000); } -static void ts_interrupt_main(struct tsc2101_data *devdata, int isTimer) +static void ts_interrupt_main(struct tsc2101_data *devdata, int isTimer, struct pt_regs *regs) { unsigned long flags; struct tsc2101_ts_event ts_data; @@ -181,7 +718,7 @@ { struct tsc2101_data *devdata = (struct tsc2101_data *) data; - ts_interrupt_main(devdata, 1); + ts_interrupt_main(devdata, 1, NULL); } static irqreturn_t tsc2101_handler(int irq, void *dev_id) @@ -189,7 +726,7 @@ struct tsc2101_data *devdata = dev_id; set_irq_type(devdata->platform->irq,IRQT_NOEDGE); - ts_interrupt_main(devdata, 0); + ts_interrupt_main(devdata, 0, NULL); return IRQ_HANDLED; } @@ -238,15 +775,16 @@ printk(KERN_ERR "TSC2101 Temp2: %04x\n",devdata->miscdata.temp2); } +#ifdef CONFIG_PM + static int tsc2101_suspend(struct platform_device *dev, pm_message_t state) { struct tsc2101_data *devdata = platform_get_drvdata(dev); -/* comment this out like in old driver, it's sick though */ -/* if (level == SUSPEND_POWER_DOWN) { */ +// if (level == SUSPEND_POWER_DOWN) { tsc2101_ts_disable(devdata); devdata->platform->suspend(); -/* } */ +// } return 0; } @@ -255,17 +793,20 @@ { struct tsc2101_data *devdata = platform_get_drvdata(dev); -/* comment this out like in old driver, it's sick though */ -/* if (level == RESUME_POWER_ON) { */ +// if (level == RESUME_POWER_ON) { devdata->platform->resume(); tsc2101_ts_enable(devdata); -/* } */ +// } return 0; } +#else +#define tsc2101_suspend NULL +#define tsc2101_resume NULL +#endif -static int tsc2101_probe(struct platform_device *dev) +static int __init tsc2101_probe(struct platform_device *dev) { struct tsc2101_data *devdata; struct tsc2101_ts_event ts_data; @@ -301,11 +842,13 @@ mod_timer(&(devdata->misc_timer), jiffies + HZ); + /* Sound driver */ + snd_data = devdata; return 0; } -static int tsc2101_remove(struct platform_device *dev) +static int __exit tsc2101_remove(struct platform_device *dev) { struct tsc2101_data *devdata = platform_get_drvdata(dev); @@ -315,6 +858,7 @@ input_unregister_device(devdata->inputdevice); tsc2101_ts_disable(devdata); kfree(devdata); + return 0; } @@ -322,9 +866,10 @@ .driver = { .name = "tsc2101", .owner = THIS_MODULE, + .bus = &platform_bus_type, }, -/* .bus = &platform_bus_type, */ .probe = tsc2101_probe, +/* .remove = __exit_p(tsc2101_remove),*/ .remove = tsc2101_remove, .suspend = tsc2101_suspend, .resume = tsc2101_resume, @@ -332,12 +877,19 @@ static int __init tsc2101_init(void) { - return platform_driver_register(&tsc2101_driver); + int ret; + ret = platform_driver_register(&tsc2101_driver); + /* Sound driver */ + snd_pxa2xx_i2sound_card_activate(&tsc2101_audio); + return ret; } static void __exit tsc2101_exit(void) { platform_driver_unregister(&tsc2101_driver); + + /* Sound driver */ + snd_pxa2xx_i2sound_card_deactivate(); } module_init(tsc2101_init); Modified: linux4palm/linux/trunk/drivers/mfd/tsc2101.h =================================================================== --- linux4palm/linux/trunk/drivers/mfd/tsc2101.h 2007-06-27 05:35:39 UTC (rev 1083) +++ linux4palm/linux/trunk/drivers/mfd/tsc2101.h 2007-06-27 08:03:31 UTC (rev 1084) @@ -72,7 +72,7 @@ #define TSC2101_REG_MICAGC TSC2101_P2_REG(0x26) #define TSC2101_REG_CELLAGC TSC2101_P2_REG(0x27) -/* Page 2 Registers */ +/* Page 3 Registers */ #define TSC2101_REG_BUFLOC(x) TSC2101_P3_REG(x) /* Status Register Masks */ @@ -152,3 +152,81 @@ #define TSC2101_KEY_SCS (1<<14) // keypad scan status +/* Sound */ +#define TSC2101_DACFS(x) ((x & 0x07) << 3) +#define TSC2101_ADCFS(x) (x & 0x07) +#define TSC2101_REFFS (1 << 13) +#define TSC2101_DAXFM (1 << 12) +#define TSC2101_SLVMS (1 << 11) +#define TSC2101_PLL_ENABLE (1 << 15) +#define TSC2101_PLL_QVAL(x) (x << 11) +#define TSC2101_PLL_PVAL(x) (x << 8) +#define TSC2101_PLL_JVAL(x) (x << 2) +#define TSC2101_PLL2_DVAL(x) (x << 2) + +#define TSC2101_ADMUT_HED (1 << 15) +#define TSC2101_ADPGA_HED(x) ((x & 0x7F) << 8) +#define TSC2101_ADPGA_HEDI(x) ((x >> 8) & 0x7F) + +#define TSC2101_ADMUT_HND (1 << 15) +#define TSC2101_ADPGA_HND(x) ((x & 0x7F) << 8) +#define TSC2101_ADPGA_HNDI(x) ((x >> 8) & 0x7F) + +#define TSC2101_DALMU (1 << 15) +#define TSC2101_DALVL(x) (((x) & 0x7F) << 8) +#define TSC2101_DALVLI(x) (((x) >> 8) & 0x7F) +#define TSC2101_DARMU (1 << 7) +#define TSC2101_DARVL(x) ((x) & 0x7F) +#define TSC2101_DARVLI(x) ((x) & 0x7F) + +#define TSC2101_ASTMU (1 << 15) +#define TSC2101_ASTG(x) (x << 8) +#define TSC2101_MICADC (1 << 4) +#define TSC2101_MICSEL(x) (x << 5) +#define TSC2101_MB_HED(x) ((x & 0x02) << 7) +#define TSC2101_MB_HND (1 << 6) +#define TSC2101_ADSTPD (1 << 15) +#define TSC2101_DASTPD (1 << 14) +#define TSC2101_ASSTPD (1 << 13) +#define TSC2101_CISTPD (1 << 12) +#define TSC2101_BISTPD (1 << 11) +#define TSC2101_DAC2SPK1(x) ((x & 0x03) << 13) +#define TSC2101_DAC2SPK2(x) ((x & 0x03) << 7) +#define TSC2101_AST2SPK1 (1 << 12) +#define TSC2101_AST2SPK2 (1 << 6) +#define TSC2101_KCL2SPK1 (1 << 10) +#define TSC2101_KCL2SPK2 (1 << 4) +#define TSC2101_HDSCPTC (1 << 0) + +#define TSC2101_MUTLSPK (1 << 7) +#define TSC2101_MUTCELL (1 << 6) +#define TSC2101_LDSCPTC (1 << 5) +#define TSC2101_VGNDSCPTC (1 << 4) +#define TSC2101_CAPINTF (1 << 3) +#define TSC2101_SPL2LSK (1 << 15) + +#define TSC2101_HDDETFL (1 << 12) +#define TSC2101_MUTSPK1 (1 << 2) +#define TSC2101_MUTSPK2 (1 << 1) + +#define TSC2101_DETECT (1 << 15) +#define TSC2101_HDDEBNPG(x) ((x & 0x03) << 9) +#define TSC2101_DGPIO2 (1 << 4) + +#define TSC2101_MBIAS_HND (1 << 15) +#define TSC2101_MBIAS_HED (1 << 14) +#define TSC2101_ASTPWD (1 << 13) +#define TSC2101_SPI1PWDN (1 << 12) +#define TSC2101_SPI2PWDN (1 << 11) +#define TSC2101_DAPWDN (1 << 10) +#define TSC2101_ADPWDN (1 << 9) +#define TSC2101_VGPWDN (1 << 8) +#define TSC2101_COPWDN (1 << 7) +#define TSC2101_LSPWDN (1 << 6) +#define TSC2101_EFFCTL (1 << 1) + +#define TSC2101_MMPGA(x) ((x & 0x7F) << 9) +#define TSC2101_MDEBNS(x) ((x & 0x07) << 6) +#define TSC2101_MDEBSN(x) ((x & 0x07) << 3) + +#define FLAG_HEADPHONES 0x01 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-27 05:35:49
|
Revision: 1083 http://svn.sourceforge.net/hackndev/?rev=1083&view=rev Author: happy-slapin Date: 2007-06-26 22:35:39 -0700 (Tue, 26 Jun 2007) Log Message: ----------- OV9640: Fixed crash and several typos Modified Paths: -------------- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c Added Paths: ----------- linux4palm/linux/trunk/drivers/i2c/chips/ov9640_hw.h Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 16:32:57 UTC (rev 1082) +++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-27 05:35:39 UTC (rev 1083) @@ -9,6 +9,7 @@ #include <asm/arch/palmz72-gpio.h> #include "i2c-ov9640.h" +#include "ov9640_hw.h" #define DEBUG 1 #define DPRINTK(fmt,args...) do { if (DEBUG) printk("in function %s "fmt,__FUNCTION__,##args);} while(0) @@ -30,7 +31,7 @@ extern struct i2c_adapter *i2cdev_adaps[]; struct i2c_client *g_client = NULL; -static unsigned short normal_i2c[] = {0x5d, OV9640_SLAVE_ADDR ,I2C_CLIENT_END }; +static unsigned short normal_i2c[] = {0x14, 0x50, 0x52, 0x54, 0x56, 0x5e, OV9640_SLAVE_ADDR ,I2C_CLIENT_END }; /* static unsigned short normal_i2c_range[] = { I2C_CLIENT_END }; */ I2C_CLIENT_INSMOD; @@ -79,6 +80,8 @@ if( g_client == NULL ) return -1; p = i2c_get_clientdata(g_client); + if(!p) + return -1; down(&p->update_lock); res = i2c_master_send(g_client, buf, 2); up(&p->update_lock); @@ -129,6 +132,7 @@ { struct i2c_client *new_client; int err = 0; + char res = -1; struct ov9640_data *data; /*check if */ @@ -154,20 +158,25 @@ need it, remove it. We do it here to help to lessen memory fragmentation. */ - new_client=kzalloc(sizeof(struct i2c_client)+sizeof(struct ov9640_data), - GFP_KERNEL ); + new_client=kzalloc(sizeof(struct i2c_client), GFP_KERNEL); if ( !new_client ) { err = -ENOMEM; goto ERROR0; } + data=kzalloc(sizeof(struct ov9640_data), GFP_KERNEL ); - data = (struct ov9640_data *) (new_client + 1); + if ( !new_client ) { + err = -ENOMEM; + goto ERROR0; + } + new_client->addr = address; - i2c_set_clientdata(new_client, data); new_client->adapter = adapter; new_client->driver = &ov9640_driver; new_client->flags = 0; + init_MUTEX(&data->update_lock); + i2c_set_clientdata(new_client, data); g_client = new_client; ov9640_power_down(0); @@ -177,6 +186,10 @@ /* First, the generic detection (if any), that is skipped if any force parameter was used. */ + mdelay(2000); + ov9640_read(REV,&res); + /* The below is of course bogus */ + DPRINTK("I2C: Probe ov9640 chip..addr=0x%x, REV=%d, res=0x%x\n", address, REV, res); if (kind <= 0) { char res = -1; @@ -201,8 +214,6 @@ /* Only if you use this field */ data->valid = 0; - /* Only if you use this field */ - init_MUTEX(&data->update_lock); /* Tell the i2c layer a new client has arrived */ if ((err = i2c_attach_client(new_client))) @@ -301,7 +312,7 @@ { u8 regValue; regValue = 0x80; - ov9640_write(OV9640_COM7, ®Value); + ov9640_write(OV9640_COM7, regValue); mdelay(10); return; } @@ -354,10 +365,11 @@ return res; } ov9640_initialized ++; - if(g_client != NULL) + if(g_client != NULL) { DPRINTK("I2C: driver for device %s registed!.\n", g_client->name); - else + } else { DPRINTK("I2C: driver for device unregisted!.\n"); + } return 0; } Added: linux4palm/linux/trunk/drivers/i2c/chips/ov9640_hw.h =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/ov9640_hw.h (rev 0) +++ linux4palm/linux/trunk/drivers/i2c/chips/ov9640_hw.h 2007-06-27 05:35:39 UTC (rev 1083) @@ -0,0 +1,222 @@ +/* + ov9640_hw - Omnivision 9640 CMOS sensor driver + + Copyright (C) 2003, Intel Corporation + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef _OV_9640_HW_H_ +#define _OV_9640_HW_H_ + +/*********************************************************************** + * + * Constants & Structures + * + ***********************************************************************/ +// Revision constants +#define PID_OV 0x96 +#define PID_9640 0x48 + +#define PID_OV_v3 0x96 +#define PID_9640_v3 0x49 + +// Return codes +#define OV_ERR_NONE 0x00 +#define OV_ERR_TIMEOUT -1 +#define OV_ERR_PARAMETER -2 +#define OV_COMM_ERR -3 + +#define CIBR0_PHY (0x50000000 + 0x28) +#define CIBR1_PHY (0x50000000 + 0x30) +#define CIBR2_PHY (0x50000000 + 0x38) +#define DPRINTK(fmt,args...) do { if (DEBUG) printk("in function %s "fmt,__FUNCTION__,##args);} while(0) + +// Output Size & Format +/* +#define OV_SIZE_NONE 0 +#define OV_SIZE_QQVGA 0x01 +#define OV_SIZE_QVGA ( OV_SIZE_QQVGA << 1 ) +#define OV_SIZE_VGA ( OV_SIZE_QQVGA << 2 ) +#define OV_SIZE_SXGA ( OV_SIZE_QQVGA << 3 ) +#define OV_SIZE_QQCIF 0x10 +#define OV_SIZE_QCIF ( OV_SIZE_QQCIF << 1 ) +#define OV_SIZE_CIF ( OV_SIZE_QQCIF << 2 ) +#define OV_FORMAT_NONE 0 +#define OV_FORMAT_YUV_422 1 +#define OV_FORMAT_RGB_565 2 +*/ +enum OV_SIZE { + OV_SIZE_NONE=0 , + OV_SIZE_QQVGA , + OV_SIZE_QVGA , + OV_SIZE_VGA , + OV_SIZE_SXGA , + OV_SIZE_QQCIF , + OV_SIZE_QCIF , + OV_SIZE_CIF +}; +enum OV_FORMAT { + OV_FORMAT_NONE=0 , + OV_FORMAT_YUV_422, + OV_FORMAT_RGB_565, +}; + +// Camera Mode +#define VIEWFINDER_MODE 0x10 +#define STILLFRAME_MODE 0x20 + +// Others +#define OV9640_TIMEOUT 1000 // ms to timeout. + +// OV9640 Register Definitions +#define OV9640_GAIN 0x0000 +#define OV9640_BLUE 0x0001 +#define OV9640_RED 0x0002 +#define OV9640_VREF 0x0003 +#define OV9640_COM1 0x0004 +#define OV9640_BAVE 0x0005 // U/B Average Level +#define OV9640_GEAVE 0x0006 // Y/Ge Average Level +#define OV9640_GOAVE 0x0007 // Y/Go Average Level +#define OV9640_RAVE 0x0008 // V/R Average level +#define OV9640_COM2 0x0009 // Common control 2 +#define OV9640_PID 0x000A // Product ID +#define OV9640_VER 0x000B // Version +#define OV9640_COM3 0x000C +#define OV9640_COM4 0x000D +#define OV9640_COM5 0x000E +#define OV9640_COM6 0x000F +#define OV9640_AECH 0x0010 +#define OV9640_CLKRC 0x0011 +#define OV9640_COM7 0x0012 +#define OV9640_COM8 0x0013 +#define OV9640_COM9 0x0014 +#define OV9640_COM10 0x0015 +#define OV9640_WS 0x0016 +#define OV9640_HSTART 0x0017 +#define OV9640_HSTOP 0x0018 +#define OV9640_VSTRT 0x0019 +#define OV9640_VSTOP 0x001A +#define OV9640_PSHFT 0x001B +#define OV9640_MIDH 0x001C +#define OV9640_MIDL 0x001D +#define OV9640_DLY 0x001E +#define OV9640_LAEC 0x001F +#define OV9640_BOS 0x0020 +#define OV9640_GBOS 0x0021 +#define OV9640_GROS 0x0022 +#define OV9640_ROS 0x0023 +#define OV9640_AEW 0x0024 +#define OV9640_AEB 0x0025 +#define OV9640_VPT 0x0026 +#define OV9640_BBIAS 0x0027 +#define OV9640_GbBIAS 0x0028 +#define OV9640_GrBIAS 0x0029 +#define OV9640_EXHCH 0x002A +#define OV9640_EXHCL 0x002B +#define OV9640_RBIAS 0x002C +#define OV9640_ADVFL 0x002D +#define OV9640_ADVFH 0x002E +#define OV9640_YAVE 0x002F +#define OV9640_HSYST 0x0030 +#define OV9640_HSYEN 0x0031 +#define OV9640_HREF 0x0032 +#define OV9640_CHLF 0x0033 +#define OV9640_ARBLM 0x0034 +#define OV9640_VRHL 0x0035 +#define OV9640_VIDO 0x0036 +#define OV9640_ADC 0x0037 +#define OV9640_ACOM 0x0038 +#define OV9640_OFON 0x0039 +#define OV9640_TSLB 0x003A +#define OV9640_COM11 0x003B +#define OV9640_COM12 0x003C +#define OV9640_COM13 0x003D +#define OV9640_COM14 0x003E +#define OV9640_EDGE 0x003F +#define OV9640_COM15 0x0040 +#define OV9640_COM16 0x0041 +#define OV9640_COM17 0x0042 +#define OV9640_AWBTH1 0x0043 +#define OV9640_AWBTH2 0x0044 +#define OV9640_AWBTH3 0x0045 +#define OV9640_AWBTH4 0x0046 +#define OV9640_AWBTH5 0x0047 +#define OV9640_AWBTH6 0x0048 +#define OV9640_MTX1 0x004F +#define OV9640_MTX2 0x0050 +#define OV9640_MTX3 0x0051 +#define OV9640_MTX4 0x0052 +#define OV9640_MTX5 0x0053 +#define OV9640_MTX6 0x0054 +#define OV9640_MTX7 0x0055 +#define OV9640_MTX8 0x0056 +#define OV9640_MTX9 0x0057 +#define OV9640_MTXS 0x0058 +#define OV9640_AWBC1 0x0059 +#define OV9640_AWBC2 0x005A +#define OV9640_AWBC3 0x005B +#define OV9640_AWBC4 0x005C +#define OV9640_AWBC5 0x005D +#define OV9640_AWBC6 0x005E +#define OV9640_AWBC7 0x005F +#define OV9640_AWBC8 0x0060 +#define OV9640_AWBC9 0x0061 +#define OV9640_LCC1 0x0062 +#define OV9640_LCC2 0x0063 +#define OV9640_LCC3 0x0064 +#define OV9640_LCC4 0x0065 +#define OV9640_LCC5 0x0066 +#define OV9640_MANU 0x0067 +#define OV9640_MANV 0x0068 +#define OV9640_HV 0x0069 +#define OV9640_MBD 0x006A +#define OV9640_DBLV 0x006B +#define OV9640_GSP0 0x006C +#define OV9640_GSP1 0x006D +#define OV9640_GSP2 0x006E +#define OV9640_GSP3 0x006F +#define OV9640_GSP4 0x0070 +#define OV9640_GSP5 0x0071 +#define OV9640_GSP6 0x0072 +#define OV9640_GSP7 0x0073 +#define OV9640_GSP8 0x0074 +#define OV9640_GSP9 0x0075 +#define OV9640_GSP10 0x0076 +#define OV9640_GSP11 0x0077 +#define OV9640_GSP12 0x0078 +#define OV9640_GSP13 0x0079 +#define OV9640_GSP14 0x007A +#define OV9640_GSP15 0x007B +#define OV9640_GST0 0x007C +#define OV9640_GST1 0x007D +#define OV9640_GST2 0x007E +#define OV9640_GST3 0x007F +#define OV9640_GST4 0x0080 +#define OV9640_GST5 0x0081 +#define OV9640_GST6 0x0082 +#define OV9640_GST7 0x0083 +#define OV9640_GST8 0x0084 +#define OV9640_GST9 0x0085 +#define OV9640_GST10 0x0086 +#define OV9640_GST11 0x0087 +#define OV9640_GST12 0x0088 +#define OV9640_GST13 0x0089 +#define OV9640_GST14 0x008A + +// End of OV9640 register +#define OV9640_REGEND ( OV9640_GST14 + 1 ) + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-26 16:33:06
|
Revision: 1082 http://svn.sourceforge.net/hackndev/?rev=1082&view=rev Author: happy-slapin Date: 2007-06-26 09:32:57 -0700 (Tue, 26 Jun 2007) Log Message: ----------- z72: i2c map Added Paths: ----------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/i2c.txt Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/i2c.txt =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/i2c.txt (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/i2c.txt 2007-06-26 16:32:57 UTC (rev 1082) @@ -0,0 +1,28 @@ +root@palmz72:/$ i2cdetect 1 +WARNING! This program can confuse your I2C bus, cause data loss and worse! +I will probe file /dev/i2c-1. +I will probe address range 0x03-0x77. +Continue? [Y/n] y + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: XX XX XX XX XX XX XX XX XX XX XX XX XX +10: XX XX XX XX 14 XX XX XX XX XX XX XX XX XX XX XX +20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +70: XX XX XX XX XX XX XX XX +root@palmz72:/$ i2cdetect 0 +WARNING! This program can confuse your I2C bus, cause data loss and worse! +I will probe file /dev/i2c-0. +I will probe address range 0x03-0x77. +Continue? [Y/n] y + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: XX XX XX XX XX XX XX XX XX XX XX XX XX +10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +50: 50 51 52 53 54 55 56 57 XX XX XX XX XX XX XX XX +60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX +70: XX XX XX XX XX XX XX XX This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-26 11:59:36
|
Revision: 1081 http://svn.sourceforge.net/hackndev/?rev=1081&view=rev Author: happy-slapin Date: 2007-06-26 04:59:16 -0700 (Tue, 26 Jun 2007) Log Message: ----------- OV9640: moved platform code out Modified Paths: -------------- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 11:58:21 UTC (rev 1080) +++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 11:59:16 UTC (rev 1081) @@ -321,7 +321,7 @@ ov9640_write(0x36, 0x49); ov9640_write(0x12, 0x05); mdelay(800); - GPSR1 = GPIO_bit(50); + ov9640_set_powerdown_gpio(); } else { ov9640_write(0x39, 0xf0); @@ -329,7 +329,7 @@ ov9640_write(0x6b, 0x3f); ov9640_write(0x36, 0x49); ov9640_write(0x12, 0x10); - GPCR1 = GPIO_bit(50); + ov9640_clear_powerdown_gpio(); //GPSR0 = GPIO_bit(19); mdelay(20); //GPCR0 = GPIO_bit(19); Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h 2007-06-26 11:58:21 UTC (rev 1080) +++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h 2007-06-26 11:59:16 UTC (rev 1081) @@ -41,6 +41,7 @@ unsigned long last_updated; /* In jiffies */ }; void ov9640_gpio_init(void); - +void ov9640_set_powerdown_gpio(); +void ov9640_clear_powerdown_gpio(); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-26 11:58:31
|
Revision: 1080 http://svn.sourceforge.net/hackndev/?rev=1080&view=rev Author: happy-slapin Date: 2007-06-26 04:58:21 -0700 (Tue, 26 Jun 2007) Log Message: ----------- z72: OV9640 platform code Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:57:55 UTC (rev 1079) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 11:58:21 UTC (rev 1080) @@ -474,8 +474,17 @@ return; } - +void ov9640_set_powerdown_gpio(void) +{ + /* Not implemented */ +} +void ov9640_clear_powerdown_gpio(void) +{ + /* Not implemented */ +} EXPORT_SYMBOL_GPL(ov9640_gpio_init); +EXPORT_SYMBOL_GPL(ov9640_set_powerdown_gpio); +EXPORT_SYMBOL_GPL(ov9640_clear_powerdown_gpio); /*********************************************************************** * * end of OV9640 Functions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-26 10:57:56
|
Revision: 1079 http://svn.sourceforge.net/hackndev/?rev=1079&view=rev Author: happy-slapin Date: 2007-06-26 03:57:55 -0700 (Tue, 26 Jun 2007) Log Message: ----------- z72: fixed typo :-P Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:55:30 UTC (rev 1078) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:57:55 UTC (rev 1079) @@ -475,7 +475,7 @@ return; } -EXPORT_SYMBOL_GPL(ov9640_gpio_init) +EXPORT_SYMBOL_GPL(ov9640_gpio_init); /*********************************************************************** * * end of OV9640 Functions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-26 10:55:34
|
Revision: 1078 http://svn.sourceforge.net/hackndev/?rev=1078&view=rev Author: happy-slapin Date: 2007-06-26 03:55:30 -0700 (Tue, 26 Jun 2007) Log Message: ----------- z72: set_GPIO_mode -> pxa_gpio_mode Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:48:55 UTC (rev 1077) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:55:30 UTC (rev 1078) @@ -454,18 +454,18 @@ ***********************************************************************/ void ov9640_gpio_init(void) { - set_GPIO_mode(81 | GPIO_ALT_FN_2_IN); /* CIF_DD[0] */ - set_GPIO_mode(55 | GPIO_ALT_FN_1_IN); /* CIF_DD[1] */ - set_GPIO_mode(51 | GPIO_ALT_FN_1_IN); /* CIF_DD[2] */ - set_GPIO_mode(50 | GPIO_ALT_FN_1_IN); /* CIF_DD[3] */ - set_GPIO_mode(52 | GPIO_ALT_FN_1_IN); /* CIF_DD[4] */ - set_GPIO_mode(48 | GPIO_ALT_FN_1_IN); /* CIF_DD[5] */ - set_GPIO_mode(93 | GPIO_ALT_FN_1_IN); /* CIF_DD[6] */ - set_GPIO_mode(108 | GPIO_ALT_FN_1_IN); /* CIF_DD[7] */ - set_GPIO_mode(53 | GPIO_ALT_FN_2_OUT); /* CIF_MCLK */ - set_GPIO_mode(54 | GPIO_ALT_FN_3_IN); /* CIF_PCLK */ - set_GPIO_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */ - set_GPIO_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */ + pxa_gpio_mode(81 | GPIO_ALT_FN_2_IN); /* CIF_DD[0] */ + pxa_gpio_mode(55 | GPIO_ALT_FN_1_IN); /* CIF_DD[1] */ + pxa_gpio_mode(51 | GPIO_ALT_FN_1_IN); /* CIF_DD[2] */ + pxa_gpio_mode(50 | GPIO_ALT_FN_1_IN); /* CIF_DD[3] */ + pxa_gpio_mode(52 | GPIO_ALT_FN_1_IN); /* CIF_DD[4] */ + pxa_gpio_mode(48 | GPIO_ALT_FN_1_IN); /* CIF_DD[5] */ + pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* CIF_DD[6] */ + pxa_gpio_mode(108 | GPIO_ALT_FN_1_IN); /* CIF_DD[7] */ + pxa_gpio_mode(53 | GPIO_ALT_FN_2_OUT); /* CIF_MCLK */ + pxa_gpio_mode(54 | GPIO_ALT_FN_3_IN); /* CIF_PCLK */ + pxa_gpio_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */ + pxa_gpio_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */ #if 0 set_GPIO_mode(50 | GPIO_OUT); /*CIF_PD */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-26 10:48:59
|
Revision: 1077 http://svn.sourceforge.net/hackndev/?rev=1077&view=rev Author: happy-slapin Date: 2007-06-26 03:48:55 -0700 (Tue, 26 Jun 2007) Log Message: ----------- PXA270+OV9640: moving platform code out Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig 2007-06-26 10:15:26 UTC (rev 1076) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig 2007-06-26 10:48:55 UTC (rev 1077) @@ -15,6 +15,7 @@ config PALMZ72_BATTERY tristate "Palm Zire 72 Battery support" select TOUCHSCREEN_WM97XX + select POWER_SUPPLY depends on MACH_PALMZ72 default m help Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt 2007-06-26 10:15:26 UTC (rev 1076) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt 2007-06-26 10:48:55 UTC (rev 1077) @@ -111,7 +111,7 @@ GPIO109 0 O 00 GPIO110 0 O 00 GPIO111 0 O 00 -GPIO112 0 O 00 +GPIO112 0 O 00 CAMERA? GPIO113 1 O 00 GPIO114 1 O 00 GPIO115 0 I 00 @@ -119,4 +119,4 @@ GPIO117 1 O 01 SCL GPIO118 1 O 01 SDA GPIO119 0 O 00 -GPIO120 0 O 00 +GPIO120 0 O 00 CAMERA? Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:15:26 UTC (rev 1076) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:48:55 UTC (rev 1077) @@ -447,6 +447,42 @@ platform_add_devices( devices, ARRAY_SIZE(devices) ); } +/*********************************************************************** + * + * OV9640 Functions + * + ***********************************************************************/ +void ov9640_gpio_init(void) +{ + set_GPIO_mode(81 | GPIO_ALT_FN_2_IN); /* CIF_DD[0] */ + set_GPIO_mode(55 | GPIO_ALT_FN_1_IN); /* CIF_DD[1] */ + set_GPIO_mode(51 | GPIO_ALT_FN_1_IN); /* CIF_DD[2] */ + set_GPIO_mode(50 | GPIO_ALT_FN_1_IN); /* CIF_DD[3] */ + set_GPIO_mode(52 | GPIO_ALT_FN_1_IN); /* CIF_DD[4] */ + set_GPIO_mode(48 | GPIO_ALT_FN_1_IN); /* CIF_DD[5] */ + set_GPIO_mode(93 | GPIO_ALT_FN_1_IN); /* CIF_DD[6] */ + set_GPIO_mode(108 | GPIO_ALT_FN_1_IN); /* CIF_DD[7] */ + set_GPIO_mode(53 | GPIO_ALT_FN_2_OUT); /* CIF_MCLK */ + set_GPIO_mode(54 | GPIO_ALT_FN_3_IN); /* CIF_PCLK */ + set_GPIO_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */ + set_GPIO_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */ + +#if 0 + set_GPIO_mode(50 | GPIO_OUT); /*CIF_PD */ + set_GPIO_mode(19 | GPIO_IN); /*CIF_RST */ +#endif + + return; +} + +EXPORT_SYMBOL_GPL(ov9640_gpio_init) +/*********************************************************************** + * + * end of OV9640 Functions + * + ***********************************************************************/ + + MACHINE_START(PALMZ72, "Palm Zire 72") /********************************************************/ Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-06-26 10:15:26 UTC (rev 1076) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-06-26 10:48:55 UTC (rev 1077) @@ -15,6 +15,7 @@ #include <linux/pm.h> #include <linux/fb.h> #include <linux/platform_device.h> +#include <linux/delay.h> #include <asm/mach-types.h> #include <asm/hardware.h> @@ -52,6 +53,9 @@ /* Turn off USB power */ SET_PALMZ72_GPIO(USB_POWER,0); + SET_PALMZ72_GPIO(BL_POWER, 0); + mdelay(50); + /* disable GPIO reset - DO NOT REMOVE! */ PCFR &= PCFR_GPR_EN; @@ -77,6 +81,9 @@ SET_PALMZ72_GPIO(SCREEN,1); /* Turn on USB power */ SET_PALMZ72_GPIO(USB_POWER,1); + /* Hack - something seems to switch it off in-between */ + SET_PALMZ72_GPIO(BL_POWER, 1); + mdelay(50); return 0; } Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 10:15:26 UTC (rev 1076) +++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 10:48:55 UTC (rev 1077) @@ -337,41 +337,6 @@ mdelay(100); } -/*********************************************************************** - * - * OV9640 Functions - * - ***********************************************************************/ -static void ov9640_gpio_init() -{ - - set_GPIO_mode(27 | GPIO_ALT_FN_3_IN); /* CIF_DD[0] */ - set_GPIO_mode(114 | GPIO_ALT_FN_1_IN); /* CIF_DD[1] */ - set_GPIO_mode(51 | GPIO_ALT_FN_1_IN); /* CIF_DD[2] */ - set_GPIO_mode(115 | GPIO_ALT_FN_2_IN); /* CIF_DD[3] */ - set_GPIO_mode(95 | GPIO_ALT_FN_2_IN); /* CIF_DD[4] */ - set_GPIO_mode(94 | GPIO_ALT_FN_2_IN); /* CIF_DD[5] */ - set_GPIO_mode(17 | GPIO_ALT_FN_2_IN); /* CIF_DD[6] */ - set_GPIO_mode(108 | GPIO_ALT_FN_1_IN); /* CIF_DD[7] */ - set_GPIO_mode(23 | GPIO_ALT_FN_1_OUT); /* CIF_MCLK */ - set_GPIO_mode(54 | GPIO_ALT_FN_3_IN); /* CIF_PCLK */ - set_GPIO_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */ - set_GPIO_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */ - set_GPIO_mode(50 | GPIO_OUT); /*CIF_PD */ - set_GPIO_mode(19 | GPIO_IN); /*CIF_RST */ - - - return; - -} - -/*********************************************************************** - * - * end of OV9640 Functions - * - ***********************************************************************/ - - int i2c_ov9640_init(void) { int res; Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h 2007-06-26 10:15:26 UTC (rev 1076) +++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h 2007-06-26 10:48:55 UTC (rev 1077) @@ -40,5 +40,7 @@ int blockaddr; /* current using block address. */ unsigned long last_updated; /* In jiffies */ }; +void ov9640_gpio_init(void); + #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hap...@us...> - 2007-06-26 10:15:31
|
Revision: 1076 http://svn.sourceforge.net/hackndev/?rev=1076&view=rev Author: happy-slapin Date: 2007-06-26 03:15:26 -0700 (Tue, 26 Jun 2007) Log Message: ----------- PXA270+OV9640: made silly merge of driver Modified Paths: -------------- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c =================================================================== --- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 08:56:09 UTC (rev 1075) +++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 10:15:26 UTC (rev 1076) @@ -6,6 +6,7 @@ #include <asm/hardware.h> #include <asm/types.h> #include <linux/delay.h> +#include <asm/arch/palmz72-gpio.h> #include "i2c-ov9640.h" @@ -29,7 +30,7 @@ extern struct i2c_adapter *i2cdev_adaps[]; struct i2c_client *g_client = NULL; -static unsigned short normal_i2c[] = {OV9640_SLAVE_ADDR ,I2C_CLIENT_END }; +static unsigned short normal_i2c[] = {0x5d, OV9640_SLAVE_ADDR ,I2C_CLIENT_END }; /* static unsigned short normal_i2c_range[] = { I2C_CLIENT_END }; */ I2C_CLIENT_INSMOD; @@ -108,7 +109,22 @@ return i2c_probe(adap,&addr_data,i2c_ov9640_detect_client); } +#if 0 +static int a780_camera_adapter_attach(struct i2c_adapter *adap) +{ + if(! (a780_camera_client = kmalloc(sizeof(struct i2c_client),GFP_KERNEL))) + return -ENOMEM; + memcpy(a780_camera_client,&client_template,sizeof(struct i2c_client)); + a780_camera_client->adapter = adap; + + a780_camera_client->addr = 0x5D; + + i2c_attach_client(a780_camera_client); + return 0; +} +#endif + static int i2c_ov9640_detect_client(struct i2c_adapter *adapter, int address, int kind) { struct i2c_client *new_client; @@ -153,7 +169,9 @@ new_client->driver = &ov9640_driver; new_client->flags = 0; - g_client = new_client; + g_client = new_client; + ov9640_power_down(0); + mdelay(1); /* Now, we do the remaining detection. If no `force' parameter is used. */ @@ -178,7 +196,7 @@ }*/ } - strcpy(new_client->name, "ov9640"); + strcpy(new_client->name, "i2c-ov9640"); /* Only if you use this field */ data->valid = 0; @@ -211,7 +229,7 @@ /* Try to detach the client from i2c space */ if ((err = i2c_detach_client(client))) { - DPRINTK("ov9640.o: Client deregistration failed, client not detached.\n"); + DPRINTK("i2c-ov9640.o: Client deregistration failed, client not detached.\n"); return err; } @@ -225,15 +243,148 @@ have to be cleaned up! */ static int ov9640_initialized = 0; + + +/*********************************************************************** +* Power & Reset +***********************************************************************/ + + + +#if 0 +static struct i2c_driver driver = { + .name = "a780 camera driver", + .id = I2C_A780_CAMERA, + //flags: I2C_DF_DUMMY, + .attach_adapter = a780_camera_adapter_attach, + .detach_client = a780_camera_detach, + .owner = THIS_MODULE, +}; + +static struct i2c_adapter a780_camera_adapter = { + name: "a780 camera adapter", + id: I2C_A780_CAMERA, + client_register: a780_camera_client_register, + client_unregister: a780_camera_client_unregister, +}; +static struct i2c_client client_template = +{ + name: "(unset)", + adapter:&a780_camera_adapter, +}; +struct i2c_client *a780_camera_client; + +int ov9640_write(u8 addr, u8 value) +{ + char tmp[2]={addr, value}; + int ret; + unsigned int flags; + + ret = a780_camera_write(tmp, 2); + local_irq_save(flags) + enable_irq(IRQ_I2C); + ret = i2c_master_send(a780_camera_client, buf, count); + local_irq_restore(flags); + if(ret < 0) + { + err_print("i2c write error code =%d", ret); + return -EIO; + } + + ddbg_print("addr = 0x%02x, value = 0x%02x", addr,value); + return 0; +} +#endif + + +void ov9640_soft_reset(void) +{ + u8 regValue; + regValue = 0x80; + ov9640_write(OV9640_COM7, ®Value); + mdelay(10); + return; +} + +void ov9640_power_down(int powerDown) +{ + // OV9640 PWRDWN, 0 = NORMAL, 1=POWER DOWN + //GPDR1 |= GPIO_bit(50); + //OV9640 reset CIF_RST, 0 = NORMAL, 1=RESET + //GPDR0 |= GPIO_bit(19); + if (powerDown == 1) { + mdelay(200); + ov9640_soft_reset(); + ov9640_write(0x39, 0xf4); + ov9640_write(0x1e, 0x80); + ov9640_write(0x6b, 0x3f); + ov9640_write(0x36, 0x49); + ov9640_write(0x12, 0x05); + mdelay(800); + GPSR1 = GPIO_bit(50); + } + else { + ov9640_write(0x39, 0xf0); + ov9640_write(0x1e, 0x00); + ov9640_write(0x6b, 0x3f); + ov9640_write(0x36, 0x49); + ov9640_write(0x12, 0x10); + GPCR1 = GPIO_bit(50); + //GPSR0 = GPIO_bit(19); + mdelay(20); + //GPCR0 = GPIO_bit(19); + } + mdelay(100); +} + +/*********************************************************************** + * + * OV9640 Functions + * + ***********************************************************************/ +static void ov9640_gpio_init() +{ + + set_GPIO_mode(27 | GPIO_ALT_FN_3_IN); /* CIF_DD[0] */ + set_GPIO_mode(114 | GPIO_ALT_FN_1_IN); /* CIF_DD[1] */ + set_GPIO_mode(51 | GPIO_ALT_FN_1_IN); /* CIF_DD[2] */ + set_GPIO_mode(115 | GPIO_ALT_FN_2_IN); /* CIF_DD[3] */ + set_GPIO_mode(95 | GPIO_ALT_FN_2_IN); /* CIF_DD[4] */ + set_GPIO_mode(94 | GPIO_ALT_FN_2_IN); /* CIF_DD[5] */ + set_GPIO_mode(17 | GPIO_ALT_FN_2_IN); /* CIF_DD[6] */ + set_GPIO_mode(108 | GPIO_ALT_FN_1_IN); /* CIF_DD[7] */ + set_GPIO_mode(23 | GPIO_ALT_FN_1_OUT); /* CIF_MCLK */ + set_GPIO_mode(54 | GPIO_ALT_FN_3_IN); /* CIF_PCLK */ + set_GPIO_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */ + set_GPIO_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */ + set_GPIO_mode(50 | GPIO_OUT); /*CIF_PD */ + set_GPIO_mode(19 | GPIO_IN); /*CIF_RST */ + + + return; + +} + +/*********************************************************************** + * + * end of OV9640 Functions + * + ***********************************************************************/ + + int i2c_ov9640_init(void) { int res; if (ov9640_initialized) return 0; +// SET_GPIO(112, 1); DPRINTK("I2C: driver for device ov9640.\n"); + + ov9640_gpio_init(); + if ( (res = i2c_add_driver(&ov9640_driver)) ) { - DPRINTK("ov9640: Driver registration failed, module not inserted.\n"); + DPRINTK("i2c-ov9640: Driver registration failed, module not inserted.\n"); i2c_ov9640_cleanup(); return res; } @@ -247,15 +398,17 @@ void i2c_ov9640_cleanup(void) { +// SET_GPIO(112, 0); if (ov9640_initialized == 1) { if (i2c_del_driver(&ov9640_driver)) { - DPRINTK("ov9640: Driver registration failed, module not removed.\n"); + DPRINTK("i2c-ov9640: Driver registration failed, module not removed.\n"); return; } ov9640_initialized --; } } + //EXPORT_SYMBOL(i2c_ov9640_init); EXPORT_SYMBOL(ov9640_write); EXPORT_SYMBOL(ov9640_read); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <z7...@us...> - 2007-06-26 08:56:13
|
Revision: 1075 http://svn.sourceforge.net/hackndev/?rev=1075&view=rev Author: z72ka Date: 2007-06-26 01:56:09 -0700 (Tue, 26 Jun 2007) Log Message: ----------- palmz72: Fixed compatibilty with 2.6.21-hnd2 and some light modification about ir Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig Modified: linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig 2007-06-26 07:01:26 UTC (rev 1074) +++ linux4palm/linux/trunk/arch/arm/configs/palmz72_defconfig 2007-06-26 08:56:09 UTC (rev 1075) @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.21-hnd0 -# Tue May 29 14:46:06 2007 +# Linux kernel version: 2.6.21-hnd2 +# Mon Jun 25 14:07:33 2007 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -188,6 +188,8 @@ # CONFIG_MACH_ZIRE31 is not set CONFIG_GPIOED=m CONFIG_GPIOEDNG=m +# CONFIG_MACH_GHI270HG is not set +# CONFIG_MACH_GHI270 is not set # CONFIG_PXA_SHARPSL is not set # CONFIG_MACH_TRIZEPS4 is not set CONFIG_PXA27x=y @@ -379,9 +381,9 @@ # # IrDA protocols # -# CONFIG_IRLAN is not set -# CONFIG_IRNET is not set -CONFIG_IRCOMM=m +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=y # CONFIG_IRDA_ULTRA is not set # @@ -398,20 +400,22 @@ # # SIR device drivers # -# CONFIG_IRTTY_SIR is not set +CONFIG_IRTTY_SIR=m # # Dongle support # +# CONFIG_DONGLE is not set # # Old SIR device drivers # -# CONFIG_IRPORT_SIR is not set +CONFIG_IRPORT_SIR=m # # Old Serial dongle support # +# CONFIG_DONGLE_OLD is not set # # FIR device drivers @@ -605,6 +609,7 @@ CONFIG_INPUT_TSDEV_SCREEN_Y=480 CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set +# CONFIG_INPUT_LED_TRIGGER is not set # # Input Device Drivers @@ -619,7 +624,9 @@ # CONFIG_GPIODEV_KEYS is not set # CONFIG_GPIODEV_DIAGONAL is not set CONFIG_KEYBOARD_PXA27x=y -# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_PALMIR is not set +CONFIG_KEYBOARD_PALMWK=m +CONFIG_KEYBOARD_GPIO=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set CONFIG_INPUT_TOUCHSCREEN=y @@ -688,7 +695,6 @@ # CONFIG_WATCHDOG is not set CONFIG_HW_RANDOM=m # CONFIG_NVRAM is not set - # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_TIHTC is not set @@ -729,18 +735,21 @@ # # Hardware Monitoring support # -# CONFIG_HWMON is not set +CONFIG_HWMON=y # CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +# CONFIG_BATTERY_DS2760 is not set # -# Hardware Monitoring - external power and batteries -# -CONFIG_EXTERNAL_POWER=m -CONFIG_BATTERY=m -CONFIG_PDA_POWER=m -CONFIG_APM_POWER=m - -# # L3 serial bus support # # CONFIG_L3 is not set @@ -761,6 +770,7 @@ # CONFIG_MFD_SM501 is not set # CONFIG_HTC_ASIC2 is not set # CONFIG_HTC_ASIC3 is not set +# CONFIG_HTC_EGPIO is not set # CONFIG_HTC_ASIC3_DS1WM is not set # CONFIG_SOC_SAMCOP is not set # CONFIG_SOC_HAMCOP is not set @@ -951,9 +961,10 @@ # CONFIG_USB_ZERO is not set CONFIG_USB_ETH=m # CONFIG_USB_ETH_RNDIS is not set -# CONFIG_USB_GADGETFS is not set -# CONFIG_USB_FILE_STORAGE is not set -# CONFIG_USB_G_SERIAL is not set +CONFIG_USB_GADGETFS=m +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +CONFIG_USB_G_SERIAL=m # CONFIG_USB_MIDI_GADGET is not set # CONFIG_USB_G_CHAR is not set # CONFIG_USB_PXA2XX_GPIO is not set @@ -1017,7 +1028,7 @@ CONFIG_DNOTIFY=y CONFIG_AUTOFS_FS=y CONFIG_AUTOFS4_FS=y -# CONFIG_FUSE_FS is not set +CONFIG_FUSE_FS=m # # CD-ROM/DVD Filesystems @@ -1052,6 +1063,7 @@ # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set +# CONFIG_AUFS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-06-26 07:01:28
|
Revision: 1074 http://svn.sourceforge.net/hackndev/?rev=1074&view=rev Author: marex_z71 Date: 2007-06-26 00:01:26 -0700 (Tue, 26 Jun 2007) Log Message: ----------- PalmT5: fix typo Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c 2007-06-25 21:44:23 UTC (rev 1073) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c 2007-06-26 07:01:26 UTC (rev 1074) @@ -204,9 +204,9 @@ else { printk (KERN_INFO "IrDA: turning ON\n"); SET_GPIO(GPIO_NR_PALMT5_IR_DISABLE, 0); - SET_GPIO(GPIO_NR_PALMT5_ICP_T5D_MD, 1); + SET_GPIO(GPIO_NR_PALMT5_ICP_TXD_MD, 1); mdelay(30); - SET_GPIO(GPIO_NR_PALMT5_ICP_T5D_MD, 0); + SET_GPIO(GPIO_NR_PALMT5_ICP_TXD_MD, 0); } local_irq_restore(flags); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-06-25 21:44:25
|
Revision: 1073 http://svn.sourceforge.net/hackndev/?rev=1073&view=rev Author: marex_z71 Date: 2007-06-25 14:44:23 -0700 (Mon, 25 Jun 2007) Log Message: ----------- PalmT5: fix typo Modified Paths: -------------- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h =================================================================== --- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h 2007-06-24 18:46:37 UTC (rev 1072) +++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h 2007-06-25 21:44:23 UTC (rev 1073) @@ -55,11 +55,11 @@ #define GPIO_NR_PALMT5_WM9712_IRQ 27 #define GPIO_NR_PALMT5_ICP_RXD 46 // Infrared receive pin -#define GPIO_NR_PALMT5_ICP_T5D 47 // Infrared transmit pin +#define GPIO_NR_PALMT5_ICP_TXD 47 // Infrared transmit pin #define GPIO_NR_PALMT5_IR_DISABLE 40 // connected to SD pin of tranceiver (TFBS4710?) ? #define GPIO_NR_PALMT5_ICP_RXD_MD (GPIO_NR_PALMT5_ICP_RXD | GPIO_ALT_FN_1_IN) -#define GPIO_NR_PALMT5_ICP_T5D_MD (GPIO_NR_PALMT5_ICP_T5D | GPIO_ALT_FN_2_OUT) +#define GPIO_NR_PALMT5_ICP_TXD_MD (GPIO_NR_PALMT5_ICP_T5D | GPIO_ALT_FN_2_OUT) #define GPIO_NR_PALMT5_USB_DETECT 13 #define GPIO_NR_PALMT5_USB_POWER 95 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mis...@us...> - 2007-06-24 18:43:14
|
Revision: 1071 http://svn.sourceforge.net/hackndev/?rev=1071&view=rev Author: miska_tx Date: 2007-06-24 11:42:17 -0700 (Sun, 24 Jun 2007) Log Message: ----------- Fixed some small errors in PalmTX battery (#fidef -> #ifdef ;-) ) Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 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 18:01:19 UTC (rev 1070) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-06-24 18:42:17 UTC (rev 1071) @@ -262,7 +262,7 @@ /* register battery to APM layer */ bat.battery_registered = 0; -#fidef CONFIG_POWER_SUPPLY +#ifdef CONFIG_POWER_SUPPLY if(power_supply_register(NULL, &palmtx_battery)) { printk(KERN_ERR "palmtx_ac97_probe: could not register battery class\n"); } @@ -287,7 +287,7 @@ static void __exit palmtx_wm97xx_exit(void) { /* TODO - recover APM callback to original state */ -#fidef CONFIG_POWER_SUPPLY +#ifdef CONFIG_POWER_SUPPLY power_supply_unregister(&palmtx_battery); #endif driver_unregister(&palmtx_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-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-06-24 13:47:35
|
Revision: 1069 http://svn.sourceforge.net/hackndev/?rev=1069&view=rev Author: marex_z71 Date: 2007-06-24 06:47:32 -0700 (Sun, 24 Jun 2007) Log Message: ----------- PalmTE2: we dont have gpio-keys in defconfig, later tell Carlos to commit the missing palmte2-gpio.h file Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c 2007-06-24 13:04:42 UTC (rev 1068) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c 2007-06-24 13:47:32 UTC (rev 1069) @@ -28,9 +28,9 @@ #include <asm/arch/udc.h> #include <asm/arch/mmc.h> #include <asm/arch/pxapwm-bl.h> +/*#include <asm/arch/palmte2-gpio.h>*/ + #include <linux/gpio_keys.h> - -#include <asm/arch/palmte2-gpio.h> #include <sound/driver.h> #include <sound/core.h> #include <sound/pcm.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-06-24 13:04:44
|
Revision: 1068 http://svn.sourceforge.net/hackndev/?rev=1068&view=rev Author: marex_z71 Date: 2007-06-24 06:04:42 -0700 (Sun, 24 Jun 2007) Log Message: ----------- PalmTE2: remove initramfs source from defconfig Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/configs/palmte2_defconfig Modified: linux4palm/linux/trunk/arch/arm/configs/palmte2_defconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/configs/palmte2_defconfig 2007-06-24 12:56:49 UTC (rev 1067) +++ linux4palm/linux/trunk/arch/arm/configs/palmte2_defconfig 2007-06-24 13:04:42 UTC (rev 1068) @@ -48,9 +48,7 @@ CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="/home/palm/initrd/initramfs" -CONFIG_INITRAMFS_ROOT_UID=0 -CONFIG_INITRAMFS_ROOT_GID=0 +# CONFIG_INITRAMFS_SOURCE is not set CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y # CONFIG_EMBEDDED is not set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bob...@us...> - 2007-06-24 12:56:50
|
Revision: 1067 http://svn.sourceforge.net/hackndev/?rev=1067&view=rev Author: bobofdoom Date: 2007-06-24 05:56:49 -0700 (Sun, 24 Jun 2007) Log Message: ----------- cocoboot: tagged v0.2 Added Paths: ----------- cocoboot/tags/cocoboot-0.2/ Copied: cocoboot/tags/cocoboot-0.2 (from rev 1066, cocoboot/trunk) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bob...@us...> - 2007-06-24 12:55:50
|
Revision: 1066 http://svn.sourceforge.net/hackndev/?rev=1066&view=rev Author: bobofdoom Date: 2007-06-24 05:55:46 -0700 (Sun, 24 Jun 2007) Log Message: ----------- cocoboot: Let there be version 0.2. Modified Paths: -------------- cocoboot/trunk/Changelog cocoboot/trunk/include/cocoboot.rcp Modified: cocoboot/trunk/Changelog =================================================================== --- cocoboot/trunk/Changelog 2007-06-24 09:46:45 UTC (rev 1065) +++ cocoboot/trunk/Changelog 2007-06-24 12:55:46 UTC (rev 1066) @@ -1,3 +1,4 @@ +version 0.2: - Fixed booting on Palm T|T3 (Marek Vasut) version 0.1: Modified: cocoboot/trunk/include/cocoboot.rcp =================================================================== --- cocoboot/trunk/include/cocoboot.rcp 2007-06-24 09:46:45 UTC (rev 1065) +++ cocoboot/trunk/include/cocoboot.rcp 2007-06-24 12:55:46 UTC (rev 1066) @@ -1,7 +1,7 @@ #include "cocoboot_r.h" APPLICATIONICONNAME ID 1000 "Cocoboot" -VERSION "0.1" +VERSION "0.2" ICON BEGIN This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bob...@us...> - 2007-06-24 09:46:47
|
Revision: 1065 http://svn.sourceforge.net/hackndev/?rev=1065&view=rev Author: bobofdoom Date: 2007-06-24 02:46:45 -0700 (Sun, 24 Jun 2007) Log Message: ----------- cocoboot: Created change log. Added Paths: ----------- cocoboot/trunk/Changelog Added: cocoboot/trunk/Changelog =================================================================== --- cocoboot/trunk/Changelog (rev 0) +++ cocoboot/trunk/Changelog 2007-06-24 09:46:45 UTC (rev 1065) @@ -0,0 +1,4 @@ + - Fixed booting on Palm T|T3 (Marek Vasut) + +version 0.1: + - Initial release This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |