diff -r -c --unidirectional-new-file kernel/arch/arm/boot/j820/init.S kernel-jornada/arch/arm/boot/j820/init.S *** kernel/arch/arm/boot/j820/init.S 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/arch/arm/boot/j820/init.S 2004-01-24 13:52:38.000000000 -0500 *************** *** 0 **** --- 1,42 ---- + /* + * linux/arch/arm/boot/j820/init.S + * George Almasi (galmasi@optonline.net) + * Based on Russel King's bootp/init.S + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Header file for moving kernel + initrd into place, and + * provide cmd line params to kernel. Note that we pass + * r0 through to r3 straight through. + */ + #define __ASSEMBLY__ 1 + #include + + .section .start,#alloc,#execinstr + .type _start, #function + .globl _start + _start: + adr r13, data + ldmia r13, {r4-r8} @ get size and addr of initrd + @ r5 = ATAG_INITRD + @ r6 = initrd start + @ r7 = initrd end + @ r8 = param_struct address + add r8, r8, #16*4 + sub r7,r7,r6 + stmia r8, {r6,r7} @ save in param_struct + mov r1, #MACH_TYPE_JORNADA820 + b _kernel_start + + data: + .word 0x54410001 @ r4 = ATAG_CORE + .word 0x54420005 @ r5 = ATAG_INITRD + .word initrd_start @ r6 + .word initrd_end @ r7 + .word params @ r8 + + .type initrd_start,#object + + _kernel_start: Binary files kernel/arch/arm/boot/j820/j820 and kernel-jornada/arch/arm/boot/j820/j820 differ diff -r -c --unidirectional-new-file kernel/arch/arm/boot/j820/j820.lds kernel-jornada/arch/arm/boot/j820/j820.lds *** kernel/arch/arm/boot/j820/j820.lds 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/arch/arm/boot/j820/j820.lds 2004-01-24 08:38:59.000000000 -0500 *************** *** 0 **** --- 1,35 ---- + /* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + OUTPUT_ARCH(arm) + ENTRY(_start) + SECTIONS + { + . = 0xc0800000; + _text = .; + .text : { + _stext = .; + _start = .; + *(.start) + kernel_start = .; + kernel.o + kernel_len = . - kernel_start; + . = ALIGN(32); + initrd_start = .; + initrd.o + . = ALIGN(32); + initrd_end = .; + _etext = .; + } + + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + } diff -r -c --unidirectional-new-file kernel/arch/arm/boot/j820/Makefile kernel-jornada/arch/arm/boot/j820/Makefile *** kernel/arch/arm/boot/j820/Makefile 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/arch/arm/boot/j820/Makefile 2004-01-23 20:37:23.000000000 -0500 *************** *** 0 **** --- 1,25 ---- + # + # linux/arch/arm/boot/bootp/Makefile + # + + ZIMAGE =$(TOPDIR)/arch/arm/boot/zImage + ZLDFLAGS = -p -X -T j820.lds \ + --defsym initrd_addr=$(INITRD_PHYS) \ + --defsym params=$(PARAMS_PHYS) + + + all: j820 + + # Note that bootp.lds picks up kernel.o and initrd.o + j820: kernel.o initrd.o init.o j820.lds + $(LD) $(ZLDFLAGS) -o $@ init.o + + kernel.o: $(ZIMAGE) + $(LD) -r -s -o $@ -b binary $(ZIMAGE) + + initrd.o: $(INITRD) + $(LD) -r -s -o $@ -b binary $(INITRD) + + .PHONY: $(INITRD) + + clean:; $(RM) j820 *.o diff -r -c --unidirectional-new-file kernel/arch/arm/boot/Makefile kernel-jornada/arch/arm/boot/Makefile *** kernel/arch/arm/boot/Makefile 2003-06-24 14:49:14.000000000 -0400 --- kernel-jornada/arch/arm/boot/Makefile 2004-01-23 20:32:20.000000000 -0500 *************** *** 126,131 **** --- 126,132 ---- ZRELADDR = 0x20008000 endif + # # We now have a PIC decompressor implementation. Decompressors running # from RAM should not define ZTEXTADDR. Decompressors running directly *************** *** 139,144 **** --- 140,156 ---- ZBSSADDR =ALIGN(4) endif + # On the Jornada 820 we *do* want to define the ZTEXTADDR. + ifeq ($(CONFIG_SA1100_JORNADA820),y) + ZRELADDR = 0xc0208000 + ZTEXTADDR = 0xc0800000 + ZBSSADDR = 0xc0600000 + PARAMS_PHYS = 0xc0200100 + INITRD_PHYS = 0xc0A00000 + INITRD_VIRT = 0xc0A00000 + endif + + export SYSTEM ZTEXTADDR ZBSSADDR ZRELADDR INITRD_PHYS PARAMS_PHYS Image: $(SYSTEM) *************** *** 170,175 **** --- 182,193 ---- @test "$(INITRD_PHYS)" != "" || (echo This machine does not support INITRD; exit -1) @test "$(INITRD)" != "" || (echo You must specify INITRD; exit -1) + j820: + @$(MAKE) -C j820 j820 + + .PHONY: j820 + + install: Image sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) Image $(TOPDIR)/System.map "$(INSTALL_PATH)" diff -r -c --unidirectional-new-file kernel/arch/arm/config.in kernel-jornada/arch/arm/config.in *** kernel/arch/arm/config.in 2003-11-26 21:19:27.000000000 -0500 --- kernel-jornada/arch/arm/config.in 2004-01-22 16:31:24.000000000 -0500 *************** *** 115,120 **** --- 115,121 ---- dep_bool ' FreeBird-v1.1' CONFIG_SA1100_FREEBIRD $CONFIG_ARCH_SA1100 dep_bool ' Frodo' CONFIG_SA1100_FRODO $CONFIG_ARCH_SA1100 dep_bool ' GraphicsClient Plus' CONFIG_SA1100_GRAPHICSCLIENT $CONFIG_ARCH_SA1100 + dep_bool ' HP Jornada 820' CONFIG_SA1100_JORNADA820 $CONFIG_ARCH_SA1100 dep_bool ' GraphicsMaster' CONFIG_SA1100_GRAPHICSMASTER $CONFIG_ARCH_SA1100 dep_bool ' HackKit Core Board' CONFIG_SA1100_HACKKIT $CONFIG_ARCH_SA1100 dep_bool ' HP Labs BadgePAD 4' CONFIG_SA1100_BADGE4 $CONFIG_ARCH_SA1100 *************** *** 141,146 **** --- 142,148 ---- dep_tristate ' Support for SA11x0 USB network link function' CONFIG_SA1100_USB_NETLINK $CONFIG_SA1100_USB dep_tristate ' Support for SA11x0 USB character device emulation' CONFIG_SA1100_USB_CHAR $CONFIG_SA1100_USB dep_tristate 'CPU Registers via /proc (experimental)' CONFIG_REGISTERS $CONFIG_ARCH_SA1100 $CONFIG_EXPERIMENTAL + dep_tristate 'SA1100 Generic PIO SSP support' CONFIG_SA1100_SSP $CONFIG_ARCH_SA1100 endmenu diff -r -c --unidirectional-new-file kernel/arch/arm/def-configs/jornada820 kernel-jornada/arch/arm/def-configs/jornada820 *** kernel/arch/arm/def-configs/jornada820 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/arch/arm/def-configs/jornada820 2004-01-24 09:26:12.000000000 -0500 *************** *** 0 **** --- 1,553 ---- + # + # Automatically generated by make menuconfig: don't edit + # + CONFIG_ARM=y + # CONFIG_EISA is not set + # CONFIG_SBUS is not set + # CONFIG_MCA is not set + CONFIG_UID16=y + CONFIG_RWSEM_GENERIC_SPINLOCK=y + # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set + # CONFIG_GENERIC_BUST_SPINLOCK is not set + # CONFIG_GENERIC_ISA_DMA is not set + + # + # Code maturity level options + # + CONFIG_EXPERIMENTAL=y + # CONFIG_OBSOLETE is not set + + # + # Loadable module support + # + CONFIG_MODULES=y + # CONFIG_MODVERSIONS is not set + CONFIG_KMOD=y + + # + # System Type + # + # CONFIG_ARCH_ANAKIN is not set + # CONFIG_ARCH_ARCA5K is not set + # CONFIG_ARCH_CLPS7500 is not set + # CONFIG_ARCH_CLPS711X is not set + # CONFIG_ARCH_CO285 is not set + # CONFIG_ARCH_PXA is not set + # CONFIG_ARCH_EBSA110 is not set + # CONFIG_ARCH_CAMELOT is not set + # CONFIG_ARCH_FOOTBRIDGE is not set + # CONFIG_ARCH_INTEGRATOR is not set + # CONFIG_ARCH_S3C2410 is not set + # CONFIG_ARCH_OMAHA is not set + # CONFIG_ARCH_L7200 is not set + # CONFIG_ARCH_MX1ADS is not set + # CONFIG_ARCH_RPC is not set + # CONFIG_ARCH_RISCSTATION is not set + CONFIG_ARCH_SA1100=y + # CONFIG_ARCH_SHARK is not set + # CONFIG_ARCH_AT91RM9200DK is not set + # CONFIG_MINIMAL_OOPS is not set + + # + # Linux As Bootldr support + # + # CONFIG_LAB is not set + # CONFIG_BIG_KERNEL is not set + # CONFIG_USE_DATE_CODE is not set + + # + # Archimedes/A5000 Implementations + # + # CONFIG_ARCH_ARC is not set + # CONFIG_ARCH_A5K is not set + + # + # Footbridge Implementations + # + # CONFIG_ARCH_CATS is not set + # CONFIG_ARCH_PERSONAL_SERVER is not set + # CONFIG_ARCH_EBSA285_ADDIN is not set + # CONFIG_ARCH_EBSA285_HOST is not set + # CONFIG_ARCH_NETWINDER is not set + + # + # SA11x0 Implementations + # + # CONFIG_SA1100_ACCELENT is not set + # CONFIG_SA1100_ASSABET is not set + # CONFIG_ASSABET_NEPONSET is not set + # CONFIG_SA1100_ADSBITSY is not set + # CONFIG_SA1100_BRUTUS is not set + # CONFIG_SA1100_CEP is not set + # CONFIG_SA1100_CERF is not set + # CONFIG_SA1100_H3100 is not set + # CONFIG_SA1100_H3600 is not set + # CONFIG_SA1100_H3800 is not set + # CONFIG_SA1100_CONSUS is not set + # CONFIG_SA1100_EXTENEX1 is not set + # CONFIG_SA1100_FLEXANET is not set + # CONFIG_SA1100_FREEBIRD is not set + # CONFIG_SA1100_FRODO is not set + # CONFIG_SA1100_GRAPHICSCLIENT is not set + CONFIG_SA1100_JORNADA820=y + # CONFIG_SA1100_GRAPHICSMASTER is not set + # CONFIG_SA1100_HACKKIT is not set + # CONFIG_SA1100_BADGE4 is not set + # CONFIG_SA1100_JORNADA720 is not set + # CONFIG_SA1100_JORNADA56X is not set + # CONFIG_SA1100_HUW_WEBPANEL is not set + # CONFIG_SA1100_ITSY is not set + # CONFIG_SA1100_LART is not set + # CONFIG_SA1100_NANOENGINE is not set + # CONFIG_SA1100_OMNIMETER is not set + # CONFIG_SA1100_PANGOLIN is not set + # CONFIG_SA1100_PLEB is not set + # CONFIG_SA1100_PT_SYSTEM3 is not set + # CONFIG_SA1100_SHANNON is not set + # CONFIG_SA1100_SHERMAN is not set + # CONFIG_SA1100_SIMPAD is not set + # CONFIG_SA1100_SIMPUTER is not set + # CONFIG_SA1100_PFS168 is not set + # CONFIG_SA1100_VICTOR is not set + # CONFIG_SA1100_XP860 is not set + # CONFIG_SA1100_YOPY is not set + # CONFIG_SA1100_USB is not set + # CONFIG_SA1100_USB_NETLINK is not set + # CONFIG_SA1100_USB_CHAR is not set + # CONFIG_REGISTERS is not set + CONFIG_SA1100_SSP=y + + # + # Intel PXA250/210 Implementations + # + # CONFIG_ARCH_LUBBOCK is not set + # CONFIG_ARCH_PXA_IDP is not set + # CONFIG_ARCH_PXA_CERF is not set + # CONFIG_ARCH_H3900 is not set + # CONFIG_ARCH_H1900 is not set + # CONFIG_ARCH_H5400 is not set + # CONFIG_ARCH_H2200 is not set + # CONFIG_ARCH_AXIM is not set + # CONFIG_PXA_USB is not set + # CONFIG_PXA_USB_NETLINK is not set + # CONFIG_PXA_USB_CHAR is not set + + # + # CLPS711X/EP721X Implementations + # + # CONFIG_ARCH_AUTCPU12 is not set + # CONFIG_ARCH_CDB89712 is not set + # CONFIG_ARCH_CLEP7312 is not set + # CONFIG_ARCH_EDB7211 is not set + # CONFIG_ARCH_P720T is not set + # CONFIG_ARCH_FORTUNET is not set + # CONFIG_ARCH_EP7211 is not set + # CONFIG_ARCH_EP7212 is not set + # CONFIG_ARCH_ACORN is not set + # CONFIG_FOOTBRIDGE is not set + # CONFIG_FOOTBRIDGE_HOST is not set + # CONFIG_FOOTBRIDGE_ADDIN is not set + CONFIG_CPU_32=y + # CONFIG_CPU_26 is not set + # CONFIG_CPU_ARM610 is not set + # CONFIG_CPU_ARM710 is not set + # CONFIG_CPU_ARM720T is not set + # CONFIG_CPU_ARM920T is not set + # CONFIG_CPU_ARM922T is not set + # CONFIG_PLD is not set + # CONFIG_CPU_ARM926T is not set + # CONFIG_CPU_ARM1020 is not set + # CONFIG_CPU_ARM1026 is not set + # CONFIG_CPU_SA110 is not set + CONFIG_CPU_SA1100=y + # CONFIG_CPU_32v3 is not set + CONFIG_CPU_32v4=y + # CONFIG_SA1100_IPAQ is not set + # CONFIG_PXA_IPAQ is not set + # CONFIG_IPAQ_HANDHELD is not set + CONFIG_DISCONTIGMEM=y + + # + # General setup + # + # CONFIG_PCI is not set + CONFIG_ISA=y + # CONFIG_ISA_DMA is not set + # CONFIG_ZBOOT_ROM is not set + CONFIG_ZBOOT_ROM_TEXT=0 + CONFIG_ZBOOT_ROM_BSS=0 + # CONFIG_CPU_FREQ is not set + CONFIG_HOTPLUG=y + + # + # PCMCIA/CardBus support + # + # CONFIG_PCMCIA is not set + # CONFIG_PCMCIA_CLPS6700 is not set + # CONFIG_PCMCIA_SA1100 is not set + # CONFIG_PCMCIA_PXA is not set + # CONFIG_MERCURY_BACKPAQ is not set + + # + # MMC/SD Card support + # + # CONFIG_MMC is not set + # CONFIG_NET is not set + CONFIG_SYSVIPC=y + # CONFIG_BSD_PROCESS_ACCT is not set + CONFIG_SYSCTL=y + CONFIG_FPE_NWFPE=y + CONFIG_FPE_FASTFPE=y + CONFIG_KCORE_ELF=y + # CONFIG_KCORE_AOUT is not set + # CONFIG_BINFMT_AOUT is not set + CONFIG_BINFMT_ELF=y + # CONFIG_BINFMT_MISC is not set + CONFIG_PM=y + # CONFIG_APM is not set + # CONFIG_HWTIMER is not set + # CONFIG_ARTHUR is not set + CONFIG_CMDLINE="root=/dev/rd/0 init=/linuxrc" + # CONFIG_LEDS is not set + CONFIG_ALIGNMENT_TRAP=y + + # + # Parallel port support + # + # CONFIG_PARPORT is not set + + # + # Memory Technology Devices (MTD) + # + # CONFIG_MTD is not set + + # + # Plug and Play configuration + # + # CONFIG_PNP is not set + # CONFIG_ISAPNP is not set + + # + # Block devices + # + # CONFIG_BLK_DEV_FD is not set + # CONFIG_BLK_DEV_XD is not set + # CONFIG_PARIDE is not set + # CONFIG_BLK_CPQ_DA is not set + # CONFIG_BLK_CPQ_CISS_DA is not set + # CONFIG_CISS_SCSI_TAPE is not set + # CONFIG_BLK_DEV_DAC960 is not set + # CONFIG_BLK_DEV_UMEM is not set + CONFIG_BLK_DEV_LOOP=y + # CONFIG_BLK_DEV_NBD is not set + CONFIG_BLK_DEV_RAM=y + CONFIG_BLK_DEV_RAM_SIZE=8192 + CONFIG_BLK_DEV_INITRD=y + # CONFIG_NVRD is not set + + # + # Multi-device support (RAID and LVM) + # + # CONFIG_MD is not set + # CONFIG_BLK_DEV_MD is not set + # CONFIG_MD_LINEAR is not set + # CONFIG_MD_RAID0 is not set + # CONFIG_MD_RAID1 is not set + # CONFIG_MD_RAID5 is not set + # CONFIG_MD_MULTIPATH is not set + # CONFIG_BLK_DEV_LVM is not set + # CONFIG_BLK_DEV_DM is not set + + # + # ATA/ATAPI/MFM/RLL support + # + # CONFIG_IDE is not set + # CONFIG_BLK_DEV_IDE_MODES is not set + # CONFIG_BLK_DEV_HD is not set + + # + # SCSI support + # + # CONFIG_SCSI is not set + + # + # I2O device support + # + # CONFIG_I2O is not set + # CONFIG_I2O_BLOCK is not set + # CONFIG_I2O_SCSI is not set + # CONFIG_I2O_PROC is not set + + # + # ISDN subsystem + # + # CONFIG_ISDN is not set + + # + # Input core support + # + # CONFIG_INPUT is not set + # CONFIG_INPUT_KEYBDEV is not set + # CONFIG_INPUT_MOUSEDEV is not set + # CONFIG_INPUT_JOYDEV is not set + # CONFIG_INPUT_EVDEV is not set + + # + # Character devices + # + CONFIG_VT=y + CONFIG_VT_CONSOLE=y + # CONFIG_SERIAL is not set + # CONFIG_SERIAL_EXTENDED is not set + # CONFIG_SERIAL_NONSTANDARD is not set + + # + # Serial drivers + # + # CONFIG_SERIAL_ANAKIN is not set + # CONFIG_SERIAL_ANAKIN_CONSOLE is not set + # CONFIG_SERIAL_S3C2410 is not set + # CONFIG_SERIAL_S3C2410_CONSOLE is not set + # CONFIG_SERIAL_AMBA is not set + # CONFIG_SERIAL_AMBA_CONSOLE is not set + # CONFIG_SERIAL_CLPS711X is not set + # CONFIG_SERIAL_CLPS711X_CONSOLE is not set + # CONFIG_SERIAL_21285 is not set + # CONFIG_SERIAL_21285_OLD is not set + # CONFIG_SERIAL_21285_CONSOLE is not set + # CONFIG_SERIAL_UART00 is not set + # CONFIG_SERIAL_UART00_CONSOLE is not set + CONFIG_SERIAL_SA1100=y + CONFIG_SERIAL_SA1100_CONSOLE=y + CONFIG_SA1100_DEFAULT_BAUDRATE=115200 + # CONFIG_SERIAL_SIR_PXA is not set + # CONFIG_SERIAL_8250 is not set + # CONFIG_SERIAL_8250_CONSOLE is not set + # CONFIG_SERIAL_8250_EXTENDED is not set + # CONFIG_SERIAL_8250_MANY_PORTS is not set + # CONFIG_SERIAL_8250_SHARE_IRQ is not set + # CONFIG_SERIAL_8250_DETECT_IRQ is not set + # CONFIG_SERIAL_8250_MULTIPORT is not set + # CONFIG_SERIAL_8250_HUB6 is not set + CONFIG_SERIAL_CORE=y + CONFIG_SERIAL_CORE_CONSOLE=y + CONFIG_UNIX98_PTYS=y + CONFIG_UNIX98_PTY_COUNT=32 + # CONFIG_NEWTONKBD is not set + # CONFIG_SA1100_PROFILER is not set + + # + # I2C support + # + # CONFIG_I2C is not set + + # + # L3 serial bus support + # + # CONFIG_L3 is not set + # CONFIG_L3_ALGOBIT is not set + # CONFIG_L3_BIT_SA1100_GPIO is not set + # CONFIG_L3_S3C2410 is not set + # CONFIG_L3_SA1111 is not set + # CONFIG_L3_BACKPAQ is not set + # CONFIG_BIT_SA1100_GPIO is not set + + # + # SPI support + # + # CONFIG_SPI is not set + + # + # Mice + # + # CONFIG_BUSMOUSE is not set + # CONFIG_MOUSE is not set + + # + # Joysticks + # + # CONFIG_INPUT_GAMEPORT is not set + # CONFIG_QIC02_TAPE is not set + + # + # Watchdog Cards + # + # CONFIG_WATCHDOG is not set + # CONFIG_NVRAM is not set + # CONFIG_RTC is not set + CONFIG_SA1100_RTC=y + # CONFIG_PXA_RTC_HACK is not set + # CONFIG_DTLK is not set + # CONFIG_R3964 is not set + # CONFIG_APPLICOM is not set + + # + # Ftape, the floppy tape device driver + # + # CONFIG_FTAPE is not set + # CONFIG_AGP is not set + # CONFIG_DRM is not set + # CONFIG_AXIM_KEY_FIX is not set + + # + # Multimedia devices + # + # CONFIG_MEDIA is not set + # CONFIG_VIDEO_DEV is not set + # CONFIG_V4L2_DEV is not set + + # + # File systems + # + # CONFIG_QUOTA is not set + # CONFIG_AUTOFS_FS is not set + # CONFIG_AUTOFS4_FS is not set + # CONFIG_REISERFS_FS is not set + # CONFIG_REISERFS_CHECK is not set + # CONFIG_REISERFS_PROC_INFO is not set + # CONFIG_ADFS_FS is not set + # CONFIG_ADFS_FS_RW is not set + # CONFIG_AFFS_FS is not set + # CONFIG_HFS_FS is not set + # CONFIG_BFS_FS is not set + # CONFIG_EXT3_FS is not set + # CONFIG_JBD is not set + # CONFIG_JBD_DEBUG is not set + # CONFIG_FAT_FS is not set + # CONFIG_MSDOS_FS is not set + # CONFIG_UMSDOS_FS is not set + # CONFIG_VFAT_FS is not set + # CONFIG_EFS_FS is not set + # CONFIG_JFFS_FS is not set + # CONFIG_JFFS2_FS is not set + # CONFIG_CRAMFS is not set + # CONFIG_TMPFS is not set + CONFIG_RAMFS=y + # CONFIG_ISO9660_FS is not set + # CONFIG_JOLIET is not set + # CONFIG_ZISOFS is not set + CONFIG_MINIX_FS=y + # CONFIG_VXFS_FS is not set + # CONFIG_NTFS_FS is not set + # CONFIG_NTFS_RW is not set + # CONFIG_HPFS_FS is not set + CONFIG_PROC_FS=y + CONFIG_DEVFS_FS=y + CONFIG_DEVFS_MOUNT=y + CONFIG_DEVFS_DEBUG=y + # CONFIG_DRIVERFS_FS is not set + CONFIG_DEVPTS_FS=y + # CONFIG_QNX4FS_FS is not set + # CONFIG_QNX4FS_RW is not set + # CONFIG_ROMFS_FS is not set + CONFIG_EXT2_FS=y + # CONFIG_SYSV_FS is not set + # CONFIG_UDF_FS is not set + # CONFIG_UDF_RW is not set + # CONFIG_UFS_FS is not set + # CONFIG_UFS_FS_WRITE is not set + # CONFIG_NCPFS_NLS is not set + # CONFIG_SMB_FS is not set + # CONFIG_ZISOFS_FS is not set + + # + # Partition Types + # + # CONFIG_PARTITION_ADVANCED is not set + CONFIG_MSDOS_PARTITION=y + # CONFIG_SMB_NLS is not set + # CONFIG_NLS is not set + + # + # Console drivers + # + CONFIG_PC_KEYMAP=y + # CONFIG_VGA_CONSOLE is not set + + # + # Frame-buffer support + # + CONFIG_FB=y + CONFIG_DUMMY_CONSOLE=y + # CONFIG_FB_ACORN is not set + # CONFIG_FB_ANAKIN is not set + # CONFIG_FB_CLPS711X is not set + # CONFIG_FB_S3C2410 is not set + CONFIG_FB_SA1100=y + # CONFIG_FB_EPSON1356 is not set + # CONFIG_FB_MQ200 is not set + # CONFIG_FB_PXA is not set + # CONFIG_FB_MQ1100 is not set + # CONFIG_FB_CYBER2000 is not set + # CONFIG_FB_VIRTUAL is not set + # CONFIG_FBCON_ADVANCED is not set + CONFIG_FBCON_CFB2=y + CONFIG_FBCON_CFB4=y + CONFIG_FBCON_CFB8=y + CONFIG_FBCON_CFB16=y + # CONFIG_FBCON_NO_LOGO is not set + # CONFIG_FBCON_FONTWIDTH8_ONLY is not set + # CONFIG_FBCON_FONTS is not set + CONFIG_FONT_8x8=y + CONFIG_FONT_8x16=y + + # + # Sound + # + # CONFIG_SOUND is not set + + # + # Multimedia Capabilities Port drivers + # + # CONFIG_MCP is not set + # CONFIG_MCP_SA1100 is not set + # CONFIG_MCP_UCB1200 is not set + # CONFIG_MCP_UCB1200_AUDIO is not set + # CONFIG_MCP_UCB1200_TS is not set + # CONFIG_MCP_UCB1400_TS is not set + + # + # USB support + # + # CONFIG_USB is not set + + # + # Linux As Bootldr Modules + # + # CONFIG_BIG_KERNEL is not set + # CONFIG_USE_DATE_CODE is not set + # CONFIG_YMODEM is not set + # CONFIG_LAB_DUMMY is not set + # CONFIG_LAB_CRC is not set + # CONFIG_LAB_YMODEM is not set + # CONFIG_LAB_MTD is not set + # CONFIG_LAB_COPY is not set + # CONFIG_LAB_COPY_YMODEM is not set + # CONFIG_LAB_COPY_FLASH is not set + # CONFIG_LAB_COPY_FS is not set + # CONFIG_LAB_COPY_WRAPPER is not set + + # + # Kernel hacking + # + CONFIG_FRAME_POINTER=y + CONFIG_DEBUG_USER=y + # CONFIG_DEBUG_INFO is not set + # CONFIG_NO_PGT_CACHE is not set + CONFIG_DEBUG_KERNEL=y + # CONFIG_DEBUG_SLAB is not set + # CONFIG_MAGIC_SYSRQ is not set + # CONFIG_DEBUG_SPINLOCK is not set + # CONFIG_DEBUG_WAITQ is not set + # CONFIG_DEBUG_BUGVERBOSE is not set + CONFIG_DEBUG_ERRORS=y + # CONFIG_DEBUG_LL is not set + # CONFIG_DEBUG_DC21285_PORT is not set + # CONFIG_DEBUG_CLPS711X_UART2 is not set + + # + # Library routines + # + # CONFIG_CRC32 is not set + CONFIG_ZLIB_INFLATE=m + CONFIG_ZLIB_DEFLATE=m diff -r -c --unidirectional-new-file kernel/arch/arm/mach-sa1100/jornada820.c kernel-jornada/arch/arm/mach-sa1100/jornada820.c *** kernel/arch/arm/mach-sa1100/jornada820.c 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/arch/arm/mach-sa1100/jornada820.c 2004-01-24 09:18:01.000000000 -0500 *************** *** 0 **** --- 1,218 ---- + /* + * linux/arch/arm/mach-sa1100/jornada820.c + * Jornada 820 fixup and initialization code. + * 2004/01/22 George Almasi (galmasi@optonline.net) + * Modelled after the Jornada 720 code. + * + * The Jornada 820 is never cold-booted into Linux. Thus, we do not + * re-initialize everything, but lazily allow certain pre-set WinCE + * things to continue functioning. + * + * However, one important thing we have to reset is the coprocessor's + * PID register - setting this to 0 allows us to use normal Linux-ish + * paging. + */ + + #include + #include + #include + #include + #include + #include + + #include + #include + + #include + #include + #include + #include + + #include + #include + #include + #include + #include + + #include "generic.h" + + #include + + /* *********************************************************************** */ + /* Initialize the Jornada 820. */ + /* *********************************************************************** */ + + static int __init jornada820_init(void) + { + printk("In jornada820_init\n"); + /* we need to fix the PID register, which was left on by WinCE */ + asm volatile ("mov r0, #0; mcr p15, 0, r0, c13, c0,0;"); + + /* set GPIO edge detection - GPIO14 is the chained interrupt from SA-1101 */ + set_GPIO_IRQ_edge(GPIO_GPIO14, (GPIO_FALLING_EDGE | GPIO_RISING_EDGE)); + + /* Initialize the 1101. */ + GAFR |= GPIO_32_768kHz; + GPDR |= GPIO_32_768kHz; + TUCR = TUCR_3_6864MHz | TUCR_MBGPIO ; /* should also set TUCR_MR */ + + /* + printk ("Old value of GPDR = %x\n", GPDR); + printk ("Old value of VMCCR=%x\n", VMCCR); + printk ("Old value of UFCR=%x\n", UFCR); + + printk ("Old value of VideoControl=%x\n", VideoControl); + printk ("Old value of VgaTiming0=%x\n", VgaTiming0); + printk ("Old value of VgaTiming1=%x\n", VgaTiming1); + printk ("Old value of VgaTiming2=%x\n", VgaTiming2); + printk ("Old value of VgaTiming3=%x\n", VgaTiming3); + printk ("Old value of VgaBorder=%x\n", VgaBorder); + printk ("Old value of VgaDBAR=%x\n", VgaDBAR); + printk ("Old value of VgaDCAR=%x\n", VgaDCAR); + printk ("Old value of VgaStatus=%x\n", VgaStatus); + printk ("Old value of VgaInterruptMask=%x\n", VgaInterruptMask); + printk ("Old value of VgaPalette=%x\n", VgaPalette); + // printk ("Old value of DacControl=%x\n", DacControl); + printk ("Old value of VgaTest=%x\n", VgaTest); + */ + + + /* This should reset the SA1101 + GPDR |= GPIO_GPIO20; + GPSR = GPIO_GPIO20; + udelay(1); + GPCR = GPIO_GPIO20; + udelay(1); + */ + + sa1101_wake(); + sa1101_init_irq (IRQ_JORNADA820_SA1101_CHAIN); + + jornada820_init_proc(); + + /* !!! dead memory: the first 2 MBytes of RAM */ + // request_mem_region (0xc0000000, 0x200000, "dead-memory"); + + return 0; + } + + __initcall(jornada820_init); + + /* *********************************************************************** */ + /* temporary: setup the ramdisk */ + /* *********************************************************************** */ + + static void __init + fixup_jornada820(struct machine_desc *desc, struct param_struct *params, + char **cmdline, struct meminfo *mi) + { + SET_BANK( 0, 0xc0000000, 32*1024*1024 ); + mi->nr_banks = 1; + + printk("fixup_jornada820: initrd at %x, %d bytes\n", + params->u1.s.initrd_start, + params->u1.s.initrd_size); + setup_initrd(params->u1.s.initrd_start, params->u1.s.initrd_size); + } + + /* *********************************************************************** */ + /* map Jornada 820-specific IO (think SA1101) */ + /* *********************************************************************** */ + + static struct map_desc jornada820_io_desc[] __initdata = { + /* virtual physical length domain r w c b */ + { 0xf4000000, 0x18000000, 0x00800000, DOMAIN_IO, 0, 1, 0, 0 }, /* SA-1101 */ + LAST_DESC + }; + + static void __init jornada820_map_io(void) + { + printk("In jornada820_map_io\n"); + sa1100_map_io(); + iotable_init(jornada820_io_desc); + + /* these are a wild guess */ + sa1100_register_uart(0, 3); + sa1100_register_uart(1, 1); + /*sa1100_register_uart(2, 2);*/ + } + + MACHINE_START(JORNADA820, "HP Jornada 820") + BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000) + BOOT_PARAMS(0xc0200100) + FIXUP(fixup_jornada820) + MAPIO(jornada820_map_io) + INITIRQ(sa1100_init_irq) + SOFT_REBOOT + MAINTAINER(galmasi@optonline.net) + MACHINE_END + + /* *********************************************************************** */ + /* machine specific proc file system */ + /* *********************************************************************** */ + + + #include + #include + + static struct proc_dir_entry *j820_dir, *parent_dir = NULL; + + #define PROC_NAME "j820" + + static int j820_read_proc(char *buf, + char **start, + off_t pos, + int count, + int *eof, + void *data) + { + char *p = buf; + p += sprintf(p, "\t Contrast = %u\n", DAC_JORNADA820_CONTRAST); + p += sprintf(p, "\t Brightness= %u\n", DAC_JORNADA820_BRIGHTNESS); + p += sprintf(p, "\t GPLR = %08x\n", GPLR); + p += sprintf(p, "\t PADRR = %08x\n", PADRR); + p += sprintf(p, "\t BBDRR = %08x\n", PBDRR); + return (p-buf); + } + + static int j820_write_proc (struct file *file, + const char *buffer, + unsigned long count, + void *data) + { + char buf[260]; int val; + if (count > 258) return -EINVAL; + if (copy_from_user(buf, buffer, count)) return -EFAULT; + if (!strncmp(buf, "Contrast", 8)) + { + unsigned val; + sscanf(buf+8, "%d", &val); + DAC_JORNADA820_CONTRAST = val; + } + if (!strncmp(buf, "Brightness", 10)) + { + unsigned val; + sscanf (buf+10, "%d", &val); + DAC_JORNADA820_BRIGHTNESS = val; + } + if (!strncmp(buf, "Backlight", 9)) + { + unsigned val; + sscanf (buf+9, "%d", &val); + if (val) GPSR = GPIO_JORNADA820_BACKLIGHTON; + else GPCR = GPIO_JORNADA820_BACKLIGHTON; + } + return count; + } + + static void jornada820_init_proc () + { + j820_dir = create_proc_entry ("j820", 0, parent_dir); + if (j820_dir == NULL) + { + printk("jornada820_init_proc failed\n"); + return; + } + j820_dir->read_proc = j820_read_proc; + j820_dir->write_proc = j820_write_proc; + } diff -r -c --unidirectional-new-file kernel/arch/arm/mach-sa1100/Makefile kernel-jornada/arch/arm/mach-sa1100/Makefile *** kernel/arch/arm/mach-sa1100/Makefile 2003-07-09 10:10:57.000000000 -0400 --- kernel-jornada/arch/arm/mach-sa1100/Makefile 2004-01-22 16:30:54.000000000 -0500 *************** *** 22,28 **** export-objs := assabet.o badge4.o dma-sa1100.o dma-sa1111.o \ flexanet.o freebird.o frodo.o generic.o h3600.o \ huw_webpanel.o irq.o pcipool.o pm-sa1100.o sa1111.o sa1111-pcibuf.o \ ! system3.o yopy.o usb_ctl.o usb_recv.o usb_send.o simputer.o ifeq ($(CONFIG_SA1100_JORNADA720),y) obj-y += dma-jornada720.o --- 22,28 ---- export-objs := assabet.o badge4.o dma-sa1100.o dma-sa1111.o \ flexanet.o freebird.o frodo.o generic.o h3600.o \ huw_webpanel.o irq.o pcipool.o pm-sa1100.o sa1111.o sa1111-pcibuf.o \ ! system3.o yopy.o usb_ctl.o usb_recv.o usb_send.o simputer.o ssp.o ifeq ($(CONFIG_SA1100_JORNADA720),y) obj-y += dma-jornada720.o *************** *** 92,97 **** --- 92,98 ---- obj-$(CONFIG_SA1100_VICTOR) += victor.o obj-$(CONFIG_SA1100_XP860) += xp860.o obj-$(CONFIG_SA1100_YOPY) += yopy.o + obj-$(CONFIG_SA1100_JORNADA820) += jornada820.o sa1101.o # LEDs support leds-y := leds.o *************** *** 137,142 **** --- 138,144 ---- obj-$(CONFIG_PM) += pm-sa1100.o sleep.o obj-$(CONFIG_APM) += apm.o obj-$(CONFIG_HWTIMER) += hwtimer.o + obj-$(CONFIG_SA1100_SSP) += ssp.o export-objs += hwtimer.o include $(TOPDIR)/Rules.make diff -r -c --unidirectional-new-file kernel/arch/arm/mach-sa1100/sa1101.c kernel-jornada/arch/arm/mach-sa1100/sa1101.c *** kernel/arch/arm/mach-sa1100/sa1101.c 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/arch/arm/mach-sa1100/sa1101.c 2004-01-22 21:36:53.000000000 -0500 *************** *** 0 **** --- 1,226 ---- + /* + * 2004/01/22 George Almasi (galmasi@optonline.net) + * Driver for the SA1101 chip in the Jornada820. + * Modelled after the file sa1111.c + */ + + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + + #include + #include + #include + #include + #include + + struct resource sa1101_resource = { + .name = "SA1101", + }; + + /* + * Figure out whether we can see the SA1101 + * Not implemented. + */ + + int __init sa1101_probe() + { + return 0; + } + + /* + * SA1101 interrupt support + */ + + void sa1101_IRQ_demux(int irq, void *dev_id, struct pt_regs *regs) + { + unsigned long stat0, stat1; + while (1) + { + int i; + + stat0 = INTSTATCLR0; + stat1 = INTSTATCLR1; + + if (stat0 == 0 && stat1 == 0) break; + + for (i = IRQ_SA1101_START; stat0; i++, stat0 >>= 1) + if (stat0 & 1) do_IRQ(i, regs); + + for (i = IRQ_SA1101_START + 32; stat1; i++, stat1 >>= 1) + if (stat1 & 1) do_IRQ(i, regs); + } + } + + #define SA1101_IRQMASK_LO(x) (1 << (x - IRQ_SA1101_START)) + #define SA1101_IRQMASK_HI(x) (1 << (x - IRQ_SA1101_START - 32)) + + /* + * A note about masking IRQs: + * + * The GPIO IRQ edge detection only functions while the IRQ itself is + * enabled; edges are not detected while the IRQ is disabled. + * + * This is especially important for the PCMCIA signals, where we must + * pick up every transition. We therefore do not disable the IRQs + * while processing them. + * + * However, since we are changed to a GPIO on the host processor, + * all SA1101 IRQs will be disabled while we're processing any SA1101 + * IRQ. + * + * Note also that changing INTPOL while an IRQ is enabled will itself + * trigger an IRQ. + */ + + static void sa1101_mask_and_ack_lowirq(unsigned int irq) + { + unsigned int mask = SA1101_IRQMASK_LO(irq); + + //INTEN0 &= ~mask; + INTSTATCLR0 = mask; + } + + static void sa1101_mask_and_ack_highirq(unsigned int irq) + { + unsigned int mask = SA1101_IRQMASK_HI(irq); + + //INTEN1 &= ~mask; + INTSTATCLR1 = mask; + } + + static void sa1101_mask_lowirq(unsigned int irq) + { + INTENABLE0 &= ~SA1101_IRQMASK_LO(irq); + } + + static void sa1101_mask_highirq(unsigned int irq) + { + INTENABLE1 &= ~SA1101_IRQMASK_HI(irq); + } + + static void sa1101_unmask_lowirq(unsigned int irq) + { + INTENABLE0 |= SA1101_IRQMASK_LO(irq); + } + + static void sa1101_unmask_highirq(unsigned int irq) + { + INTENABLE1 |= SA1101_IRQMASK_HI(irq); + } + + void __init sa1101_init_irq(int irq_nr) + { + int irq, ret; + + //request_mem_region(_INTTEST0, 512, "irqs"); + + /* disable all IRQs */ + INTENABLE0 = 0; + INTENABLE1 = 0; + + /* + * detect on rising edge. Note: Feb 2001 Errata for SA1101 + * specifies that S0ReadyInt and S1ReadyInt should be '1'. + */ + INTPOL0 = 0; + INTPOL1 = + SA1101_IRQMASK_HI(IRQ_SA1101_S0_READY_NIREQ) | + SA1101_IRQMASK_HI(IRQ_SA1101_S1_READY_NIREQ); + + INTSTATCLR0 = -1; + INTSTATCLR1 = -1; + + for (irq = IRQ_SA1101_GPAIN0; irq <= IRQ_SA1101_KPYIn7; irq++) { + irq_desc[irq].valid = 1; + irq_desc[irq].probe_ok = 0; + irq_desc[irq].mask_ack = sa1101_mask_and_ack_lowirq; + irq_desc[irq].mask = sa1101_mask_lowirq; + irq_desc[irq].unmask = sa1101_unmask_lowirq; + } + for (irq = IRQ_SA1101_KPYIn8; irq <= IRQ_SA1101_USBRESUME; irq++) { + irq_desc[irq].valid = 1; + irq_desc[irq].probe_ok = 0; + irq_desc[irq].mask_ack = sa1101_mask_and_ack_highirq; + irq_desc[irq].mask = sa1101_mask_highirq; + irq_desc[irq].unmask = sa1101_unmask_highirq; + } + + /* Register SA1101 interrupt */ + if (irq_nr < 0) return; + if (request_irq(irq_nr, sa1101_IRQ_demux, SA_INTERRUPT, "SA1101", NULL) < 0) + printk(KERN_ERR "SA1101: unable to claim IRQ %d\n", irq_nr); + } + + /* + * wake up the 1101 + */ + + void sa1101_wake(void) + { + unsigned long flags; + extern int sa1101_init_proc(); + + if (request_resource(&iomem_resource, &sa1101_resource)) + { + printk("Cannot get iomem_resource\n"); + return; + } + + local_irq_save(flags); + + /* Control register setup */ + + SKCR = SKCR_VCOON | SKCR_PLLEn | SKCR_IRefEn ; + mdelay(100); + SKCR |= SKCR_BCLKEn; + udelay(100); + + /* Snoop register */ + SNPR = 0; + + /* ---------------------------------------------------------- */ + /* Set up clocks */ + /* ---------------------------------------------------------- */ + + SKPCR = + SKPCR_UCLKEn | /* USB */ + SKPCR_PCLKEn | /* PS/2 */ + SKPCR_ICLKEn | /* Interrupt controller */ + SKPCR_VCLKEn | /* Video controller */ + SKPCR_PICLKEn | /* parallel port */ + SKPCR_nKPADEn | /* multiplexer */ + SKPCR_DCLKEn; /* DACs */ + + SKCDR = 0x30000027; + SKPCR=0xFFFFFFFF; + VMCCR=0x100; + SMCR = 0x1E; + SNPR=0; + + + /* don't need USB */ + /* don't need parallel port */ + /* don't need keypad clock */ + /* should have enabled PS/2 clock as well */ + + local_irq_restore(flags); + } + + + /* ************************************************************************ */ + /* This is the place for PM code on this device. */ + /* ************************************************************************ */ + + void sa1101_doze(void) + { + /* not implemented */ + } diff -r -c --unidirectional-new-file kernel/arch/arm/mach-sa1100/ssp.c kernel-jornada/arch/arm/mach-sa1100/ssp.c *** kernel/arch/arm/mach-sa1100/ssp.c 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/arch/arm/mach-sa1100/ssp.c 2004-01-22 16:27:17.000000000 -0500 *************** *** 0 **** --- 1,208 ---- + /* + * linux/arch/arm/mach-sa1100/ssp.c + * + * Copyright (C) 2003 Russell King. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Generic SSP driver. This provides the generic core for simple + * IO-based SSP applications. + */ + #include + #include + #include + #include + #include + #include + #include + + #include + #include + #include + #include + + static void ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) + { + unsigned int status = Ser4SSSR; + + if (status & SSSR_ROR) { + printk(KERN_WARNING "SSP: receiver overrun\n"); + } + + Ser4SSSR = SSSR_ROR; + } + + /** + * ssp_write_word - write a word to the SSP port + * @data: 16-bit, MSB justified data to write. + * + * Wait for a free entry in the SSP transmit FIFO, and write a data + * word to the SSP port. + * + * The caller is expected to perform the necessary locking. + * + * Returns: + * %-ETIMEDOUT timeout occurred (for future) + * 0 success + */ + int ssp_write_word(u16 data) + { + while (!(Ser4SSSR & SSSR_TNF)) + cpu_relax(); + + Ser4SSDR = data; + + return 0; + } + + /** + * ssp_read_word - read a word from the SSP port + * + * Wait for a data word in the SSP receive FIFO, and return the + * received data. Data is LSB justified. + * + * Note: Currently, if data is not expected to be received, this + * function will wait for ever. + * + * The caller is expected to perform the necessary locking. + * + * Returns: + * %-ETIMEDOUT timeout occurred (for future) + * 16-bit data success + */ + int ssp_read_word(void) + { + while (!(Ser4SSSR & SSSR_RNE)) + cpu_relax(); + + return Ser4SSDR; + } + + /** + * ssp_flush - flush the transmit and receive FIFOs + * + * Wait for the SSP to idle, and ensure that the receive FIFO + * is empty. + * + * The caller is expected to perform the necessary locking. + */ + void ssp_flush(void) + { + do { + while (Ser4SSSR & SSSR_RNE) { + (void) Ser4SSDR; + } + } while (Ser4SSSR & SSSR_BSY); + } + + /** + * ssp_enable - enable the SSP port + * + * Turn on the SSP port. + */ + void ssp_enable(void) + { + Ser4SSCR0 |= SSCR0_SSE; + } + + /** + * ssp_disable - shut down the SSP port + * + * Turn off the SSP port, optionally powering it down. + */ + void ssp_disable(void) + { + Ser4SSCR0 &= ~SSCR0_SSE; + } + + /** + * ssp_save_state - save the SSP configuration + * @ssp: pointer to structure to save SSP configuration + * + * Save the configured SSP state for suspend. + */ + void ssp_save_state(struct ssp_state *ssp) + { + ssp->cr0 = Ser4SSCR0; + ssp->cr1 = Ser4SSCR1; + + Ser4SSCR0 &= ~SSCR0_SSE; + } + + /** + * ssp_restore_state - restore a previously saved SSP configuration + * @ssp: pointer to configuration saved by ssp_save_state + * + * Restore the SSP configuration saved previously by ssp_save_state. + */ + void ssp_restore_state(struct ssp_state *ssp) + { + Ser4SSSR = SSSR_ROR; + + Ser4SSCR0 = ssp->cr0 & ~SSCR0_SSE; + Ser4SSCR1 = ssp->cr1; + Ser4SSCR0 = ssp->cr0; + } + + /** + * ssp_init - setup the SSP port + * + * initialise and claim resources for the SSP port. + * + * Returns: + * %-ENODEV if the SSP port is unavailable + * %-EBUSY if the resources are already in use + * %0 on success + */ + int ssp_init(void) + { + int ret; + + if (!(PPAR & PPAR_SPR) && (Ser4MCCR0 & MCCR0_MCE)) + return -ENODEV; + + if (!request_mem_region(__PREG(Ser4SSCR0), 0x18, "SSP")) { + return -EBUSY; + } + + Ser4SSSR = SSSR_ROR; + + ret = request_irq(IRQ_Ser4SSP, ssp_interrupt, 0, "SSP", NULL); + if (ret) + goto out_region; + + return 0; + + out_region: + release_mem_region(__PREG(Ser4SSCR0), 0x18); + return ret; + } + + /** + * ssp_exit - undo the effects of ssp_init + * + * release and free resources for the SSP port. + */ + void ssp_exit(void) + { + Ser4SSCR0 &= ~SSCR0_SSE; + + free_irq(IRQ_Ser4SSP, NULL); + release_mem_region(__PREG(Ser4SSCR0), 0x18); + } + + MODULE_AUTHOR("Russell King"); + MODULE_DESCRIPTION("SA11x0 SSP PIO driver"); + MODULE_LICENSE("GPL"); + + EXPORT_SYMBOL(ssp_write_word); + EXPORT_SYMBOL(ssp_read_word); + EXPORT_SYMBOL(ssp_flush); + EXPORT_SYMBOL(ssp_enable); + EXPORT_SYMBOL(ssp_disable); + EXPORT_SYMBOL(ssp_save_state); + EXPORT_SYMBOL(ssp_restore_state); + EXPORT_SYMBOL(ssp_init); + EXPORT_SYMBOL(ssp_exit); diff -r -c --unidirectional-new-file kernel/arch/arm/Makefile kernel-jornada/arch/arm/Makefile *** kernel/arch/arm/Makefile 2003-07-09 10:10:56.000000000 -0400 --- kernel-jornada/arch/arm/Makefile 2004-01-23 19:54:29.000000000 -0500 *************** *** 184,189 **** --- 184,194 ---- MACHINE = omaha endif + ifeq ($(CONFIG_SA1100_JORNADA820),y) + TEXTADDR = 0xc0208000 + MACHINE = sa1100 + endif + ifeq ($(CONFIG_XIP_KERNEL),y) DATAADDR := $(TEXTADDR) # Replace phys addr with virt addr while keeping offset from base. *************** *** 346,351 **** --- 351,357 ---- i:; @$(MAKEBOOT) install zi:; @$(MAKEBOOT) zinstall bp:; @$(MAKEBOOT) bootpImage + j820:; @$(MAKEBOOT) j820 # # Configuration targets. Use these to select a diff -r -c --unidirectional-new-file kernel/arch/arm/mm/CVS/Entries kernel-jornada/arch/arm/mm/CVS/Entries *** kernel/arch/arm/mm/CVS/Entries 2004-01-24 09:27:32.000000000 -0500 --- kernel-jornada/arch/arm/mm/CVS/Entries 2004-01-24 09:20:06.000000000 -0500 *************** *** 7,13 **** /fault-armo.c/1.4/Thu Jan 11 20:24:28 2001/-ko/ /fault-armv.c/1.29/Fri Sep 27 13:50:27 2002/-ko/ /fault-common.c/1.17/Wed Feb 19 19:03:00 2003/-ko/ - /init.c/1.23/Wed Feb 19 19:03:00 2003/-ko/ /ioremap.c/1.7/Fri Sep 27 13:50:27 2002/-ko/ /mm-armo.c/1.6/Sat Apr 14 23:21:07 2001/-ko/ /mm-armv.c/1.18/Wed Feb 19 19:03:00 2003/-ko/ --- 7,12 ---- *************** *** 27,34 **** /proc-arm922.S/1.4/Wed Feb 19 19:03:01 2003/-ko/ /proc-arm925.S/1.1/Wed Feb 19 19:03:01 2003// /proc-arm926.S/1.5/Wed Feb 19 19:03:01 2003/-ko/ - /proc-sa110.S/1.18/Wed Feb 19 19:03:01 2003/-ko/ /proc-syms.c/1.1/Thu Sep 14 15:29:40 2000/-ko/ /proc-xscale.S/1.9/Sat Dec 6 14:22:45 2003/-ko/ /small_page.c/1.6/Fri Sep 27 13:50:27 2002/-ko/ D --- 26,34 ---- /proc-arm922.S/1.4/Wed Feb 19 19:03:01 2003/-ko/ /proc-arm925.S/1.1/Wed Feb 19 19:03:01 2003// /proc-arm926.S/1.5/Wed Feb 19 19:03:01 2003/-ko/ /proc-syms.c/1.1/Thu Sep 14 15:29:40 2000/-ko/ /proc-xscale.S/1.9/Sat Dec 6 14:22:45 2003/-ko/ /small_page.c/1.6/Fri Sep 27 13:50:27 2002/-ko/ + /init.c/1.23/Thu Jan 22 22:52:57 2004/-ko/ + /proc-sa110.S/1.18/Sat Jan 24 14:20:06 2004/-ko/ D diff -r -c --unidirectional-new-file kernel/arch/arm/mm/init.c kernel-jornada/arch/arm/mm/init.c *** kernel/arch/arm/mm/init.c 2003-02-19 14:03:00.000000000 -0500 --- kernel-jornada/arch/arm/mm/init.c 2004-01-22 21:45:19.000000000 -0500 *************** *** 398,403 **** --- 398,416 ---- */ reserve_bootmem_node(pgdat, PHYS_OFFSET, __pa(swapper_pg_dir)-PHYS_OFFSET); #endif + #ifdef CONFIG_SA1100_JORNADA820 + /* + * 2004/01/22 galmasi@optonline.net + * Unfortunately we have to reserve this area because + * something is changing things in it after the Linux + * boot. Moreover, this is the area where WinCE keeps + * its stuff. Change memory in this area, and you are + * in for a nasty surprise when you next try to boot + * WinCE on the machine. + * This reservation will be removed later. + */ + reserve_bootmem_node(pgdat, PHYS_OFFSET, __pa(swapper_pg_dir)-PHYS_OFFSET); + #endif } /* diff -r -c --unidirectional-new-file kernel/Documentation/arm/Jornada820 kernel-jornada/Documentation/arm/Jornada820 *** kernel/Documentation/arm/Jornada820 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/Documentation/arm/Jornada820 2004-01-24 13:29:03.000000000 -0500 *************** *** 0 **** --- 1,52 ---- + Instructions for installing the linux kernel on the Jornada 820. + + + Prerequisites: + + * A Compactflash card that will fit into the Jornada's CF slot. I use + a small 32MB Sandisk. + + * A net-connected IA32/linux workstation with the arm cross-toolchain + installed. Almost any toolchain should do - I use a homebrew one, but + you should get the same results with the binaries downloaded from + handhelds.org + + - check out the handhelds.org kernel using CVS: + + cvs -d :pserver:anoncvs@cvs.handhelds.org:/cvs checkout linux/kernel + + (Refer to handhelds.org for instructions) + + - apply the patch (at later stages, the kernel will already + have been patched - look for a copy of this file in + kernel/Documentation/arm: its presence indicates that the kernel is + already patched). + + - copy the configuration file and adjust to your liking. + The default configuration file is in + + kernel/arch/arm/def-configs/jornada820 + + - compile the kernel. + + cd kernel + make ARCH=arm \ + CROSS_COMPILE=arm-linux- \ + INITRD=/home/galmasi/jornadaport/ramdisk/ramdiskimage \ + oldconfig zImage j820 + + The toolchain should be in your path, or specify the full path in the + definition of CROSS_COMPILE; The initial ramdisk should be a + pre-compiled root file system image for the ARM architecture. The kernel + understands the minix and ext2 file systems by default. + + What you end up with is the ELF binary kernel/arch/arm/boot/j820/j820. + + Step 5 - boot. + + Copy hpcboot.exe and j820 onto the CF card mentioned earlier, and + start hpcboot on the jornada. Let it boot j820. You should get a + prompt on the Jornada820 screen. If you add the following to the + kernel's command line: "console=ttySA0" you will see the boot message + on the serial port. + diff -r -c --unidirectional-new-file kernel/drivers/char/j820_keyb.c kernel-jornada/drivers/char/j820_keyb.c *** kernel/drivers/char/j820_keyb.c 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/drivers/char/j820_keyb.c 2004-01-22 21:21:40.000000000 -0500 *************** *** 0 **** --- 1,144 ---- + /* + * Jornada 820 keyboard driver. + * 2004/01/22 George Almasi (galmasi@optonline.net) + * Modelled after gc_keyb.c + * + * Cannot (yet) handle Fn key combinations and Power On/Off + * Depends on Russel King's SSP driver to work. + */ + + #include + #include + #include + #include + #include + #include + + #include + #include + #include + + /* + 00-07: - F1 1 q a z \t - + 08-0F: - F2 2 w s x ^1 - + 10-17: - F3 3 e d c - Alt + 18-1F: Wn F4 4 r f v - ` + 20-27: - F5 5 t g b - - + 28-2F: SP F6 6 y h n - - + 30-37: Fn F7 7 u j m < - + 38-3F: Dl F8 8 i k ; > - + 40-47: - F9 9 o l ' ? UP + 48-4F: DN FA 0 p [ ] En LT + 50-57: RT FB - + BS \ ^2 - + 58-5F: - - - - - - - - + 60-67: Es - - - - - - - + 68-6F: Ctrl - - - - - - + 70-7F: Off + */ + + + static char kbmap[128] = { + /* 00-07: */ 0, 59, 2, 16, 30, 44, 15, 0, + /* 08-0F: */ 0, 60, 3, 17, 31, 45, 42, 0, + /* 10-17: */ 0, 61, 4, 18, 32, 46, 0, 56, + /* 18-1F: */ 0, 62, 5, 19, 33, 47, 0, 55, + /* 20-27: */ 0, 63, 6, 20, 34, 48, 0, 0, + /* 28-2F: */ 57, 64, 7, 21, 35, 49, 0, 0, + /* 30-37: */ 0, 65, 8, 22, 36, 50, 51, 0, + /* 38-3F: */ 83, 66, 9, 23, 37, 39, 52, 0, + /* 40-47: */ 0, 67, 10, 24, 38, 41, 53, 8, + /* 48-4F: */ 2, 68, 11, 25, 26, 27, 28, 4, + /* 50-57: */ 6, 0, 12, 13, 14, 43, 54, 0, + /* 58-5F: */ 0, 0, 0, 0, 0, 0, 0, 0, + /* 60-67: */ 1, 0, 0, 0, 0, 0, 0, 0, + /* 68-6F: */ 97, 0, 0, 0, 0, 0, 0, 0, + /* 70-77: */ 0, 0, 0, 0, 0, 0, 0, 0, + /* 78-7F: */ 0, 0, 0, 0, 0, 0, 0, 0 + }; + + int j820_kbd_setkeycode(unsigned int scancode, unsigned int keycode) + { + kbmap[scancode&0x7F] = keycode; + return 0; + } + + int j820_kbd_getkeycode(unsigned int scancode) + { + return kbmap[scancode &0x7F]; + } + + int j820_kbd_translate(unsigned char scancode, unsigned char *keycode, + char raw_mode) + { + *keycode = kbmap[scancode & 0x7F]; + return 1; + } + + char j820_kbd_unexpected_up(unsigned char keycode) + { + return 0; + } + + static void j820_kbd_irq(int irq, void *dev_id, struct pt_regs *regs) + { + + #ifdef CONFIG_VT + kbd_pt_regs = regs; + #endif + disable_irq(irq); + + ssp_write_word(0x8200); + unsigned scancode = ssp_read_word(); + handle_scancode(scancode, (scancode & 0x80) ? 0 : 1); + + enable_irq(irq); + } + + void __init jornada820_kbd_init_hw(void) + { + printk (KERN_INFO "Jornada 820 keyboard driver\n"); + + k_setkeycode = j820_kbd_setkeycode; + k_getkeycode = j820_kbd_getkeycode; + k_translate = j820_kbd_translate; + k_unexpected_up = j820_kbd_unexpected_up; + + /* ----------- */ + /* reset MCU */ + /* ----------- */ + + PPDR |= PPC_L_FCLK; + PPSR &= ~PPC_L_FCLK; + udelay(3); + PPSR |= PPC_L_FCLK; + mdelay(10); + + /* ------------------- */ + /* Initialize the SSP */ + /* ------------------- */ + + Ser4MCCR0 &= ~MCCR0_MCE; /* disable MCP */ + PPAR |= PPAR_SSPGPIO; /* assign alternate pins to SSP */ + GAFR |= (GPIO_GPIO10 | GPIO_GPIO11 | GPIO_GPIO12 | GPIO_GPIO13); + GPDR |= (GPIO_GPIO10 | GPIO_GPIO12 | GPIO_GPIO13); + GPDR &= ~GPIO_GPIO11; + + if (ssp_init()) printk("ssp_init() failed\n"); + + Ser4SSCR0 = /* SSCR0_DataSize(8) | SSCR0_Motorola | */ + 0x0387; /* 8 bit Motorola, 460800 bit rate */ + Ser4SSCR1 = SSCR1_RIE | SSCR1_SClkIactH | SSCR1_SClk1_2P; + ssp_enable(); + + /* ------------------------------ */ + /* Turn on the keyboard interrupt */ + /* ------------------------------ */ + + set_GPIO_IRQ_edge (GPIO_JORNADA820_KEYBOARD, GPIO_FALLING_EDGE); + if (request_irq(GPIO_JORNADA820_KEYBOARD_IRQ, + j820_kbd_irq, + 0, + "j820_kbd_irq", + NULL) != 0) + printk("Could not allocate IRQ for kbd!\n"); + } diff -r -c --unidirectional-new-file kernel/drivers/char/Makefile kernel-jornada/drivers/char/Makefile *** kernel/drivers/char/Makefile 2003-11-22 08:34:20.000000000 -0500 --- kernel-jornada/drivers/char/Makefile 2004-01-22 06:36:32.000000000 -0500 *************** *** 119,124 **** --- 119,127 ---- ifeq ($(CONFIG_ARCH_FORTUNET),y) KEYMAP := defkeymap.o endif + ifeq ($(CONFIG_SA1100_JORNADA820),y) + KEYBD += j820_keyb.o + endif endif ifeq ($(ARCH),sh) diff -r -c --unidirectional-new-file kernel/drivers/video/sa1100fb.c kernel-jornada/drivers/video/sa1100fb.c *** kernel/drivers/video/sa1100fb.c 2003-04-25 09:14:14.000000000 -0400 --- kernel-jornada/drivers/video/sa1100fb.c 2004-01-22 21:31:07.000000000 -0500 *************** *** 162,167 **** --- 162,170 ---- * 2002/02/21: * - Added support for ICP LCD-Kit01 on Frodo. * - Added support for backlight via CPLDs on Frodo. + * + * 2004/01/22: + * - Added support for Jornada 820 w/ backlight control. */ #include *************** *** 704,709 **** --- 707,728 ---- }; #endif + #ifdef CONFIG_SA1100_JORNADA820 + static struct sa1100fb_mach_info j820_info __initdata = { + pixclock: 152500, bpp: 8, + xres: 640, yres: 480, + + hsync_len: 11, vsync_len: 9, + left_margin: 2, upper_margin: 0, + right_margin: 2, lower_margin: 0, + + sync: FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + + lccr0: LCCR0_LEN | LCCR0_Color | LCCR0_Dual | LCCR0_DPD, + lccr3: /* LCCR3_PixClkDiv(46) | */ LCCR3_ACBsDiv(512) + }; + #endif + static struct sa1100fb_mach_info * __init sa1100fb_get_machine_info(struct sa1100fb_info *fbi) *************** *** 829,834 **** --- 848,856 ---- inf = &jornada56x_info; } #endif + #ifdef CONFIG_SA1100_JORNADA820 + inf = &j820_info; + #endif return inf; } *************** *** 1647,1652 **** --- 1669,1677 ---- if (machine_is_jornada56x()) JORNADA_GPDPCR = JORNADA_BACKLIGHT; // Turn on the front light #endif + #ifdef CONFIG_SA1100_JORNADA820 + GPSR = GPIO_JORNADA820_BACKLIGHTON; + #endif } /* *************** *** 1682,1687 **** --- 1707,1715 ---- if (machine_is_jornada56x()) JORNADA_GPDPSR = JORNADA_BACKLIGHT; // Turn off the front light #endif + #ifdef CONFIG_SA1100_JORNADA820 + GPCR = GPIO_JORNADA820_BACKLIGHTON; + #endif } static void sa1100fb_power_up_lcd(struct sa1100fb_info *fbi) diff -r -c --unidirectional-new-file kernel/include/asm-arm/arch-sa1100/hardware.h kernel-jornada/include/asm-arm/arch-sa1100/hardware.h *** kernel/include/asm-arm/arch-sa1100/hardware.h 2002-09-27 09:54:48.000000000 -0400 --- kernel-jornada/include/asm-arm/arch-sa1100/hardware.h 2004-01-24 13:40:27.000000000 -0500 *************** *** 217,220 **** --- 217,225 ---- #include "flexanet.h" #endif + #if defined(CONFIG_SA1100_JORNADA820) + #include "jornada820.h" + #include "SA-1101.h" + #endif + #endif /* _ASM_ARCH_HARDWARE_H */ diff -r -c --unidirectional-new-file kernel/include/asm-arm/arch-sa1100/irqs.h kernel-jornada/include/asm-arm/arch-sa1100/irqs.h *** kernel/include/asm-arm/arch-sa1100/irqs.h 2003-12-05 11:40:14.000000000 -0500 --- kernel-jornada/include/asm-arm/arch-sa1100/irqs.h 2004-01-24 13:40:12.000000000 -0500 *************** *** 180,185 **** --- 180,187 ---- #define NR_IRQS (IRQ_BOARD_END + 64) #elif defined(CONFIG_SA1100_H3800) #define NR_IRQS (IRQ_BOARD_END) + #elif defined(CONFIG_SA1100_JORNADA820) + #define NR_IRQS (IRQ_SA1101_END) #else #define NR_IRQS (IRQ_BOARD_START) #endif *************** *** 226,228 **** --- 228,308 ---- #define IRQ_IPAQ_SLEEVE_6 (IPAQ_SLEEVE_IRQ_START + 6) #define IPAQ_SLEEVE_IRQ_COUNT 7 + + /* Jornada 820 (SA1101) */ + #define IRQ_SA1101_START (IRQ_BOARD_START+0) + #define IRQ_SA1101_GPAIN0 (IRQ_SA1101_START+0) /* GPIO port A */ + #define IRQ_SA1101_GPAIN1 (IRQ_SA1101_START+1) + #define IRQ_SA1101_GPAIN2 (IRQ_SA1101_START+2) + #define IRQ_SA1101_GPAIN3 (IRQ_SA1101_START+3) + #define IRQ_SA1101_GPAIN4 (IRQ_SA1101_START+4) + #define IRQ_SA1101_GPAIN5 (IRQ_SA1101_START+5) + #define IRQ_SA1101_GPAIN6 (IRQ_SA1101_START+6) + #define IRQ_SA1101_GPAIN7 (IRQ_SA1101_START+7) + + #define IRQ_SA1101_GPBIN0 (IRQ_SA1101_START+8) /* GPIO port B */ + #define IRQ_SA1101_GPBIN1 (IRQ_SA1101_START+9) + #define IRQ_SA1101_GPBIN2 (IRQ_SA1101_START+10) + #define IRQ_SA1101_GPBIN3 (IRQ_SA1101_START+11) + #define IRQ_SA1101_GPBIN4 (IRQ_SA1101_START+12) + #define IRQ_SA1101_GPBIN5 (IRQ_SA1101_START+13) + #define IRQ_SA1101_GPBIN6 (IRQ_SA1101_START+14) + /* 15 is reserved */ + + #define IRQ_SA1101_KPXIn0 (IRQ_SA1101_START+16) /* keypad X */ + #define IRQ_SA1101_KPXIn1 (IRQ_SA1101_START+17) + #define IRQ_SA1101_KPXIn2 (IRQ_SA1101_START+18) + #define IRQ_SA1101_KPXIn3 (IRQ_SA1101_START+19) + #define IRQ_SA1101_KPXIn4 (IRQ_SA1101_START+20) + #define IRQ_SA1101_KPXIn5 (IRQ_SA1101_START+21) + #define IRQ_SA1101_KPXIn6 (IRQ_SA1101_START+22) + #define IRQ_SA1101_KPXIn7 (IRQ_SA1101_START+23) + + #define IRQ_SA1101_KPYIn0 (IRQ_SA1101_START+24) /* keypad Y */ + #define IRQ_SA1101_KPYIn1 (IRQ_SA1101_START+25) + #define IRQ_SA1101_KPYIn2 (IRQ_SA1101_START+26) + #define IRQ_SA1101_KPYIn3 (IRQ_SA1101_START+27) + #define IRQ_SA1101_KPYIn4 (IRQ_SA1101_START+28) + #define IRQ_SA1101_KPYIn5 (IRQ_SA1101_START+29) + #define IRQ_SA1101_KPYIn6 (IRQ_SA1101_START+30) + #define IRQ_SA1101_KPYIn7 (IRQ_SA1101_START+31) + #define IRQ_SA1101_KPYIn8 (IRQ_SA1101_START+32) + #define IRQ_SA1101_KPYIn9 (IRQ_SA1101_START+33) + #define IRQ_SA1101_KPYIn10 (IRQ_SA1101_START+34) + #define IRQ_SA1101_KPYIn11 (IRQ_SA1101_START+35) + #define IRQ_SA1101_KPYIn12 (IRQ_SA1101_START+36) + #define IRQ_SA1101_KPYIn13 (IRQ_SA1101_START+37) + #define IRQ_SA1101_KPYIn14 (IRQ_SA1101_START+38) + #define IRQ_SA1101_KPYIn15 (IRQ_SA1101_START+39) + + #define IRQ_SA1101_MSTXINT (IRQ_SA1101_START+40) /* PS/2 mouse */ + #define IRQ_SA1101_MSRXINT (IRQ_SA1101_START+41) + #define IRQ_SA1101_TPTXINT (IRQ_SA1101_START+42) /* PS/2 trackpad */ + #define IRQ_SA1101_TPRXINT (IRQ_SA1101_START+43) + + #define IRQ_SA1101_INTREQTRC (IRQ_SA1101_START+44) /* IEEE 1284 intf */ + #define IRQ_SA1101_INTREQTIM (IRQ_SA1101_START+45) + #define IRQ_SA1101_INTREQRAV (IRQ_SA1101_START+46) + #define IRQ_SA1101_INTREQINT (IRQ_SA1101_START+47) + #define IRQ_SA1101_INTREQEMP (IRQ_SA1101_START+48) + #define IRQ_SA1101_INTREQDAT (IRQ_SA1101_START+49) + + #define IRQ_SA1101_VIDEOINT (IRQ_SA1101_START+50) /* VGA controller */ + + #define IRQ_SA1101_FIFOINT (IRQ_SA1101_START+51) /* update fifo */ + + #define IRQ_SA1101_NIRQHCIM (IRQ_SA1101_START+52) /* USB controller */ + #define IRQ_SA1101_IRQHCIBUFFACC (IRQ_SA1101_START+53) + #define IRQ_SA1101_IRQHCIRMTWKP (IRQ_SA1101_START+54) + #define IRQ_SA1101_NHCIMFCIR (IRQ_SA1101_START+55) + #define IRQ_SA1101_USBERROR (IRQ_SA1101_START+56) + + #define IRQ_SA1101_S0_READY_NIREQ (IRQ_SA1101_START+57) /* PCMCIA interface */ + #define IRQ_SA1101_S1_READY_NIREQ (IRQ_SA1101_START+58) + #define IRQ_SA1101_S0_CDVALID (IRQ_SA1101_START+59) + #define IRQ_SA1101_S1_CDVALID (IRQ_SA1101_START+60) + #define IRQ_SA1101_S0_BVD1_STSCHG (IRQ_SA1101_START+61) + #define IRQ_SA1101_S1_BVD1_STSCHG (IRQ_SA1101_START+62) + + #define IRQ_SA1101_USBRESUME (IRQ_SA1101_START+63) + #define IRQ_SA1101_END (IRQ_SA1101_START+64) diff -r -c --unidirectional-new-file kernel/include/asm-arm/arch-sa1100/jornada820.h kernel-jornada/include/asm-arm/arch-sa1100/jornada820.h *** kernel/include/asm-arm/arch-sa1100/jornada820.h 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/include/asm-arm/arch-sa1100/jornada820.h 2004-01-22 21:32:01.000000000 -0500 *************** *** 0 **** --- 1,64 ---- + /* + * linux/include/asm-arm/arch-sa1100/jornada820.h + * + * 2004/01/22 George Almasi (galmasi@optonline.net) + * Based on John Ankcorn's Jornada 720 file + * + * This file contains the hardware specific definitions for HP Jornada 820 + * + */ + + #ifndef __ASM_ARCH_HARDWARE_H + #error "include instead" + #endif + + + /* + * The SA1101 on this machine - physical address + */ + + #define SA1101_BASE (0x18000000) + #define SA1101_p2v( x ) ((x) - SA1101_BASE + 0xf4000000) + #define SA1101_v2p( x ) ((x) - 0xf4000000 + SA1101_BASE) + #ifndef Word + #define Word unsigned + #endif + + /* + * The keyboard's GPIO and IRQ + */ + + #define GPIO_JORNADA820_KEYBOARD GPIO_GPIO(0) + #define GPIO_JORNADA820_KEYBOARD_IRQ IRQ_GPIO0 + + /* + * GPIO 20 is the reset for the SA-1101. Hold to 1 to reset SA-1101. + */ + + #define GPIO_JORNADA820_SA1101RESET GPIO_GPIO(20) + + /* + * GPIO 23 is the backlight switch. Turn to 0. + */ + + #define GPIO_JORNADA820_BACKLIGHTON GPIO_GPIO(23) + + /* + * DACDR1 and DACDR2 are the knobs for brightness and contrast + */ + + #define DAC_JORNADA820_CONTRAST DACDR1 + #define DAC_JORNADA820_BRIGHTNESS DACDR2 + + /* + * The mouse GPIO and IRQ (not confirmed) + */ + + #define GPIO_JORNADA820_MOUSE GPIO_GPIO(9) + #define IRQ_JORNADA820_MOUSE IRQ_GPIO9 + + /* + * The SA1101's chain interrupt. + */ + + #define IRQ_JORNADA820_SA1101_CHAIN IRQ_GPIO14 diff -r -c --unidirectional-new-file kernel/include/asm-arm/arch-sa1100/keyboard.h kernel-jornada/include/asm-arm/arch-sa1100/keyboard.h *** kernel/include/asm-arm/arch-sa1100/keyboard.h 2003-02-18 11:47:43.000000000 -0500 --- kernel-jornada/include/asm-arm/arch-sa1100/keyboard.h 2004-01-24 13:41:29.000000000 -0500 *************** *** 49,54 **** --- 49,57 ---- if (machine_is_jornada720()) jornada720_kbd_init_hw(); #endif + #ifdef CONFIG_SA1100_JORNADA820 + jornada820_kbd_init_hw(); + #endif } #endif /* _SA1100_KEYBOARD_H */ diff -r -c --unidirectional-new-file kernel/include/asm-arm/hardware/ssp.h kernel-jornada/include/asm-arm/hardware/ssp.h *** kernel/include/asm-arm/hardware/ssp.h 1969-12-31 19:00:00.000000000 -0500 --- kernel-jornada/include/asm-arm/hardware/ssp.h 2004-01-22 16:28:53.000000000 -0500 *************** *** 0 **** --- 1,28 ---- + /* + * ssp.h + * + * Copyright (C) 2003 Russell King, All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + #ifndef SSP_H + #define SSP_H + + struct ssp_state { + unsigned int cr0; + unsigned int cr1; + }; + + int ssp_write_word(u16 data); + int ssp_read_word(void); + void ssp_flush(void); + void ssp_enable(void); + void ssp_disable(void); + void ssp_save_state(struct ssp_state *ssp); + void ssp_restore_state(struct ssp_state *ssp); + int ssp_init(void); + void ssp_exit(void); + + #endif