Add a board API callback that allows a device-specific
commandline area to be created at the time the kernel
commandline is being composed.
Signed-off-by: Andy Green <andy@openmoko.com>
On the devices where we have only 2 physical buttons, one of those buttons
(i.e. POWER) is connected directly to PMU. The other button (AUX) is
connected directly to S3C pin and we can get its state immediately, it is
currently used to skip a boot possibility. To allow user to debug boot
problems we can use the POWER button, but we cannot poll for it too many
times as it slows down the boot considerably, therefore a dedicated
function is needed.
Allow a board to "indicate" events if it likes on whatever it has
On GTA02 we light AUX during boot and run the vibrator briefly when we
skip a partition or device.
Signed-off-by: Andy Green <andy@openmoko.com>
This adds two features that can be set in the rootfs that Qi is checking.
- if it finds /boot/noboot-<device>, eg /boot/noboot-GTA02 then it will
skip the rootfs for booting and try the next one if any
- if it finds /boot/append-<device>, eg, /boot/append-GTA02 then it will
append the contents of this file to the kernel commandline.
Signed-off-by: Andy Green <andy@openmoko.com>
Prefer GTA03, enable dual mDDR init (killing SMDK compatability for now)
fix bugs in GPIO register offsets, set loglevel=8 for GTA03
Signed-off-by: Andy Green <andy@openmoko.com>
Some of utils.c isn't used until the full Qi image has been loaded into
memory, to save space in 4K steppingstone case on 2442, we split utils.c now
so only the interesting routines for steppingstone time take up space there.
Signed-off-by: Andy Green <andy@openmoko.com>
We need putc even when we are operating entirely from steppingstone.
Arrange that the board-specific putc code is in a section that goes into
steppingstone, and adapt the utils.c putc() so that it no longer needs to
indirect through the board_api struct that is in main memory.
Signed-off-by: Andy Green <andy@openmoko.com>
This adds the memory testing code to Qi. It tests the range of memory with
several constants and then a 32-bit walking 1 pattern, and repeats forever.
The entire main SDRAM can be tested due to the fact this runs out of
steppingstone only and does not need to store anything outside of it.
It introduces a steppingstone-based stack for use entirely in steppingstone.
Signed-off-by: Andy Green <andy@openmoko.com>
This heavily adapts the Samsung U-Boot hs_mmc code and combines it with the
SD / SDHC startup code written for glamo-mci stuff that is known to work OK
with common SD and SDHC.
tla01 is changed to use the implementation.
Signed-off-by: Andy Green <andy@openmoko.com>
This patch makes qi source structure cpu-centric, and allows multiple CPUs
to be handled with the board definitions inside the CPU dirs.
You have to make a particular CPU version of Qi now, which you can do by
a shell command like this:
make clean ; make CPU=s3c2442 && make CPU=s3c6410
which gets you
$ ls -l image/
total 744
-rwxrwxr-x 1 agreen agreen 25372 2008-10-17 18:25 qi-s3c2442-andy_77c1fcdddc3e2cbf
-rw-rw-r-- 1 agreen agreen 237100 2008-10-17 18:25 qi-s3c2442-andy_77c1fcdddc3e2cbf.dis
-rw-rw-r-- 1 agreen agreen 25388 2008-10-17 18:25 qi-s3c2442-andy_77c1fcdddc3e2cbf.udfu
-rwxrwxr-x 1 agreen agreen 22736 2008-10-17 18:25 qi-s3c6410-andy_77c1fcdddc3e2cbf
-rw-rw-r-- 1 agreen agreen 216294 2008-10-17 18:25 qi-s3c6410-andy_77c1fcdddc3e2cbf.dis
-rw-rw-r-- 1 agreen agreen 22752 2008-10-17 18:25 qi-s3c6410-andy_77c1fcdddc3e2cbf.udfu
The 6410 support in there is enough to send a character "U" on the 6410 SMDK
Because the product naming is not defined, currently the device targeted for 6410
is called "TLA01"
Signed-off-by: Andy Green <andy@openmoko.com>
This adds ext2 support from U-Boot and stitches it into the
partition stuff. It also upgrades the board definitions so they
can define the path to look for in the ext2 filesystem being
mounted. I used /boot/uImage.bin because this is already in use
by the packaged kernel.
We now mount, open and pull the kernel from ext2 in phase2.c if
the kernel source defines it.
Signed-off-by: Andy Green <andy@openmoko.com>
We have to minimally support DOS partition scheme.
Partitions are counted from 1+ now, and 0 means no
partition table instead of -1.
Signed-off-by: Andy Green <andy@openmoko.com>
Moves various .h into include from drivers
Gets glamo-mmc.h working so we can detect
card ID / Size if the card is plugged in.
Adds FAT / MMC kernel source entry for GTA02 that
is first before the NAND one. When it works it will
favour to boot off SD Card if a kernel is found there, but
right now we don't have a working filesystem parser and
partition handling hooked up.
Signed-off-by: Andy Green <andy@openmoko.com>
Move serial.c into drivers/serial-s3c24xx.c and qi-serial.h into include/serial-s3c24xx.h
making things a bit cleaner for being s3c24xx-specific. This needed a lot of meddling
additionally, ending up with a new puts() callback that belongs in the board structure
and removal of the debug uart member, since the puts() action was the only user.
Also change serial init API name and function to only fix to 115kbps and adapt to
PCLK.
Signed-off-by: Andy Green <andy@openmoko.com>
Introduce generic bitbang I2C system, and a s3c24xx-specific implementation of
it that knows which GPIO pins and how to control them.
The generic bitbang stuff exposes synchronous (ie, it will return when it is
done) and asynchronous read and write APIs, allowing the delay between bits to
be hidden in other slow, looping code if necessary.
Signed-off-by: Andy Green <andy@openmoko.com>
Create ./src/drivers and move s3c24xx mmc thing in there with more
specific name. Move fat.h into ./include
Signed-off-by: Andy Green <andy@openmoko.com>
Giant patch:
- renames everything from kboot to qi
- changes filenames accordingly in several places
- fixes the linker script so stuff that does not execute
from steppingstone context has real linked addresses
in the relocated region, it means all code and pointers
work now outside first 4KBytes
- adds src/gta02/gta02.c to contain board-specific init and
other functions
- adds sophisticated structs to define most features in the
board-specific files, including board type detection,
board revision detection, and multiple kernel source
definition (NAND, SD FAT, SD ext2, etc), including auto
sequencing of trying the kernel sources in order (filesystems
and partition support not done yet)
- GTA02 detects itself by NOR presence and reports A5 / A6
- commandlines for kernel also come from board-specific
kernel source definitions so correct kernel commandlines
are provided depending on boot device -- on GTA02 now
boots NAND kernel into NAND jffs2 filesystem
- CRC32 is checked on loaded kernel image to make sure we
know about corruption in bootloader
Signed-off-by: Andy Green <andy@openmoko.com>
Huge patch boils down massive kernel image parsing and boot action
to a modest sequence of code that actually boots the kernel.
Signed-off-by: Andy Green <andy@openmoko.com>
Add various debugging code for serial, this got changed around a
lot in subsequent patches and printk() / vsprintf() was taken out
in the end.
Signed-off-by: Andy Green <andy@openmoko.com>