Subject: Jornada 540 Series
To: , <port-hpcsh@netbsd.org>
From: Jeremiah Holt <jholt5638@earthlink.net>
List: port-hpcsh
Date: 06/23/2004 06:23:31
This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C458EA.9ACD64C0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

I was given the register information for the Jornada 928 which uses the
same F1769 companion chip as the 540 series. It seems like the best place to
start I'd begin working on this myself but my system right now is a Win2k3
box since its modem is a softmodem and go's 14.4K with the linmodem drivers

------=_NextPart_000_0000_01C458EA.9ACD64C0
Content-Type: application/octet-stream;
	name="jornada928-regs.h"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="jornada928-regs.h"

/*
 *
 * Definitions for HP Jornada928 Handheld Computer
 *
 * Author: Eugene Borisov.
 *
 * History:
 *
 *
 */

#ifndef _INCLUDE_JORNADA928_H_
#define _INCLUDE_JORNADA928_H_

/* LCD backlight registers
 * Backlight control pin is connected to GPIO3 Bit 0x20
 */
#define JORNADA928_LCD_INVERTER_CTRL		GPIO3_DATA_OUTPUT_REG
#define JORNADA928_LCD_INVERTER_CONF		GPIO3_DIR_CONTROL_REG
#define LCD_INVERTER_EN			0x20
#define LCD_INVERTER_OUTPUT_EN 	 	0x20

/* LCD panel ENABLE is connected to bit 0x80000 of  GPIO2 */
#define JORNADA928_LCD_CTRL		GPIO2_DATA_OUTPUT_REG
#define JORNADA928_LCD_CONF		GPIO2_DIR_CONTROL_REG
#define LCD_CONF_OUTPUT_EN		0x80000
#define LCD_CTRL_PANEL_EN		0x80000

/* LCD Dither logic seems to be connected to GPIO1 bit 0x2000000 */
#define JORNADA928_DITHER_CTRL		GPIO1_DATA_OUTPUT_REG
#define JORNADA928_DITHER_CONF		GPIO1_DIR_CONTROL_REG
#define DITHER_OUTPUT_EN		0x2000000
#define DITHER_EN			0x2000000

/* vibrator */
#define JORNADA928_VIBRATE_CTRL		GPIO1_DATA_OUTPUT_REG
#define JORNADA928_VIBRATE_CONF		GPIO1_DIR_CONTROL_REG
#define VIBRATE_OUTPUT_EN		0x0000040
#define VIBRATE_EN			0x0000040

/* F1796 Registers */
#define F1796_IREQ			0xe8000000		/* interrupt control */
#define F1796_CF_STS			0xe8000002		/* CF status */
#define F1796_CF_CTRL			0xe8000002		/* CF control */
#define F1796_CF_REG04			0xe8000004		/* don't know what this is, but it =
seems to be related to CF */
#define F1796_CF_REG06			0xe8000006		/* don't know what this is, but it =
seems to be related to CF */
#define F1796_POWER_IRQ			0xe8000008		/* power realted irq status/mask =
register */
#define F1796_POWER_STS			0xe800000a
#define F1796_BAT_STS			__REGH(0xe800000a)		/* battery status */
#define F1796_TFT_1			0xe80000c0		/* TFT panel control reg0 (mini =
display)*/=20
#define F1796_TFT_2			0xe80000c2		/* TFT panel control reg1 (mini =
display)*/
#define F1796_TFT_3			0xe80000c4		/* TFT panel control reg2 (mini =
display)*/
#define F1796_KEYB_STS			0xe8000020		/* Keyboard status reg */

#define JORNADA928_PCMCIA_BASE		0x08000000
#define JORNADA928_PCMCIA_WINDOW	0x40000
#define JORNADA928_PCMCIA_ATTR		( JORNADA928_PCMCIA_BASE + 0x10000 )
#define JORNADA928_PCMCIA_MEM		( JORNADA928_PCMCIA_BASE + 0x20000 )
#define JORNADA928_PCMCIA_IO		( JORNADA928_PCMCIA_BASE + 0x30000 )
#define JORNADA928_PCMCIA_IO_VIRT	0xe8030000
					 =20
/* CF Slot bits */
#define CTRL_CD_IRQ_EN       		0x0001          	/* card CD irq enable */
#define CTRL_IREQ_EN   			0x0002          	/* card IREQ irq enable */
#define CTRL_CD_IRQ_ACK    		0x0004          	/* card CD irq acknoledge =
*/
#define CTRL_CD_IREQ_ACK   	 	0x0008          	/* card IREQ acknowledge =
*/
#define CTRL_IO_MODE 			0x0010
#define CTRL_RESET   			0x0020          	/* card software reset */
#define CTRL_EN      			0x0080          	/* card interface enable */

#define STS_POWERON 			0x8000          	/* card power is active */
#define STS_READY   			0x2000         	 	/* ready */            =20
#define STS_CD1     			0x1000          	/* card detect 1 */
#define STS_CD2     			0x0800			/* card detect 2 */
#define STS_BVD2    			0x0400			/* card BVD2 */
#define STS_BVD1    			0x0200  		/* card BVD1 */
#define STS_SCH     			0x0100          	/* socket change */					  	      =
=20
#define STS_VS1				0x4000
#define STS_VS2				0x8000


/* IREQ Reg Bits */
#define IRQ_CF				0x1			/* compact flash irq */
#define IRQ_POWER			0x2			/* power */
#define IRQ_KEY				0x4			/* key press irq */

/* Touch Panel Registers */
#define PEN_DOWN			0x2			/* touch event is signaled on bit 2 of MPU GPIO =
*/
#define TOUCH_INT_CTRL_REG		__REG(0xfffce00c)	/* control register of =
touch GPIO */
#define TOUCH_INT_STS_REG		__REG(0xfffce014)	/* interrupt status =
register */
#define TOUCH_DATA_REG			__REG(0xfffce000)	/* data input register of =
touch GPIO */
#define TOUCH_DIR_CTRL_REG		__REG(0xfffce008)
#define TOUCH_INT_MASK_REG		__REG(0xfffce010)	/* interrupt mask register =
*/
#define JORNADA928_TOUCH_X		0x90000000
#define JORNADA928_TOUCH_Y		0xd0000000
#define JORNADA928_LIGHT_SENSOR		0xa4000000
#define JORNADA928_BACKUP_BATTERY	0xe4000000
#define JORNADA928_MAIN_BATTERY		0xa4000000


#define INT_TOUCHSCREEN			INT_GPIO1		/* touchscreen evenet interrupt */


/* #define LED_REG1			__REGB(0xfffba800) 	LED control register */
/* #define LED_REG2			__REGB(0xfffba801)	another LED reg */

/* Jornada Keypad registers */
#define KEYSTAT         		__REGH(0xe8000020)      /* status on pressed =
keys */
#define KEYBASE 	    		0xe8000024	      	/* base for key config =
registers */
#define UP              		__REGH(0xe8000024)
#define UPPERVOLUME     		__REGH(0xe8000028)
#define LOWERVOLUME     		__REGH(0xe800002c)
#define SIDEPOWER       		__REGH(0xe8000030)
#define UPLEFT          		__REGH(0xe8000034)
#define LEFTLOWER       		__REGH(0xe8000038)
#define LEFT            		__REGH(0xe800003c)
#define POWER           		__REGH(0xe8000040)
#define DOWN            		__REGH(0xe8000044)
#define CENTERLOWER     		__REGH(0xe8000048)
#define RIGHT           		__REGH(0xe800004c)
#define RIGHTLOWER      		__REGH(0xe8000050)
#define UPRIGHT         		__REGH(0xe8000054)
#define COVER           		__REGH(0xe8000058)
#define LEFTCALL       		 	__REGH(0xe800005c)
#define RIGHTCALL       		__REGH(0xe8000060)

#define KEY_UP_IRQ_EN			0x1
#define KEY_DOWN_IRQ_EN			0x2

#define KEY_IRQ_UP_ACK			0x1000
#define KEY_IRQ_DOWN_ACK		0x2000

#define KEY_UP_IRQ			0x0100
#define KEY_DOWN_IRQ			0x0200

#define NUM_KEYS			16M

/* Jornada Battery register bits */
#define ON_EXT_BAT			0x0001
#define ON_INT_BAT			0x0002
#define BAT_SELECTION			0x0004 /* 1 - manual; 0 - auto */

#define EXT_STS				0x0010 /* 1=3DExt Battery Absent; 0=3DExt Battery =
Present */
#define INT_CHARGE			0x0020 /* 1=3DLow; 0=3DHigh */
#define EXT_CHARGE			0x0040 /* 1=3DLow, 0=3DHigh */
#define AC_STS				0x0080 /* 1=3DAC Out, 0=3DAc in */

/* power irq bits */
#define AC_IRQ				0x0800
#define EXT_IRQ				0x0400
#define INT_CHARGE_IRQ			0x0200
#define EXT_CHARGE_IRQ			0x0100

/* level bits, setting these to 1 will generate irqs when */
/* AC out, ext battery installed, ext battery charged, int battery =
charged */
/* level bits, setting these to 0 will generate irqs when */
/* AC in, ext battery removed, ext battery not charged, int battery not =
charged */
#define AC_TRIG				0x80
#define EXT_TRIG			0x40
#define INT_CHARGE_TRIG			0x20
#define EXT_CHARGE_TRIG			0x10

#define AC_MASK				0x8
#define EXT_MASK			0x4
#define INT_CHARGE_MASK			0x2
#define EXT_CHARGE_MASK			0x1


#endif /* _INCLUDE_JORNADA928_H_ */

------=_NextPart_000_0000_01C458EA.9ACD64C0--