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.
|