diff options
Diffstat (limited to 'packages/uboot/u-boot-mkimage-gta01-native/uboot-gta02.patch')
-rw-r--r-- | packages/uboot/u-boot-mkimage-gta01-native/uboot-gta02.patch | 1560 |
1 files changed, 0 insertions, 1560 deletions
diff --git a/packages/uboot/u-boot-mkimage-gta01-native/uboot-gta02.patch b/packages/uboot/u-boot-mkimage-gta01-native/uboot-gta02.patch deleted file mode 100644 index ca54ebeff7..0000000000 --- a/packages/uboot/u-boot-mkimage-gta01-native/uboot-gta02.patch +++ /dev/null @@ -1,1560 +0,0 @@ -Add support for new GTA02 version of Neo1973 - -Index: u-boot/Makefile -=================================================================== ---- u-boot.orig/Makefile -+++ u-boot/Makefile -@@ -2038,6 +2038,10 @@ - sbc2410x_config: unconfig - @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0 - -+gta02_config \ -+gta02v1_config : unconfig -+ @sh board/neo1973/gta02/split_by_variant.sh $@ -+ - gta01_config \ - gta01v3_config \ - gta01bv2_config \ -Index: u-boot/board/neo1973/gta02/Makefile -=================================================================== ---- /dev/null -+++ u-boot/board/neo1973/gta02/Makefile -@@ -0,0 +1,64 @@ -+# -+# (C) Copyright 2000, 2001, 2002 -+# Wolfgang Denk, DENX Software Engineering, wd@denx.de. -+# -+# See file CREDITS for list of people who contributed to this -+# project. -+# -+# 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., 59 Temple Place, Suite 330, Boston, -+# MA 02111-1307 USA -+# -+ -+include $(TOPDIR)/config.mk -+ -+LIB = lib$(BOARD).a -+ -+OBJS := gta02.o pcf50633.o ../common/cmd_neo1973.o ../common/jbt6k74.o ../common/udc.o ../common/bootmenu.o -+SOBJS := ../common/lowlevel_init.o -+ -+.PHONY: all -+ -+all: $(LIB) lowevel_foo.bin -+ -+$(LIB): $(OBJS) $(SOBJS) -+ $(AR) crv $@ $(OBJS) $(SOBJS) -+ -+lowlevel_foo.o: ../common/lowlevel_foo.S -+ $(CC) -c -DTEXT_BASE=0x33F80000 -march=armv4 \ -+ -o lowlevel_foo.o ../common/lowlevel_foo.S -+ -+lowlevel_foo: lowlevel_foo.o ../common/lowlevel_init.o ../common/lowlevel_foo.lds -+ $(LD) -T ../common/lowlevel_foo.lds -Ttext 0x33f80000 -Bstatic \ -+ ../common/lowlevel_init.o lowlevel_foo.o -o lowlevel_foo -+ -+lowevel_foo.bin: lowlevel_foo -+ $(CROSS_COMPILE)objcopy --gap-fill=0xff -O binary \ -+ lowlevel_foo lowlevel_foo.bin -+ -+ -+clean: -+ rm -f $(SOBJS) $(OBJS) lowlevel_foo lowlevel_foo.o -+ -+distclean: clean -+ rm -f $(LIB) core *.bak .depend lowlevel_foo.bin -+ -+######################################################################### -+ -+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) -+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ -+ -+-include .depend -+ -+######################################################################### -Index: u-boot/board/neo1973/gta02/gta02.c -=================================================================== ---- /dev/null -+++ u-boot/board/neo1973/gta02/gta02.c -@@ -0,0 +1,313 @@ -+/* -+ * (C) 2006-2007 by OpenMoko, Inc. -+ * Author: Harald Welte <laforge@openmoko.org> -+ * -+ * based on existing S3C2410 startup code in u-boot: -+ * -+ * (C) Copyright 2002 -+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com> -+ * Marius Groeger <mgroeger@sysgo.de> -+ * -+ * (C) Copyright 2002 -+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch> -+ * -+ * See file CREDITS for list of people who contributed to this -+ * project. -+ * -+ * 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., 59 Temple Place, Suite 330, Boston, -+ * MA 02111-1307 USA -+ */ -+ -+#include <common.h> -+#include <s3c2440.h> -+#include <i2c.h> -+ -+#include "../common/neo1973.h" -+#include "../common/jbt6k74.h" -+ -+#include "pcf50633.h" -+ -+DECLARE_GLOBAL_DATA_PTR; -+ -+/* That many seconds the power key needs to be pressed to power up */ -+#define POWER_KEY_SECONDS 2 -+ -+#define M_MDIV 0x7f /* Fout = 405.00MHz */ -+#define M_PDIV 0x2 -+#define M_SDIV 0x1 -+ -+#define U_M_MDIV 0x38 -+#define U_M_PDIV 0x2 -+#define U_M_SDIV 0x2 -+ -+unsigned int neo1973_wakeup_cause; -+extern int nobootdelay; -+ -+static inline void delay (unsigned long loops) -+{ -+ __asm__ volatile ("1:\n" -+ "subs %0, %1, #1\n" -+ "bne 1b":"=r" (loops):"0" (loops)); -+} -+ -+/* -+ * Miscellaneous platform dependent initialisations -+ */ -+ -+int board_init (void) -+{ -+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); -+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); -+ -+ /* to reduce PLL lock time, adjust the LOCKTIME register */ -+ clk_power->LOCKTIME = 0xFFFFFF; -+ -+ /* configure MPLL */ -+ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV); -+ -+ /* some delay between MPLL and UPLL */ -+ delay (4000); -+ -+ /* configure UPLL */ -+ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV); -+ -+ /* some delay between MPLL and UPLL */ -+ delay (8000); -+ -+ /* set up the I/O ports */ -+#if defined(CONFIG_ARCH_GTA02_v1) -+ gpio->GPACON = 0x007E1FFF; -+ gpio->GPADAT |= (1 << 16); /* Set GPA16 to high (nNAND_WP) */ -+ -+ gpio->GPBCON = 0x00155555; -+ gpio->GPBUP = 0x000007FF; -+ -+ gpio->GPCCON = 0x55551155; -+ gpio->GPCUP = 0x0000FFFF; -+ -+ gpio->GPDCON = 0x55555555; -+ gpio->GPDUP = 0x0000FFFF; -+ -+ gpio->GPECON = 0xAAAAAAAA; -+ gpio->GPEUP = 0x0000FFFF; -+ -+ gpio->GPFCON = 0x0000AAAA; -+ gpio->GPFUP = 0x000000FF; -+ -+ gpio->GPGCON = 0x013DFDFA; -+ gpio->GPGUP = 0x0000FFFF; -+ -+ gpio->GPHCON = 0x0028AAAA; -+ gpio->GPHUP = 0x000007FF; -+ -+ gpio->GPJCON = 0x1545541; -+#else -+#error Please define GTA02 version -+#endif -+ -+ /* arch number of SMDK2410-Board */ -+ gd->bd->bi_arch_number = MACH_TYPE_NEO1973_GTA02; -+ -+ /* adress of boot parameters */ -+ gd->bd->bi_boot_params = 0x30000100; -+ -+ icache_enable(); -+ dcache_enable(); -+ -+ return 0; -+} -+ -+int board_late_init(void) -+{ -+ extern unsigned char booted_from_nand; -+ unsigned char tmp; -+ char buf[32]; -+ int menu_vote = 0; /* <= 0: no, > 0: yes */ -+ int seconds = 0; -+ -+ /* Initialize the Power Management Unit with a safe register set */ -+ pcf50633_init(); -+#if 0 -+ /* if there's no other reason, must be regular reset */ -+ neo1973_wakeup_cause = NEO1973_WAKEUP_RESET; -+ -+ if (!booted_from_nand) -+ goto woken_by_reset; -+ -+ /* obtain wake-up reason, save INT1 in environment */ -+ tmp = pcf50606_reg_read(PCF50606_REG_INT1); -+ sprintf(buf, "0x%02x", tmp); -+ setenv("pcf50606_int1", buf); -+ -+ if (tmp & PCF50606_INT1_ALARM) { -+ /* we've been woken up by RTC alarm, boot */ -+ neo1973_wakeup_cause = NEO1973_WAKEUP_ALARM; -+ goto continue_boot; -+ } -+ if (tmp & PCF50606_INT1_EXTONR) { -+ /* we've been woken up by charger insert */ -+ neo1973_wakeup_cause = NEO1973_WAKEUP_CHARGER; -+ } -+ -+ if (tmp & PCF50606_INT1_ONKEYF) { -+ /* we've been woken up by a falling edge of the onkey */ -+ neo1973_wakeup_cause = NEO1973_WAKEUP_POWER_KEY; -+ } -+ -+ if (neo1973_wakeup_cause == NEO1973_WAKEUP_CHARGER) { -+ /* if we still think it was only a charger insert, boot */ -+ goto continue_boot; -+ } -+ -+woken_by_reset: -+ -+ while (neo1973_wakeup_cause == NEO1973_WAKEUP_RESET || -+ neo1973_on_key_pressed()) { -+ if (neo1973_aux_key_pressed()) -+ menu_vote++; -+ else -+ menu_vote--; -+ -+ if (neo1973_new_second()) -+ seconds++; -+ if (seconds >= POWER_KEY_SECONDS) -+ goto continue_boot; -+ } -+ /* Power off if minimum number of seconds not reached */ -+ neo1973_poweroff(); -+ -+continue_boot: -+ jbt6k74_init(); -+ jbt6k74_enter_state(JBT_STATE_NORMAL); -+ jbt6k74_display_onoff(1); -+#endif -+ -+ /* issue a short pulse with the vibrator */ -+ neo1973_vibrator(1); -+ udelay(50000); -+ neo1973_vibrator(0); -+ -+ /* switch on the backlight */ -+ neo1973_backlight(1); -+ -+#if 0 -+ { -+ /* check if sd card is inserted, and power-up if it is */ -+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); -+ if (!(gpio->GPFDAT & (1 << 5))) -+ gpio->GPBDAT &= ~(1 << 2); -+ } -+ -+ if (menu_vote > 0) { -+ bootmenu(); -+ nobootdelay = 1; -+ } -+#endif -+ -+ return 0; -+} -+ -+int dram_init (void) -+{ -+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1; -+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; -+ -+ return 0; -+} -+ -+u_int32_t get_board_rev(void) -+{ -+#if defined(CONFIG_ARCH_GTA02_v1) -+ return 0x00000310; -+#endif -+} -+ -+void neo1973_poweroff(void) -+{ -+ printf("poweroff\n"); -+ udc_disconnect(); -+ pcf50633_reg_write(PCF50633_REG_OOCSHDWN, 0x01); -+ /* don't return to caller */ -+ while (1) ; -+} -+ -+void neo1973_backlight(int on) -+{ -+ /* FIXME: PMU based implementation */ -+} -+ -+/* FIXME: shared */ -+void neo1973_vibrator(int on) -+{ -+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); -+ if (on) -+#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4) -+ gpio->GPGDAT |= (1 << 11); /* GPG11 */ -+#elif defined(CONFIG_ARCH_GTA01B_v2) || defined(CONFIG_ARCH_GTA01B_v3) -+ gpio->GPBDAT |= (1 << 10); /* GPB10 */ -+#elif defined(CONFIG_ARCH_GTA01B_v4) || defined(CONFIG_ARCH_GTA02_v1) -+ gpio->GPBDAT |= (1 << 3); /* GPB3 */ -+#endif -+ else -+#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4) -+ gpio->GPGDAT &= ~(1 << 11); /* GPG11 */ -+#elif defined(CONFIG_ARCH_GTA01B_v2) || defined(CONFIG_ARCH_GTA01B_v3) -+ gpio->GPBDAT &= ~(1 << 10); /* GPB10 */ -+#elif defined(CONFIG_ARCH_GTA01B_v4) || defined(CONFIG_ARCH_GTA02_v1) -+ gpio->GPBDAT &= ~(1 << 3); /* GPB3 */ -+#endif -+} -+ -+int neo1973_new_second(void) -+{ -+ return pcf50633_reg_read(PCF50633_REG_INT1) & PCF50633_INT1_SECOND; -+} -+ -+int neo1973_on_key_pressed(void) -+{ -+ return !(pcf50633_reg_read(PCF50633_REG_OOCSTAT) -+ & PCF50633_OOCSTAT_ONKEY); -+} -+ -+/* FIXME: shared */ -+int neo1973_aux_key_pressed(void) -+{ -+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); -+ if (gpio->GPFDAT & (1 << 6)) -+ return 0; -+ return 1; -+} -+ -+/* The sum of all part_size[]s must equal to the NAND size, i.e., 0x4000000. -+ "initrd" is sized such that it can hold two uncompressed 16 bit 640*480 -+ images: 640*480*2*2 = 1228800 < 1245184. */ -+ -+unsigned int dynpart_size[] = { -+ CFG_UBOOT_SIZE, CFG_ENV_SIZE, 0x200000, 0xa0000, 0x1fce0000, 0 }; -+char *dynpart_names[] = { -+ "u-boot", "u-boot_env", "kernel", "splash", "rootfs", NULL }; -+ -+ -+const char *neo1973_get_charge_status(void) -+{ -+ /* FIXME */ -+ return "unknown"; -+} -+ -+int neo1973_set_charge_mode(enum neo1973_charger_cmd cmd) -+{ -+ /* FIXME */ -+ return 0; -+} -Index: u-boot/board/neo1973/gta02/u-boot.lds -=================================================================== ---- /dev/null -+++ u-boot/board/neo1973/gta02/u-boot.lds -@@ -0,0 +1,58 @@ -+/* -+ * (C) Copyright 2002 -+ * Gary Jennejohn, DENX Software Engineering, <gj@denx.de> -+ * -+ * See file CREDITS for list of people who contributed to this -+ * project. -+ * -+ * 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., 59 Temple Place, Suite 330, Boston, -+ * MA 02111-1307 USA -+ */ -+ -+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") -+/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/ -+OUTPUT_ARCH(arm) -+ENTRY(_start) -+SECTIONS -+{ -+ . = 0x00000000; -+ -+ . = ALIGN(4); -+ .text : -+ { -+ cpu/arm920t/start.o (.text) -+ cpu/arm920t/s3c24x0/nand_read.o (.text) -+ *(.text) -+ } -+ -+ . = ALIGN(4); -+ .rodata : { *(.rodata) } -+ -+ . = ALIGN(4); -+ .data : { *(.data) } -+ -+ . = ALIGN(4); -+ .got : { *(.got) } -+ -+ . = .; -+ __u_boot_cmd_start = .; -+ .u_boot_cmd : { *(.u_boot_cmd) } -+ __u_boot_cmd_end = .; -+ -+ . = ALIGN(4); -+ __bss_start = .; -+ .bss : { *(.bss) } -+ _end = .; -+} -Index: u-boot/include/configs/neo1973_gta02.h -=================================================================== ---- /dev/null -+++ u-boot/include/configs/neo1973_gta02.h -@@ -0,0 +1,276 @@ -+/* -+ * (C) Copyright 2007 OpenMoko, Inc. -+ * Author: Harald Welte <laforge@openmoko.org> -+ * -+ * Configuation settings for the FIC Neo1973 GTA02 Linux GSM phone -+ * -+ * See file CREDITS for list of people who contributed to this -+ * project. -+ * -+ * 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., 59 Temple Place, Suite 330, Boston, -+ * MA 02111-1307 USA -+ */ -+ -+#ifndef __CONFIG_H -+#define __CONFIG_H -+ -+/* we want to be able to start u-boot directly from within NAND flash */ -+#define CONFIG_LL_INIT_NAND_ONLY -+#define CONFIG_S3C2410_NAND_BOOT 1 -+#define CONFIG_S3C2410_NAND_SKIP_BAD 1 -+ -+#define CFG_UBOOT_SIZE 0x40000 /* size of u-boot, for NAND loading */ -+ -+/* -+ * High Level Configuration Options -+ * (easy to change) -+ */ -+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */ -+#define CONFIG_S3C2440 1 /* in a SAMSUNG S3C2410 SoC */ -+#define CONFIG_SMDK2440 1 /* on a SAMSUNG SMDK2410 Board */ -+ -+/* input clock of PLL */ -+#define CONFIG_SYS_CLK_FREQ 12000000/* the GTA02 has this input clock */ -+ -+ -+#define USE_920T_MMU 1 -+#define CONFIG_USE_IRQ 1 -+ -+/* -+ * Size of malloc() pool -+ */ -+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 400*1024) -+ /* >> CFG_VIDEO_LOGO_MAX_SIZE */ -+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ -+ -+/* -+ * Hardware drivers -+ */ -+ -+/* -+ * select serial console configuration -+ */ -+#define CONFIG_SERIAL3 1 /* we use SERIAL 1 on GTA01 */ -+ -+/************************************************************ -+ * RTC -+ ************************************************************/ -+#define CONFIG_RTC_S3C24X0 1 -+ -+/* allow to overwrite serial and ethaddr */ -+#define CONFIG_ENV_OVERWRITE -+ -+#define CONFIG_BAUDRATE 115200 -+ -+/*********************************************************** -+ * Command definition -+ ***********************************************************/ -+#define CONFIG_COMMANDS (\ -+ CFG_CMD_BDI | \ -+ CFG_CMD_LOADS | \ -+ CFG_CMD_LAODB | \ -+ CFG_CMD_IMI | \ -+ CFG_CMD_CACHE | \ -+ CFG_CMD_MEMORY | \ -+ CFG_CMD_ENV | \ -+ /* CFG_CMD_IRQ | */ \ -+ CFG_CMD_BOOTD | \ -+ CFG_CMD_CONSOLE | \ -+ /* CFG_CMD_BMP | */ \ -+ CFG_CMD_ASKENV | \ -+ CFG_CMD_RUN | \ -+ CFG_CMD_ECHO | \ -+ CFG_CMD_I2C | \ -+ CFG_CMD_REGINFO | \ -+ CFG_CMD_IMMAP | \ -+ CFG_CMD_DATE | \ -+ CFG_CMD_AUTOSCRIPT | \ -+ CFG_CMD_BSP | \ -+ CFG_CMD_ELF | \ -+ CFG_CMD_MISC | \ -+ /* CFG_CMD_USB | */ \ -+ CFG_CMD_JFFS2 | \ -+ CFG_CMD_DIAG | \ -+ /* CFG_CMD_HWFLOW | */ \ -+ CFG_CMD_SAVES | \ -+ CFG_CMD_NAND | \ -+ CFG_CMD_PORTIO | \ -+ CFG_CMD_MMC | \ -+ CFG_CMD_FAT | \ -+ CFG_CMD_EXT2 | \ -+ 0) -+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ -+#include <cmd_confdefs.h> -+ -+#define CONFIG_BOOTDELAY 3 -+#define CONFIG_BOOTARGS "" -+#define CONFIG_BOOTCOMMAND "setenv bootargs ${bootargs_base} ${mtdparts}; nand read.e 0x32000000 kernel; bootm 0x32000000" -+ -+#define CONFIG_DOS_PARTITION 1 -+ -+#if (CONFIG_COMMANDS & CFG_CMD_KGDB) -+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */ -+/* what's this ? it's not used anywhere */ -+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */ -+#endif -+ -+/* -+ * Miscellaneous configurable options -+ */ -+#define CFG_LONGHELP /* undef to save memory */ -+#if defined(CONFIG_ARCH_GTA02_v1) -+#define CFG_PROMPT "GTA02v1 # " /* Monitor Command Prompt */ -+#endif -+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ -+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ -+#define CFG_MAXARGS 64 /* max number of command args */ -+#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */ -+ -+#define CFG_MEMTEST_START 0x30000000 /* memtest works on */ -+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */ -+ -+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */ -+ -+#define CFG_LOAD_ADDR 0x33000000 /* default load address */ -+ -+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */ -+/* it to wrap 100 times (total 1562500) to get 1 sec. */ -+#define CFG_HZ 1562500 -+ -+/* valid baudrates */ -+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } -+ -+#define CFG_BOOTMENU -+ -+/*----------------------------------------------------------------------- -+ * Stack sizes -+ * -+ * The stack sizes are set up in start.S using the settings below -+ */ -+#define CONFIG_STACKSIZE (128*1024) /* regular stack */ -+#ifdef CONFIG_USE_IRQ -+#define CONFIG_STACKSIZE_IRQ (8*1024) /* IRQ stack */ -+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */ -+#endif -+ -+#if 0 -+#define CONFIG_USB_OHCI 1 -+#endif -+ -+#define CONFIG_USB_DEVICE 1 -+#define CONFIG_USB_TTY 1 -+#define CFG_CONSOLE_IS_IN_ENV 1 -+#define CONFIG_USBD_VENDORID 0x1457 /* Linux/NetChip */ -+#define CONFIG_USBD_PRODUCTID_GSERIAL 0x5120 /* gserial */ -+#define CONFIG_USBD_PRODUCTID_CDCACM 0x5119 /* CDC ACM */ -+#define CONFIG_USBD_MANUFACTURER "OpenMoko, Inc" -+#define CONFIG_USBD_PRODUCT_NAME "Neo1973 Bootloader " U_BOOT_VERSION -+#define CONFIG_USBD_DFU 1 -+#define CONFIG_USBD_DFU_XFER_SIZE 4096 /* 0x4000 */ -+#define CONFIG_USBD_DFU_INTERFACE 2 -+ -+#define CONFIG_EXTRA_ENV_SETTINGS \ -+ "usbtty=cdc_acm\0" \ -+ "bootargs_base=rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8\0" \ -+ "" -+ -+/*----------------------------------------------------------------------- -+ * Physical Memory Map -+ */ -+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */ -+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */ -+#define PHYS_SDRAM_1_SIZE 0x08000000 /* 128 MB */ -+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */ -+ -+/*----------------------------------------------------------------------- -+ * FLASH and environment organization -+ */ -+ -+/* No NOR flash in this device */ -+#define CFG_NO_FLASH 1 -+ -+#define CFG_ENV_IS_IN_NAND 1 -+#define CFG_ENV_SIZE 0x40000 /* 128k Total Size of Environment Sector */ -+#define CFG_ENV_OFFSET_OOB 1 /* Location of ENV stored in block 0 OOB */ -+#define CFG_PREBOOT_OVERRIDE 1 /* allow preboot from memory */ -+ -+#define NAND_MAX_CHIPS 1 -+#define CFG_NAND_BASE 0x4e000000 -+#define CFG_MAX_NAND_DEVICE 1 -+ -+#define CONFIG_MMC 1 -+#define CFG_MMC_BASE 0xff000000 -+ -+/* EXT2 driver */ -+#define CONFIG_EXT2 1 -+ -+#define CONFIG_FAT 1 -+#define CONFIG_SUPPORT_VFAT -+ -+#if 1 -+/* JFFS2 driver */ -+#define CONFIG_JFFS2_CMDLINE 1 -+#define CONFIG_JFFS2_NAND 1 -+#define CONFIG_JFFS2_NAND_DEV 0 -+//#define CONFIG_JFFS2_NAND_OFF 0x634000 -+//#define CONFIG_JFFS2_NAND_SIZE 0x39cc000 -+#endif -+ -+/* ATAG configuration */ -+#define CONFIG_INITRD_TAG 1 -+#define CONFIG_SETUP_MEMORY_TAGS 1 -+#define CONFIG_CMDLINE_TAG 1 -+#define CONFIG_REVISION_TAG 1 -+#if 0 -+#define CONFIG_SERIAL_TAG 1 -+#endif -+ -+#define CONFIG_DRIVER_S3C24X0_I2C 1 -+#define CONFIG_HARD_I2C 1 -+#define CFG_I2C_SPEED 400000 /* 400kHz according to PCF50633 data sheet */ -+#define CFG_I2C_SLAVE 0x7f -+ -+/* we have a board_late_init() function */ -+#define BOARD_LATE_INIT 1 -+ -+#if 0 -+#define CONFIG_VIDEO -+#define CONFIG_VIDEO_S3C2410 -+#define CONFIG_CFB_CONSOLE -+#define CONFIG_VIDEO_LOGO -+#define CONFIG_SPLASH_SCREEN -+#define CFG_VIDEO_LOGO_MAX_SIZE (640*480+1024+100) /* 100 = slack */ -+#define CONFIG_VIDEO_BMP_GZIP -+#define CONFIG_VGA_AS_SINGLE_DEVICE -+#define CONFIG_UNZIP -+ -+#define VIDEO_KBD_INIT_FCT 0 -+#define VIDEO_TSTC_FCT serial_tstc -+#define VIDEO_GETC_FCT serial_getc -+ -+#define LCD_VIDEO_ADDR 0x33d00000 -+#endif -+ -+#define CONFIG_S3C2410_NAND_BBT 1 -+//#define CONFIG_S3C2410_NAND_HWECC 1 -+ -+#define CONFIG_DRIVER_PCF50633 1 -+ -+#define MTDIDS_DEFAULT "nand0=neo1973-nand" -+#define MTPARTS_DEFAULT "neo1973-nand:256k(u-boot),128k(u-boot_env),2M(kernel),640k(splash),-(jffs2)" -+#define CFG_NAND_DYNPART_MTD_KERNEL_NAME "neo1973-nand" -+#define CONFIG_NAND_DYNPART -+ -+#endif /* __CONFIG_H */ -Index: u-boot/board/neo1973/gta02/split_by_variant.sh -=================================================================== ---- /dev/null -+++ u-boot/board/neo1973/gta02/split_by_variant.sh -@@ -0,0 +1,37 @@ -+#!/bin/sh -+# --------------------------------------------------------- -+# Set the core module defines according to Core Module -+# --------------------------------------------------------- -+# --------------------------------------------------------- -+# Set up the GTA01 type define -+# --------------------------------------------------------- -+ -+CFGINC=${obj}include/config.h -+CFGTMP=${obj}board/neo1973/gta02/config.tmp -+ -+mkdir -p ${obj}include -+if [ "$1" == "" ] -+then -+ echo "$0:: No parameters - using GTA02Bv1 config" -+ echo "#define CONFIG_ARCH_GTA02_v1" > $CFGINC -+ echo "CONFIG_USB_DFU_REVISION=0x0310" > $CFGTMP -+else -+ case "$1" in -+ gta02v1_config) -+ echo "#define CONFIG_ARCH_GTA02_v1" > $CFGINC -+ echo "CONFIG_USB_DFU_REVISION=0x0310" > $CFGTMP -+ ;; -+ -+ *) -+ echo "$0:: Unrecognised config - using GTA02v1 config" -+ echo "#define CONFIG_ARCH_GTA02_v1" > $CFGINC -+ echo "CONFIG_USB_DFU_REVISION=0x0310" > $CFGTMP -+ ;; -+ -+ esac -+ -+fi -+# --------------------------------------------------------- -+# Complete the configuration -+# --------------------------------------------------------- -+$MKCONFIG -a neo1973_gta02 arm arm920t gta02 neo1973 s3c24x0 -Index: u-boot/include/pcf50633.h -=================================================================== ---- /dev/null -+++ u-boot/include/pcf50633.h -@@ -0,0 +1,235 @@ -+#ifndef _PCF50633_H -+#define _PCF50633_H -+ -+/* Philips PCF50633 Power Managemnt Unit (PMU) driver -+ * (C) 2006-2007 by OpenMoko, Inc. -+ * Author: Harald Welte <laforge@openmoko.org> -+ * -+ */ -+ -+enum pfc50633_regs { -+ PCF50633_REG_VERSION = 0x00, -+ PCF50633_REG_VARIANT = 0x01, -+ PCF50633_REG_INT1 = 0x02, /* Interrupt Status */ -+ PCF50633_REG_INT2 = 0x03, /* Interrupt Status */ -+ PCF50633_REG_INT3 = 0x04, /* Interrupt Status */ -+ PCF50633_REG_INT4 = 0x05, /* Interrupt Status */ -+ PCF50633_REG_INT5 = 0x06, /* Interrupt Status */ -+ PCF50633_REG_INT1M = 0x07, /* Interrupt Mask */ -+ PCF50633_REG_INT2M = 0x08, /* Interrupt Mask */ -+ PCF50633_REG_INT3M = 0x09, /* Interrupt Mask */ -+ PCF50633_REG_INT4M = 0x0a, /* Interrupt Mask */ -+ PCF50633_REG_INT5M = 0x0b, /* Interrupt Mask */ -+ PCF50633_REG_OOCSHDWN = 0x0c, -+ PCF50633_REG_OOCWAKE = 0x0d, -+ PCF50633_REG_OOCTIM1 = 0x0e, -+ PCF50633_REG_OOCTIM2 = 0x0f, -+ PCF50633_REG_OOCMODE = 0x10, -+ PCF50633_REG_OOCCTL = 0x11, -+ PCF50633_REG_OOCSTAT = 0x12, -+ PCF50633_REG_GPIOCTL = 0x13, -+ PCF50633_REG_GPIO1CFG = 0x14, -+ PCF50633_REG_GPIO2CFG = 0x15, -+ PCF50633_REG_GPIO3CFG = 0x16, -+ PCF50633_REG_GPOCFG = 0x17, -+ PCF50633_REG_BVMCTL = 0x18, -+ PCF50633_REG_SVMCTL = 0x19, -+ PCF50633_REG_AUTOOUT = 0x1a, -+ PCF50633_REG_AUTOENA = 0x1b, -+ PCF50633_REG_AUTOCTL = 0x1c, -+ PCF50633_REG_AUTOMXC = 0x1d, -+ PCF50633_REG_DOWN1OUT = 0x1e, -+ PCF50633_REG_DOWN1ENA = 0x1f, -+ PCF50633_REG_DOWN1CTL = 0x20, -+ PCF50633_REG_DOWN1MXC = 0x21, -+ PCF50633_REG_DOWN2OUT = 0x22, -+ PCF50633_REG_DOWN2ENA = 0x23, -+ PCF50633_REG_DOWN2CTL = 0x24, -+ PCF50633_REG_DOWN2MXC = 0x25, -+ PCF50633_REG_MEMLDOOUT = 0x26, -+ PCF50633_REG_MEMLDOENA = 0x27, -+ PCF50633_REG_LEDOUT = 0x28, -+ PCF50633_REG_LEDENA = 0x29, -+ PCF50633_REG_LEDCTL = 0x2a, -+ PCF50633_REG_LEDDIM = 0x2b, -+ /* reserved */ -+ PCF50633_REG_LDO1OUT = 0x2d, -+ PCF50633_REG_LDO1ENA = 0x2e, -+ PCF50633_REG_LDO2OUT = 0x2f, -+ PCF50633_REG_LDO2ENA = 0x30, -+ PCF50633_REG_LDO3OUT = 0x31, -+ PCF50633_REG_LDO3ENA = 0x32, -+ PCF50633_REG_LDO4OUT = 0x33, -+ PCF50633_REG_LDO4ENA = 0x34, -+ PCF50633_REG_LDO5OUT = 0x35, -+ PCF50633_REG_LDO5ENA = 0x36, -+ PCF50633_REG_LDO6OUT = 0x37, -+ PCF50633_REG_LDO6ENA = 0x38, -+ PCF50633_REG_HCLDOOUT = 0x39, -+ PCF50633_REG_HCLDOENA = 0x3a, -+ PCF50633_REG_STBYCTL1 = 0x3b, -+ PCF50633_REG_STBYCTL2 = 0x3c, -+ PCF50633_REG_DEBPF1 = 0x3d, -+ PCF50633_REG_DEBPF2 = 0x3e, -+ PCF50633_REG_DEBPF3 = 0x3f, -+ PCF50633_REG_HCLDOOVL = 0x40, -+ PCF50633_REG_DCDCSTAT = 0x41, -+ PCF50633_REG_LDOSTAT = 0x42, -+ PCF50633_REG_MBCC1 = 0x43, -+ PCF50633_REG_MBCC2 = 0x44, -+ PCF50633_REG_MBCC3 = 0x45, -+ PCF50633_REG_MBCC4 = 0x46, -+ PCF50633_REG_MBCC5 = 0x47, -+ PCF50633_REG_MBCC6 = 0x48, -+ PCF50633_REG_MBCC7 = 0x49, -+ PCF50633_REG_MBCC8 = 0x4a, -+ PCF50633_REG_MBCS1 = 0x4b, -+ PCF50633_REG_MBCS2 = 0x4c, -+ PCF50633_REG_MBCS3 = 0x4d, -+ PCF50633_REG_BBCCTL = 0x4e, -+ PCF50633_REG_ALMGAIN = 0x4f, -+ PCF50633_REG_ALMDATA = 0x50, -+ /* reserved */ -+ PCF50633_REG_ADCC3 = 0x52, -+ PCF50633_REG_ADCC2 = 0x53, -+ PCF50633_REG_ADCC1 = 0x54, -+ PCF50633_REG_ADCS1 = 0x55, -+ PCF50633_REG_ADCS2 = 0x56, -+ PCF50633_REG_ADCS3 = 0x57, -+ /* reserved */ -+ PCF50633_REG_RTCSC = 0x59, /* Second */ -+ PCF50633_REG_RTCMN = 0x5a, /* Minute */ -+ PCF50633_REG_RTCHR = 0x5b, /* Hour */ -+ PCF50633_REG_RTCWD = 0x5c, /* Weekday */ -+ PCF50633_REG_RTCDT = 0x5d, /* Day */ -+ PCF50633_REG_RTCMT = 0x5e, /* Month */ -+ PCF50633_REG_RTCYR = 0x5f, /* Year */ -+ PCF50633_REG_RTCSCA = 0x60, /* Alarm Second */ -+ PCF50633_REG_RTCMNA = 0x61, /* Alarm Minute */ -+ PCF50633_REG_RTCHRA = 0x62, /* Alarm Hour */ -+ PCF50633_REG_RTCWDA = 0x63, /* Alarm Weekday */ -+ PCF50633_REG_RTCDTA = 0x64, /* Alarm Day */ -+ PCF50633_REG_RTCMTA = 0x65, /* Alarm Month */ -+ PCF50633_REG_RTCYRA = 0x66, /* Alarm Year */ -+ -+ PCF50633_REG_MEMBYTE0 = 0x67, -+ PCF50633_REG_MEMBYTE1 = 0x68, -+ PCF50633_REG_MEMBYTE2 = 0x69, -+ PCF50633_REG_MEMBYTE3 = 0x6a, -+ PCF50633_REG_MEMBYTE4 = 0x6b, -+ PCF50633_REG_MEMBYTE5 = 0x6c, -+ PCF50633_REG_MEMBYTE6 = 0x6d, -+ PCF50633_REG_MEMBYTE7 = 0x6e, -+ /* reserved */ -+ PCF50633_REG_DCDCPFM = 0x84, -+ __NUM_PCF50633_REGS -+}; -+ -+enum pcf50633_reg_int1 { -+ PCF50633_INT1_ADPINS = 0x01, /* Adapter inserted */ -+ PCF50633_INT1_ADPREM = 0x02, /* Adapter removed */ -+ PCF50633_INT1_USBINS = 0x04, /* USB inserted */ -+ PCF50633_INT1_USBREM = 0x08, /* USB removed */ -+ /* reserved */ -+ PCF50633_INT1_ALARM = 0x40, /* RTC alarm time is reached */ -+ PCF50633_INT1_SECOND = 0x80, /* RTC periodic second interrupt */ -+}; -+ -+enum pcf50633_reg_int2 { -+ PCF50633_INT2_ONKEYR = 0x01, /* ONKEY rising edge */ -+ PCF50633_INT2_ONKEYF = 0x02, /* ONKEY falling edge */ -+ PCF50633_INT2_EXTON1R = 0x04, /* EXTON1 rising edge */ -+ PCF50633_INT2_EXTON1F = 0x08, /* EXTON1 falling edge */ -+ PCF50633_INT2_EXTON2R = 0x10, /* EXTON2 rising edge */ -+ PCF50633_INT2_EXTON2F = 0x20, /* EXTON2 falling edge */ -+ PCF50633_INT2_EXTON3R = 0x40, /* EXTON3 rising edge */ -+ PCF50633_INT2_EXTON3F = 0x80, /* EXTON3 falling edge */ -+}; -+ -+enum pcf50633_reg_int3 { -+ PCF50633_INT3_BATFULL = 0x01, /* Battery full */ -+ PCF50633_INT3_CHGHALT = 0x02, /* Charger halt */ -+ PCF50633_INT3_THLIMON = 0x04, -+ PCF50633_INT3_THLIMOFF = 0x08, -+ PCF50633_INT3_USBLIMON = 0x10, -+ PCF50633_INT3_USBLIMOFF = 0x20, -+ PCF50633_INT3_ADCRDY = 0x40, /* ADC conversion finished */ -+ PCF50633_INT3_ONKEY1S = 0x80, /* ONKEY pressed 1 second */ -+}; -+ -+enum pcf50633_reg_int4 { -+ PCF50633_INT4_LOWSYS = 0x01, -+ PCF50633_INT4_LOWBAT = 0x02, -+ PCF50633_INT4_HIGHTMP = 0x04, -+ PCF50633_INT4_AUTOPWRFAIL = 0x08, -+ PCF50633_INT4_DWN1PWRFAIL = 0x10, -+ PCF50633_INT4_DWN2PWRFAIL = 0x20, -+ PCF50633_INT4_LEDPWRFAIL = 0x40, -+ PCF50633_INT4_LEDOVP = 0x80, -+}; -+ -+enum pcf50633_reg_int5 { -+ PCF50633_INT4_LDO1PWRFAIL = 0x01, -+ PCF50633_INT4_LDO2PWRFAIL = 0x02, -+ PCF50633_INT4_LDO3PWRFAIL = 0x04, -+ PCF50633_INT4_LDO4PWRFAIL = 0x08, -+ PCF50633_INT4_LDO5PWRFAIL = 0x10, -+ PCF50633_INT4_LDO6PWRFAIL = 0x20, -+ PCF50633_INT4_HCLDOPWRFAIL = 0x40, -+ PCF50633_INT4_HCLDOOVL = 0x80, -+}; -+ -+enum pcf50633_reg_oocwake { -+ PCF50633_OOCWAKE_ONKEY = 0x01, -+ PCF50633_OOCWAKE_EXTON1 = 0x02, -+ PCF50633_OOCWAKE_EXTON2 = 0x04, -+ PCF50633_OOCWAKE_EXTON3 = 0x08, -+ PCF50633_OOCWAKE_RTC = 0x10, -+ /* reserved */ -+ PCF50633_OOCWAKE_USB = 0x40, -+ PCF50633_OOCWAKE_ADP = 0x80, -+}; -+ -+enum pcf50633_reg_mbcc1 { -+ PCF50633_MBCC1_CHGENA = 0x01, /* Charger enable */ -+ PCF50633_MBCC1_AUTOSTOP = 0x02, -+ PCF50633_MBCC1_AUTORES = 0x04, /* automatic resume */ -+ PCF50633_MBCC1_RESUME = 0x08, /* explicit resume cmd */ -+ PCF50633_MBCC1_RESTART = 0x10, /* restart charging */ -+ PCF50633_MBCC1_PREWDTIME_60M = 0x20, /* max. precharging time */ -+ PCF50633_MBCC1_WDTIME_1H = 0x00, -+ PCF50633_MBCC1_WDTIME_2H = 0x40, -+ PCF50633_MBCC1_WDTIME_4H = 0x80, -+ PCF50633_MBCC1_WDTIME_6H = 0xc0, -+}; -+#define PCF50633_MBCC1_WDTIME_MASK 0xc0 -+ -+enum pcf50633_reg_mbcc2 { -+ PCF50633_MBCC2_VBATCOND_2V7 = 0x00, -+ PCF50633_MBCC2_VBATCOND_2V85 = 0x01, -+ PCF50633_MBCC2_VBATCOND_3V = 0x02, -+ PCF50633_MBCC2_VBATCOND_3V15 = 0x03, -+ PCF50633_MBCC2_VMAX_4V = 0x00, -+ PCF50633_MBCC2_VMAX_4V20 = 0x28, -+ PCF50633_MBCC2_VRESDEBTIME_64S = 0x80, /* debounce time (32/64sec) */ -+}; -+#define PCF50633_MBCC2_VBATCOND_MASK 0x03 -+#define PCF50633_MBCC2_VMAX_MASK 0x3c -+ -+#define PCF50633_OOCSTAT_ONKEY 0x01 -+ -+/* this is to be provided by the board implementation */ -+extern const u_int8_t pcf50633_initial_regs[__NUM_PCF50633_REGS]; -+ -+void pcf50633_reg_write(u_int8_t reg, u_int8_t val); -+ -+u_int8_t pcf50633_reg_read(u_int8_t reg); -+ -+void pcf50633_reg_set_bit_mask(u_int8_t reg, u_int8_t mask, u_int8_t val); -+void pcf50633_reg_clear_bits(u_int8_t reg, u_int8_t bits); -+ -+void pcf50633_init(void); -+void pcf50633_usb_maxcurrent(unsigned int ma); -+ -+#endif /* _PCF50633_H */ -+ -Index: u-boot/drivers/pcf50633.c -=================================================================== ---- /dev/null -+++ u-boot/drivers/pcf50633.c -@@ -0,0 +1,142 @@ -+#include <common.h> -+ -+#ifdef CONFIG_DRIVER_PCF50633 -+ -+#include <i2c.h> -+#include <pcf50633.h> -+#include <asm/atomic.h> -+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -+ -+#define PCF50633_I2C_ADDR 0x73 -+ -+void __pcf50633_reg_write(u_int8_t reg, u_int8_t val) -+{ -+ i2c_write(PCF50633_I2C_ADDR, reg, 1, &val, 1); -+} -+ -+u_int8_t __pcf50633_reg_read(u_int8_t reg) -+{ -+ u_int8_t tmp; -+ i2c_read(PCF50633_I2C_ADDR, reg, 1, &tmp, 1); -+ return tmp; -+} -+ -+void pcf50633_reg_write(u_int8_t reg, u_int8_t val) -+{ -+ unsigned long flags; -+ -+ local_irq_save(flags); -+ __pcf50633_reg_write(reg, val); -+ local_irq_restore(flags); -+} -+ -+u_int8_t pcf50633_reg_read(u_int8_t reg) -+{ -+ unsigned long flags; -+ u_int8_t tmp; -+ -+ local_irq_save(flags); -+ tmp = __pcf50633_reg_read(reg); -+ local_irq_restore(flags); -+ -+ return tmp; -+} -+ -+void pcf50633_reg_set_bit_mask(u_int8_t reg, u_int8_t mask, u_int8_t val) -+{ -+ unsigned long flags; -+ u_int8_t tmp; -+ -+ local_irq_save(flags); -+ tmp = __pcf50633_reg_read(reg); -+ __pcf50633_reg_write(reg, (val & mask) | (tmp & ~mask)); -+ local_irq_restore(flags); -+} -+ -+void pcf50633_reg_clear_bits(u_int8_t reg, u_int8_t bits) -+{ -+ unsigned long flags; -+ u_int8_t tmp; -+ -+ local_irq_save(flags); -+ tmp = pcf50633_reg_read(reg); -+ pcf50633_reg_write(reg, (tmp & ~bits)); -+ local_irq_restore(flags); -+} -+ -+static const u_int8_t regs_invalid[] = { -+ PCF50633_REG_VERSION, -+ PCF50633_REG_VARIANT, -+ PCF50633_REG_OOCSHDWN, -+ PCF50633_REG_INT1, -+ PCF50633_REG_INT2, -+ PCF50633_REG_INT3, -+ PCF50633_REG_INT4, -+ PCF50633_REG_INT5, -+ PCF50633_REG_OOCSTAT, -+ 0x2c, -+ PCF50633_REG_DCDCSTAT, -+ PCF50633_REG_LDOSTAT, -+ PCF50633_REG_MBCS1, -+ PCF50633_REG_MBCS2, -+ PCF50633_REG_MBCS3, -+ PCF50633_REG_ALMDATA, -+ 0x51, -+ /* 0x55 ... 0x6e: don't write */ -+ /* 0x6f ... 0x83: reserved */ -+}; -+#define PCF50633_LAST_REG 0x55 -+ -+static int reg_is_invalid(u_int8_t reg) -+{ -+ int i; -+ -+ /* all registers above 0x55 (ADCS1) except 0x84 */ -+ if (reg == PCF50633_REG_DCDCPFM) -+ return 0; -+ if (reg >= 0x55) -+ return 1; -+ -+ for (i = 0; i < ARRAY_SIZE(regs_invalid); i++) { -+ if (regs_invalid[i] > reg) -+ return 0; -+ if (regs_invalid[i] == reg) -+ return 1; -+ } -+ -+ return 0; -+} -+ -+ -+/* initialize PCF50633 register set */ -+void pcf50633_init(void) -+{ -+ unsigned long flags; -+ u_int8_t i; -+ -+ local_irq_save(flags); -+ for (i = 0; i < PCF50633_LAST_REG; i++) { -+ if (reg_is_invalid(i)) -+ continue; -+ __pcf50633_reg_write(i, pcf50633_initial_regs[i]); -+ } -+ local_irq_restore(flags); -+} -+ -+void pcf50633_usb_maxcurrent(unsigned int ma) -+{ -+ u_int8_t val; -+ -+ if (ma < 100) -+ val = 0x03; -+ else if (ma < 500) -+ val = 0x00; -+ else if (ma < 1000) -+ val = 0x01; -+ else -+ val = 0x02; -+ -+ return pcf50633_reg_set_bit_mask(PCF50633_REG_MBCC7, 0x03, val); -+} -+ -+#endif /* CONFIG DRIVER_PCF50633 */ -Index: u-boot/board/neo1973/common/lowlevel_init.S -=================================================================== ---- u-boot.orig/board/neo1973/common/lowlevel_init.S -+++ u-boot/board/neo1973/common/lowlevel_init.S -@@ -49,7 +49,7 @@ - #define WAIT (0x1<<2) - #define UBLB (0x1<<3) - --#define B1_BWSCON (DW32) -+#define B1_BWSCON (DW16 + WAIT + UBLB) - #define B2_BWSCON (DW16) - #define B3_BWSCON (DW16 + WAIT + UBLB) - #define B4_BWSCON (DW16) -@@ -68,9 +68,9 @@ - - /* BANK1CON */ - #define B1_Tacs 0x0 /* 0clk */ --#define B1_Tcos 0x0 /* 0clk */ --#define B1_Tacc 0x7 /* 14clk */ --#define B1_Tcoh 0x0 /* 0clk */ -+#define B1_Tcos 0x1 /* 1clk */ -+#define B1_Tacc 0x4 /* 4clk */ -+#define B1_Tcoh 0x1 /* 1clk */ - #define B1_Tah 0x0 /* 0clk */ - #define B1_Tacp 0x0 - #define B1_PMC 0x0 -@@ -112,7 +112,7 @@ - #if defined (CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4) - #define B6_SCAN 0x1 /* 9bit */ - #elif defined(CONFIG_ARCH_GTA01B_v2) || defined(CONFIG_ARCH_GTA01B_v3) || \ -- defined(CONFIG_ARCH_GTA01B_v4) -+ defined(CONFIG_ARCH_GTA01B_v4) || defined(CONFIG_ARCH_GTA02_v1) - #define B6_SCAN 0x2 /* 10bit */ - #endif - -@@ -165,6 +165,18 @@ - str r1, [r0] - #endif - -+#if defined(CONFIG_ARCH_GTA02_v1) -+ /* enable KEEPACT to make sure PMU keeps us alive */ -+ ldr r0, =0x56000000 /* GPJ base */ -+ ldr r1, [r0, #0xd0] /* GPJCON */ -+ orr r1, r1, #(1 << 6) -+ str r1, [r0, #0xd0] -+ -+ ldr r1, [r0, #0xd4] /* GPJDAT */ -+ orr r1, r1, #(1 << 3) -+ str r1, [r0, #0xd4] -+#endif -+ - /* everything is fine now */ - mov pc, lr - -Index: u-boot/board/neo1973/gta02/pcf50633.c -=================================================================== ---- /dev/null -+++ u-boot/board/neo1973/gta02/pcf50633.c -@@ -0,0 +1,91 @@ -+ -+#include <common.h> -+#include <pcf50633.h> -+ -+/* initial register set for PCF50633 in Neo1973 GTA02 devices */ -+const u_int8_t pcf50633_initial_regs[__NUM_PCF50633_REGS] = { -+ /* gap */ -+ [PCF50633_REG_INT1M] = PCF50633_INT1_SECOND, -+ [PCF50633_REG_INT2M] = PCF50633_INT2_EXTON3F | -+ PCF50633_INT2_EXTON3R | -+ PCF50633_INT2_EXTON2F | -+ PCF50633_INT2_EXTON2R | -+ PCF50633_INT2_EXTON1R | -+ PCF50633_INT2_EXTON1F, -+ [PCF50633_REG_INT3M] = PCF50633_INT3_ADCRDY, -+ [PCF50633_REG_INT4M] = 0x00, -+ [PCF50633_REG_INT5M] = 0x00, -+ -+ [PCF50633_REG_OOCWAKE] = 0xd3, /* wake from ONKEY,EXTON!,RTC,USB,ADP */ -+ [PCF50633_REG_OOCTIM1] = 0xaa, /* debounce 14ms everything */ -+ [PCF50633_REG_OOCTIM2] = 0x4a, -+ [PCF50633_REG_OOCMODE] = 0x55, -+ [PCF50633_REG_OOCCTL] = 0x44, -+ -+ [PCF50633_REG_GPIOCTL] = 0x01, /* only GPIO1 is input */ -+ [PCF50633_REG_GPIO2CFG] = 0x00, -+ [PCF50633_REG_GPIO3CFG] = 0x00, -+ [PCF50633_REG_GPOCFG] = 0x00, -+ -+ [PCF50633_REG_SVMCTL] = 0x08, /* 3.10V SYS voltage thresh. */ -+ [PCF50633_REG_BVMCTL] = 0x02, /* 2.80V BAT voltage thresh. */ -+ -+ [PCF50633_REG_STBYCTL1] = 0x00, -+ [PCF50633_REG_STBYCTL2] = 0x00, -+ -+ [PCF50633_REG_DEBPF1] = 0xff, -+ [PCF50633_REG_DEBPF2] = 0xff, -+ [PCF50633_REG_DEBPF2] = 0x3f, -+ -+ [PCF50633_REG_AUTOOUT] = 0x6b, /* 3.300V */ -+ [PCF50633_REG_AUTOENA] = 0x01, /* always on */ -+ [PCF50633_REG_AUTOCTL] = 0x00, /* automatic up/down operation */ -+ [PCF50633_REG_AUTOMXC] = 0x0a, /* 400mA at startup FIXME */ -+ -+ [PCF50633_REG_DOWN1OUT] = 0x1b, /* 1.3V (0x1b * .025V + 0.625V) */ -+ [PCF50633_REG_DOWN1ENA] = 0x02, /* enabled if GPIO1 = HIGH */ -+ [PCF50633_REG_DOWN1CTL] = 0x00, /* no DVM */ -+ [PCF50633_REG_DOWN1MXC] = 0x22, /* limit to 510mA at startup */ -+ -+ [PCF50633_REG_DOWN2OUT] = 0x2f, /* 1.8V (0x2f * .025V + 0.625V) */ -+ [PCF50633_REG_DOWN2ENA] = 0x02, /* enabled if GPIO1 = HIGH */ -+ [PCF50633_REG_DOWN2CTL] = 0x00, /* no DVM */ -+ [PCF50633_REG_DOWN2MXC] = 0x22, /* limit to 510mA at startup */ -+ -+ [PCF50633_REG_MEMLDOOUT] = 0x00, -+ [PCF50633_REG_MEMLDOENA] = 0x00, -+ -+ [PCF50633_REG_LEDOUT] = 0x2f, /* full backlight power */ -+ [PCF50633_REG_LEDENA] = 0x02, /* enabled if GPIO1 = HIGH */ -+ [PCF50633_REG_LEDCTL] = 0x05, /* ovp enabled, ocp 500mA */ -+ [PCF50633_REG_LEDDIM] = 0x20, /* dimming curve */ -+ -+ [PCF50633_REG_LDO1OUT] = 0x04, /* 1.3V (4 * 0.1V + 0.9V) */ -+ [PCF50633_REG_LDO1ENA] = 0x01, /* always on */ -+ -+ [PCF50633_REG_LDO2OUT] = 0x18, /* 3.3V (24 * 0.1V + 0.9V) */ -+ [PCF50633_REG_LDO2ENA] = 0x02, /* enabled if GPIO1 = HIGH */ -+ -+ [PCF50633_REG_LDO3OUT] = 0x15, /* 3.0V (21 * 0.1V + 0.9V) */ -+ [PCF50633_REG_LDO3ENA] = 0x02, /* enabled if GPIO1 = HIGH */ -+ -+ [PCF50633_REG_LDO4ENA] = 0x00, -+ [PCF50633_REG_LDO5ENA] = 0x00, -+ [PCF50633_REG_LDO6ENA] = 0x00, -+ -+ [PCF50633_REG_HCLDOOUT] = 0x18, /* 3.3V (24 * 0.1V + 0.9V) */ -+ [PCF50633_REG_HCLDOENA] = 0x00, /* off by default*/ -+ -+ [PCF50633_REG_DCDCPFM] = 0x00, /* off by default*/ -+ -+ [PCF50633_REG_MBCC1] = 0xe6, -+ [PCF50633_REG_MBCC2] = 0x28, /* Vbatconid=2.7V, Vmax=4.20V */ -+ [PCF50633_REG_MBCC3] = 0x19, /* 25/255 == 98mA pre-charge */ -+ [PCF50633_REG_MBCC4] = 0xff, /* 255/255 == 1A adapter fast */ -+ [PCF50633_REG_MBCC5] = 0x7f, /* 127/255 == 500mA usb fast */ -+ [PCF50633_REG_MBCC6] = 0x00, /* cutoff current 1/32 * Ichg */ -+ [PCF50633_REG_MBCC7] = 0x00, /* 1.6A max bat curr, USB 100mA */ -+ [PCF50633_REG_MBCC8] = 0x00, -+ -+ [PCF50633_REG_BBCCTL] = 0x19, /* 3V, 200uA, on */ -+}; -Index: u-boot/board/neo1973/gta02/config.mk -=================================================================== ---- /dev/null -+++ u-boot/board/neo1973/gta02/config.mk -@@ -0,0 +1,32 @@ -+# -+# (C) Copyright 2002 -+# Gary Jennejohn, DENX Software Engineering, <gj@denx.de> -+# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch> -+# -+# FIC Neo1973 GTA01 board with S3C2410X (ARM920T) cpu -+# -+# see http://www.samsung.com/ for more information on SAMSUNG -+# -+ -+# GTA01v3 has 1 bank of 64 MB SDRAM -+# GTA01v4 has 1 bank of 64 MB SDRAM -+# -+# 3000'0000 to 3400'0000 -+# we load ourself to 33F8'0000 -+# -+# GTA01Bv2 or later has 1 bank of 128 MB SDRAM -+# -+# 3000'0000 to 3800'0000 -+# we load ourself to 37F8'0000 -+# -+# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000 -+# optionally with a ramdisk at 3080'0000 -+# -+# download area is 3200'0000 or 3300'0000 -+ -+CONFIG_USB_DFU_VENDOR=0x1457 -+CONFIG_USB_DFU_PRODUCT=0x5119 -+ -+sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp -+ -+TEXT_BASE = 0x33F80000 -Index: u-boot/drivers/smedia3362.c -=================================================================== ---- /dev/null -+++ u-boot/drivers/smedia3362.c -@@ -0,0 +1,125 @@ -+/* -+ * (C) Copyright 2007 by OpenMoko, Inc. -+ * Author: Harald Welte <laforge@openmoko.org> -+ * -+ * 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., 59 Temple Place, Suite 330, Boston, -+ * MA 02111-1307 USA -+ */ -+ -+#include <common.h> -+ -+#if defined(CONFIG_VIDEO_GLAMO3362) -+ -+#include <video_fb.h> -+#include "videomodes.h" -+#include <s3c2410.h> -+#include "smedia3362.h" -+ -+/* -+ * Export Graphic Device -+ */ -+GraphicDevice smi; -+ -+ -+struct glamo_script { -+ u_int16_t reg; -+ u_int16_t val; -+} __attribute__((packed)); -+ -+/* from 'initial glamo 3365 script' */ -+static struct glamo_script gl3362_init_script[] = { -+ /* clock */ -+ { GLAMO_REG_CLOCK_MEMORY, 0x300a }, -+ { GLAMO_REG_CLOCK_LCD, 0x10aa }, -+ { GLAMO_REG_CLOCK_MMC, 0x100a }, -+ { GLAMO_REG_CLOCK_ISP, 0x32aa }, -+ { GLAMO_REG_CLOCK_JPEG, 0x100a }, -+ { GLAMO_REG_CLOCK_3D, 0x302a }, -+ { GLAMO_REG_CLOCK_2D, 0x302a }, -+ //{ GLAMO_REG_CLOCK_RISC1, 0x1aaa }, -+ //{ GLAMO_REG_CLOCK_RISC2, 0x002a }, -+ { GLAMO_REG_CLOCK_MPEG, 0x3aaa }, -+ { GLAMO_REG_CLOCK_MPROC, 0x12aa }, -+ { 0xfffe, 5 }, -+ { GLAMO_REG_CLOCK_HOST, 0x000d }, -+ { GLAMO_REG_CLOCK_MEMORY, 0x000a }I, -+ { GLAMO_REG_CLOCK_LCD, 0x00ee }, -+ { GLAMO_REG_CLOCK_MMC, 0x000a }, -+ { GLAMO_REG_CLOCK_ISP, 0x02aa }, -+ { GLAMO_REG_CLOCK_JPEG, 0x000a }, -+ { GLAMO_REG_CLOCK_3D, 0x002a }, -+ { GLAMO_REG_CLOCK_2D, 0x002a }, -+ //{ GLAMO_REG_CLOCK_RISC1, 0x0aaa }, -+ //{ GLAMO_REG_CLOCK_RISC2, 0x002a }, -+ { GLAMO_REG_CLOCK_MPEG, 0x0aaa }, -+ { GLAMO_REG_CLOCK_MPROC, 0x02aa }, -+ { 0xfffe, 5 }, -+ { GLAMO_REG_PLL_GEN1, 0x061a }, /* PLL1=50MHz, OSCI=32kHz */ -+ { GLAMO_REG_PLL_GEN3, 0x09c3 }, /* PLL2=80MHz, OSCI=32kHz */ -+ { 0xfffe, 5 }, -+ { GLAMO_REG_CLOCK_GEN5_1, 0x18ff }, -+ { GLAMO_REG_CLOCK_GEN5_2, 0x051f }, -+ { GLAMO_REG_CLOCK_GEN6, 0x2000 }, -+ { GLAMO_REG_CLOCK_GEN7, 0x0105 }, -+ { GLAMO_REG_CLOCK_GEN8, 0x0100 }, -+ { GLAMO_REG_CLOCK_GEN10, 0x0017 }, -+ { GLAMO_REG_CLOCK_GEN11, 0x0017 }, -+ -+ /* hostbus interface */ -+ { GLAMO_REG_HOSTBUS(1), 0x0e00 }, -+ { GLAMO_REG_HOSTBUS(2), 0x07ff }, -+ { GLAMO_REG_HOSTBUS(4), 0x0080 }, -+ { GLAMO_REG_HOSTBUS(5), 0x0244 }, -+ { GLAMO_REG_HOSTBUS(6), 0x0600 }, -+ { GLAMO_REG_HOSTBUS(12), 0xf00e }, -+ -+ /* memory */ -+ { GLAMO_REG_MEM_TYPE, 0x0874 }, /* VRAM 8Mbyte */ -+ { GLAMO_REG_MEM_GEN, 0xafaf }, -+ { GLAMO_REG_MEM_TIMING(1), 0x0108 }, -+ { GLAMO_REG_MEM_TIMING(2), 0x0010 }, -+ { GLAMO_REG_MEM_TIMING(3), 0x0000 }, -+ { GLAMO_REG_MEM_TIMING(4), 0x0000 }, -+ { GLAMO_REG_MEM_TIMING(5), 0x0000 }, -+ { GLAMO_REG_MEM_TIMING(6), 0x0000 }, -+ { GLAMO_REG_MEM_TIMING(7), 0x0000 }, -+ { GLAMO_REG_MEM_TIMING(8), 0x1002 }, -+ { GLAMO_REG_MEM_TIMING(9), 0x6006 }, -+ { GLAMO_REG_MEM_TIMING(10), 0x00ff }, -+ { GLAMO_REG_MEM_TIMING(11), 0x0001 }, -+ { GLAMO_REG_MEM_POWER1, 0x0020 }, -+ { GLAMO_REG_MEM_POWRE2, 0x0000 }, -+ { GLAMO_REG_MEM_DRAM1, 0x0000 }, -+ { 0xfffe, 1 }, -+ { GLAMO_REG_MEM_DRAM1, 0xc100 }, -+ { GLAMO_REG_MEM_DRAM2, 0x01d6 }, -+}; -+ -+static int glamo3362_init(void) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(gl3362_init_script); i++) { -+ struct glamo_reg *reg = gl3362_init_script[i]; -+ -+ if (reg->reg == 0xfffe) -+ delay(reg->val); -+ else -+ gl3362_reg_write(reg->reg, reg->val); -+ } -+ /* FIXME */ -+} -+ -+#endif /* CONFIG_VIDEO_GLAMO3362 */ -Index: u-boot/drivers/Makefile -=================================================================== ---- u-boot.orig/drivers/Makefile -+++ u-boot/drivers/Makefile -@@ -50,7 +50,7 @@ - usbdcore.o usbdfu.o usbdcore_ep0.o usbdcore_omap1510.o usbdcore_s3c2410.o usbtty.o \ - videomodes.o w83c553f.o \ - ks8695eth.o \ -- pcf50606.o \ -+ pcf50606.o pcf50633.o \ - pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o \ - rpx_pcmcia.o \ - fsl_i2c.o s3c2410_fb.o -Index: u-boot/common/cmd_nand.c -=================================================================== ---- u-boot.orig/common/cmd_nand.c -+++ u-boot/common/cmd_nand.c -@@ -208,8 +208,10 @@ - putc('\n'); - for (i = 0; i < CFG_MAX_NAND_DEVICE; i++) { - if (nand_info[i].name) -- printf("Device %d: %s, sector size %lu KiB\n", -+ printf("Device %d: %s, page size %lu, " -+ "sector size %lu KiB\n", - i, nand_info[i].name, -+ nand_info[i].oobblock, - nand_info[i].erasesize >> 10); - } - return 0; -Index: u-boot/drivers/nand/nand_ids.c -=================================================================== ---- u-boot.orig/drivers/nand/nand_ids.c -+++ u-boot/drivers/nand/nand_ids.c -@@ -67,7 +67,7 @@ - - {"NAND 256MiB 3,3V 8-bit", 0x71, 512, 256, 0x4000, 0}, - -- {"NAND 512MiB 3,3V 8-bit", 0xDC, 512, 512, 0x4000, 0}, -+ //{"NAND 512MiB 3,3V 8-bit", 0xDC, 512, 512, 0x4000, 0}, - - /* These are the new chips with large page size. The pagesize - * and the erasesize is determined from the extended id bytes -Index: u-boot/board/neo1973/common/udc.c -=================================================================== ---- u-boot.orig/board/neo1973/common/udc.c -+++ u-boot/board/neo1973/common/udc.c -@@ -3,6 +3,7 @@ - #include <usbdcore.h> - #include <s3c2410.h> - #include <pcf50606.h> -+#include <pcf50633.h> - - void udc_ctrl(enum usbd_event event, int param) - { -@@ -23,6 +24,11 @@ - defined(CONFIG_ARCH_GTA01B_v2) || defined(CONFIG_ARCH_GTA01B_v3) || \ - defined(CONFIG_ARCH_GTA01B_v4) - pcf50606_charge_autofast(param); -+#elif defined(CONFIG_ARCH_GTA02_v1) -+ if (param) -+ pcf50633_usb_maxcurrent(500); -+ else -+ pcf50633_usb_maxcurrent(0); - #endif - break; - default: |