oweals/u-boot.git
9 years agodm: video: Add support for the Parade PS8622/625 bridge
Simon Glass [Fri, 3 Jul 2015 00:16:09 +0000 (18:16 -0600)]
dm: video: Add support for the Parade PS8622/625 bridge

This chip provides an eDP to LVDS bridge which is useful for SoCs that don't
support LVDS displays (or it would waste scarce pins). The setup is included
in the device tree.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agovideo: Work around lack of pinctrl
Simon Glass [Mon, 3 Aug 2015 14:19:20 +0000 (08:19 -0600)]
video: Work around lack of pinctrl

We haven't quite got pinctrl ready to apply to mainline. We don't want to
GPIO pull-up/down support to the driver model GPIO layer either. So work
around this for now.

We can address this when pinctrl is complete.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: video: Add support for video bridges
Simon Glass [Fri, 3 Jul 2015 00:16:08 +0000 (18:16 -0600)]
dm: video: Add support for video bridges

A video bridge typically converts video from one format to another, e.g.
DisplayPort to LVDS. Add driver model support for these with a simple
interface to control activation and backlight. The uclass supports GPIO
control of power and reset lines.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: pmic: Display the regulator limits on error
Simon Glass [Fri, 3 Jul 2015 00:16:07 +0000 (18:16 -0600)]
dm: pmic: Display the regulator limits on error

When a regulator command cannot honour the requested voltage, display the
limits to try to be helpful.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: power: Don't return an error when regulators are not autoset
Simon Glass [Fri, 3 Jul 2015 00:16:06 +0000 (18:16 -0600)]
dm: power: Don't return an error when regulators are not autoset

Not all regulators can be set up automatically. Adjust the code so that
regulators_enable_boot_on() will return success when some are skipped.
Only genuine errors are reported.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: pmic: max77686: Support all BUCK regulators
Simon Glass [Mon, 3 Aug 2015 14:19:25 +0000 (08:19 -0600)]
dm: pmic: max77686: Support all BUCK regulators

Add support for all BUCK regulators, now that the correct register is
accessed for each.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: power: max77686: Correct BUCK register access
Simon Glass [Fri, 3 Jul 2015 00:16:04 +0000 (18:16 -0600)]
dm: power: max77686: Correct BUCK register access

Some regulators use the wrong voltage register and thus it is not possible
to control them. Fix this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: pmic: Correct the pmic_reg_write() implementation
Simon Glass [Fri, 3 Jul 2015 00:16:03 +0000 (18:16 -0600)]
dm: pmic: Correct the pmic_reg_write() implementation

This should write the register, not read it. Fix this bug.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: pmic: max77686: Correct a few nits
Simon Glass [Fri, 3 Jul 2015 00:16:02 +0000 (18:16 -0600)]
dm: pmic: max77686: Correct a few nits

The driver name should not have a space in it. Also the regulator names
should match the case of the device tree. Fix these problems.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: power: Add support for S5M8767 regulators
Simon Glass [Fri, 3 Jul 2015 00:16:01 +0000 (18:16 -0600)]
dm: power: Add support for S5M8767 regulators

This PMIC is used with SoCs which need a combination of BUCKs and LDOs. The
driver supports changing voltage and enabling/disabling each regulator. It
supports the standard device tree binding and supports driver model.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: power: Add support for the S5M8767 PMIC
Simon Glass [Fri, 3 Jul 2015 00:16:00 +0000 (18:16 -0600)]
dm: power: Add support for the S5M8767 PMIC

This PMIC is used with SoCs which need a combination of BUCKs and LDOs. The
driver supports probing and basic register access. It supports the standard
device tree binding and supports driver model. A regulator driver can be
provided also.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: power: Add support for TPS65090 FETs
Simon Glass [Fri, 3 Jul 2015 00:15:59 +0000 (18:15 -0600)]
dm: power: Add support for TPS65090 FETs

The TPS65090 has 7 FETs which are modelled as regulators. This allows them
to be controlled by drivers easier, accessed through the 'regulator' command
and used by other drivers.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agodm: power: Add a new driver for the TPS65090 PMIC
Simon Glass [Fri, 3 Jul 2015 00:15:58 +0000 (18:15 -0600)]
dm: power: Add a new driver for the TPS65090 PMIC

The existing TPS65090 driver does not support driver model. Add a new one
that does. This can be used as a base for a regulator driver also. It uses
the standard device tree binding.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoexynos: Enable the debug UART in SPL
Simon Glass [Fri, 3 Jul 2015 00:15:55 +0000 (18:15 -0600)]
exynos: Enable the debug UART in SPL

As a debugging aid, allow UART3 to be used as a debug UART in SPL. This
is a precursor to proper UART support, which requires a substantial
refactor.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoexynos: Add debug UART support for Samsung S5P serial
Simon Glass [Fri, 3 Jul 2015 00:15:54 +0000 (18:15 -0600)]
exynos: Add debug UART support for Samsung S5P serial

Add a debug UART implementation for this serial driver. It does not set up
pinmux automatically - this must be done before calling debug_uart_init().

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoexynos: serial: Refactor init code for debug UART
Simon Glass [Fri, 3 Jul 2015 00:15:53 +0000 (18:15 -0600)]
exynos: serial: Refactor init code for debug UART

The debug UART code needs to perform the same init as the normal UART
driver. In preparation for this, move the init code into two functions, one
for the basic init and one for setting the baud rate. This will make adding
debug UART support easier.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agocros_ec: Support the LDO access method used by spring
Simon Glass [Mon, 3 Aug 2015 14:19:24 +0000 (08:19 -0600)]
cros_ec: Support the LDO access method used by spring

Add a driver to support the special LDO access used by spring. This is a
custom method in the cros_ec protocol - it does not use an I2C
pass-through.

There are two implementation choices:

1. Write a special LDO driver which can talk across the EC. Duplicate all
the logic from TPS65090 for retrying when the LDO fails to come up.

2. Write a special I2C bus driver which pretends to be a TPS65090 and
transfers reads and writes using the LDO message.

Either is distasteful. The latter method is chosen since it results in less
code duplication and a fairly simple (30-line) implementation of the core
logic.

The crosec 'ldo' subcommand could be removed (since i2c md/mw will work
instead) but is retained as a convenience.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: cros_ec: Convert the I2C tunnel code to use driver model
Simon Glass [Mon, 3 Aug 2015 14:19:23 +0000 (08:19 -0600)]
dm: cros_ec: Convert the I2C tunnel code to use driver model

The Chrome OS EC supports tunnelling through to an I2C bus on the EC. This
currently uses a copy of the I2C command code and a special 'crosec'
sub-command.

With driver model we can define an I2C bus which tunnels through to the EC,
and use the normal 'i2c' command to access it. This simplifies the code and
removes some duplication.

Add an I2C driver which tunnels through to the EC. Adjust the EC code to
support binding child devices so that it can be set up. Adjust the existing
I2C xfer function to fit driver model better.

For now the old code remains to allow things to still work. It will be
removed in a later patch once the new flow is fully enabled.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoexynos: dts: Support EC tunnel and main TPS65090 regulator
Simon Glass [Fri, 3 Jul 2015 00:15:50 +0000 (18:15 -0600)]
exynos: dts: Support EC tunnel and main TPS65090 regulator

On pit and pi the TPS65090 regulator is connected only to the EC and we
must use a tunnel to get to it. The existing U-Boot support relies on a
special driver. Add a tunnel definition so that the new device-model
TPS65090 driver can be used unmodified.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agoexynos: dts: Add PMIC and regulator definitions
Simon Glass [Fri, 3 Jul 2015 00:15:49 +0000 (18:15 -0600)]
exynos: dts: Add PMIC and regulator definitions

Snow and smdk5250 use a max77686 PMIC. We have a driver for this, so add
the relevant node to the device tree so it can be used.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoexynos: dts: Sync up I2C ports with the kernel
Simon Glass [Fri, 3 Jul 2015 00:15:48 +0000 (18:15 -0600)]
exynos: dts: Sync up I2C ports with the kernel

The kernel uses upper case for I2C unit addresses. Follow the same
convention to reduce differences.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
9 years agoexynos: i2c: Tidy up the driver model code
Simon Glass [Fri, 3 Jul 2015 00:15:47 +0000 (18:15 -0600)]
exynos: i2c: Tidy up the driver model code

The existing driver model implementation uses the old non-driver-model code
to operate, but has become impossibly tangled as a result. The actual
algorithm is quite simple.

Also the normal-speed and high-speed buses are quite different and it
doesn't seem that useful to put them in the same driver.

Finally, there is a bug which breaks communication with the Maxim sound
codec and may cause problems with other device.

Rewrite the driver model code for normal-speed operation so that it is
easier to understand, and fix the bug. Add a TODO to split the drivers.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
9 years agoexynos: i2c: Fix code style with ReadWriteByte()
Simon Glass [Fri, 3 Jul 2015 00:15:46 +0000 (18:15 -0600)]
exynos: i2c: Fix code style with ReadWriteByte()

This function should not use mixed case, and it is simpler to use
clrbits_le32() when clearing bits. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heiko Schocher <hs@denx.de>
9 years agoi2c: Add a mux for GPIO-based I2C bus arbitration
Simon Glass [Mon, 3 Aug 2015 14:19:22 +0000 (08:19 -0600)]
i2c: Add a mux for GPIO-based I2C bus arbitration

While I2C supports multi-master buses this is difficult to get right.
The implementation on the master side in software is quite complex.
Clock-stretching and the arbitrary time that an I2C transaction can take
make it difficult to share the bus fairly in the face of high traffic.
When one or more masters can be reset independently part-way through a
transaction it is hard to know the state of the bus.

This driver provides a scheme based on two 'claim' GPIOs, one driven by the
AP (Application Processor, meaning the main CPU) and one driven by the EC
(Embedded Controller, a small CPU aimed at handling system tasks). With
these they can communicate and reliably share the bus. This scheme has
minimal overhead and involves very little code. It is used on snow to
permit the EC and the AP to share access to the main system PMIC and
battery. The scheme can survive reboots by either side without difficulty.
This scheme has been tested in the field with millions of devices.

Since U-Boot runs on the AP, the terminology used is 'our' claim GPIO,
meaning the AP's, and 'their' claim GPIO, meaning the EC's. This terminology
is used by the device tree bindings in Linux also.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: i2c: Add support for multiplexed I2C buses
Simon Glass [Mon, 3 Aug 2015 14:19:21 +0000 (08:19 -0600)]
dm: i2c: Add support for multiplexed I2C buses

Add a new I2C_MUX uclass. Devices in this class can multiplex between
several I2C buses, selecting them one at a time for use by the system.
The multiplexing mechanism is left to the driver to decide - it may be
controlled by GPIOs, for example.

The uclass supports only two methods: select() and deselect().

The current mux state is expected to be stored in the mux itself since
it is the only thing that knows how to make things work. The mux can
record the current state and then avoid switching unless it is necessary.
So select() can be skipped if the mux is already in the correct state.
Also deselect() can be made a nop if required.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: i2c: Add a function to transfer messages
Simon Glass [Fri, 3 Jul 2015 00:15:42 +0000 (18:15 -0600)]
dm: i2c: Add a function to transfer messages

Sometimes it is useful to be able to transfer a raw I2C message. This
happens when the chip address needs to be set manually, or when the data to
be sent/received is in another buffer.

Add a function to provide access to this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heiko Schocher <hs@denx.de>
9 years agodm: i2c: Move definitions to the top of the header file
Simon Glass [Fri, 3 Jul 2015 00:15:41 +0000 (18:15 -0600)]
dm: i2c: Move definitions to the top of the header file

Move the flags and struct definitions higher in the file so that we can
reference them with functions declared in the driver model section.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heiko Schocher <hs@denx.de>
9 years agodm: i2c: Correct comment nits in dm_i2c_reg_read/write()
Simon Glass [Fri, 3 Jul 2015 00:15:40 +0000 (18:15 -0600)]
dm: i2c: Correct comment nits in dm_i2c_reg_read/write()

Add documentation for the @dev parameter.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heiko Schocher <hs@denx.de>
9 years agodm: i2c: Add a message debug function
Simon Glass [Fri, 3 Jul 2015 00:15:39 +0000 (18:15 -0600)]
dm: i2c: Add a message debug function

Add a way to dump the contents of an I2C message for debugging purposes.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heiko Schocher <hs@denx.de>
9 years agodm: core: Support finding a device by phandle
Simon Glass [Fri, 3 Jul 2015 00:15:38 +0000 (18:15 -0600)]
dm: core: Support finding a device by phandle

It is common for one node to reference another via a phandle. Add support
for obtaining an attached device by this method. As an example, a node may
have a 'power-supply' property which references a regulator, allowing the
driver to turn on its power.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: usb: fix USB Ethernet without CONFIG_DM_ETH regression
Marcel Ziswiler [Wed, 5 Aug 2015 14:58:17 +0000 (16:58 +0200)]
dm: usb: fix USB Ethernet without CONFIG_DM_ETH regression

The following commit enforces CONFIG_DM_ETH for USB Ethernet which
breaks any board using CONFIG_USB_HOST_ETHER without CONFIG_DM_ETH
which this patch fixes.

commit 69559093f6173dcfcb041df0995063bdbd07d49b
dm: usb: Avoid using USB ethernet with CONFIG_DM_USB and no DM_ETH

Tested on Colibri T20/T30 as well as Apalis T30 with
CONFIG_USB_HOST_ETHER and CONFIG_USB_ETHER_ASIX enabled and a LevelOne
USB-0301 ASIX AX88772 dongle.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoconfigs: Remove CONFIG_SERIAL_MULTI
Stephen Warren [Wed, 5 Aug 2015 17:51:38 +0000 (11:51 -0600)]
configs: Remove CONFIG_SERIAL_MULTI

This config option isn't used anywhere at all. Remove all places that
define/enable the option.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
9 years agoMerge git://git.denx.de/u-boot-x86
Tom Rini [Wed, 5 Aug 2015 18:12:37 +0000 (14:12 -0400)]
Merge git://git.denx.de/u-boot-x86

9 years agox86: Document how to write PIRQ information in the device tree
Bin Meng [Mon, 3 Aug 2015 03:33:35 +0000 (20:33 -0700)]
x86: Document how to write PIRQ information in the device tree

Document the development flow on figuring out PIRQ information
during the U-Boot porting.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agopci: Remove DEBUG from pci_compat.c
Bin Meng [Mon, 3 Aug 2015 03:33:34 +0000 (20:33 -0700)]
pci: Remove DEBUG from pci_compat.c

Remove DEBUG in drivers/pci/pci_compat.c.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agousb: Fix device detection code
Marek Vasut [Wed, 5 Aug 2015 01:19:22 +0000 (03:19 +0200)]
usb: Fix device detection code

The code in question polls an USB port status via USB_REQ_GET_STATUS
to determine whether there is a device on the port or not. The way to
figure that out is to check two bits. Those are wPortChange[0] and
wPortStatus[0].

The wPortChange[0] indicates whether some kind of a connection status
change happened on a port (a device was plugged or unplugged). The
wPortStatus[0] bit indicates the status of the connection (plugged or
unplugged).

The current code tests whether wPortChange[0] == wPortStatus[0] and
if that's the case, considers the loop polling for the presence of a
USB device on port finished.

This works for most USB sticks, since they come up really quickly and
trigger the USB port change detection before the first iteration of the
detection loop happens. Thus, both wPortChange[0] and wPortStatus[0]
are set to 1 and thus equal. The loop is existed in it's first iteration
and the stick is detected correctly.

The problem is with some obscure USB sticks, which take some time before
they pop up on the bus after the port was enabled. In this case, both
the wPortChange[0] and wPortStatus[0] are 0. They are equal again, so
the loop again exits in the first iteration, but this is incorrect, as
such USB stick didn't have the opportunity to get detected on the bus.

Rework the code such, that it checks for wPortChange[0] first to test
if any connection change happened at all. If no change occured, keep
polling. If a change did occur, test the wPortStatus[0] to see there is
some device present on the port and only if this is the case, break out
of the polling loop.

This patch also trims down the duration of the polling loop from 10s
per port to 1s per port. This is still annoyingly long, but there is
no better option in case of U-Boot unfortunatelly. This change will
most likely increase the duration of 'usb start' on some platforms,
but this is needed to fix a bug.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Hans de Goede <hdegoede@redhat.com>
9 years agonet: asix: fix operation without eeprom
Marcel Ziswiler [Wed, 5 Aug 2015 15:16:59 +0000 (17:16 +0200)]
net: asix: fix operation without eeprom

This patch fixes operation of our on-board AX88772B chip without EEPROM
but with a ethaddr coming from the regular U-Boot environment. This is
a forward port of some remaining parts initially implemented by
Antmicro.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Acked-by: Marek Vasut <marex@denx.de>
9 years agosunxi: Drop our own copy of the USB_KEYBOARD options
Hans de Goede [Tue, 4 Aug 2015 15:04:13 +0000 (17:04 +0200)]
sunxi: Drop our own copy of the USB_KEYBOARD options

USB_KEYBOARD is now defined in drivers/usb/Kconfig, drop our own duplicate
definition.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
9 years agousb: USB storage-specific part ifdef in uclass
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:12 +0000 (17:04 +0200)]
usb: USB storage-specific part ifdef in uclass

usb_stor_reset is only defined when USB storage support is enabled, thus the
function is not declared when such support is missing.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agosunxi: MUSB gadget config provisions, with fastboot and USB mass storage support
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:11 +0000 (17:04 +0200)]
sunxi: MUSB gadget config provisions, with fastboot and USB mass storage support

This adds some config options to the sunxi-common config to enable the USB
download gadget and the fastboot and USB mass storage functions.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agomusb: sunxi: Force EP0 on re-enable
Maxime Ripard [Tue, 4 Aug 2015 15:04:10 +0000 (17:04 +0200)]
musb: sunxi: Force EP0 on re-enable

Currently, the second use of a gadget will fail, while the first one works.

Forcing the EP0 at every enable fix this issue.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
9 years agosunxi: config update to stick with Kconfig changes
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:09 +0000 (17:04 +0200)]
sunxi: config update to stick with Kconfig changes

Now that some things were updated in Kconfig, they should be reflected on the
sunxi-common config too.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agosunxi: usb: USB_MUSB_SUNXI move to musb-new Kconfig
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:08 +0000 (17:04 +0200)]
sunxi: usb: USB_MUSB_SUNXI move to musb-new Kconfig

Now that the musb-new driver has a Kconfig, we can move Kconfig options to
enable controllers to it, so that it's easier in e.g. menuconfig.

In addition, this allows declaring support for USB_MUSB_HOST/GADGET in
defconfigs instead of the USB_MUSB_SUNXI controller, that will get selected
automatically when needed.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agousb: musb-new: Kconfig support for USB_MUSB_HOST and USB_MUSB_GADGET
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:07 +0000 (17:04 +0200)]
usb: musb-new: Kconfig support for USB_MUSB_HOST and USB_MUSB_GADGET

Having MUSB_HOST and MUSB_GADGET in Kconfig allows more flexibility with regard
to what Kconfig options to enable, such as USB_STORAGE or USB_KEYBOARD.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agousb: musb-new: CONFIG_MUSB prefix replacement with CONFIG_USB_MUSB
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:06 +0000 (17:04 +0200)]
usb: musb-new: CONFIG_MUSB prefix replacement with CONFIG_USB_MUSB

USB-related options are usually prefixed with CONFIG_USB and platform-specific
adaptation for the MUSB controller already have a CONFIG_USB_MUSB prefix, so
this switches all MUSB-related options to a CONFIG_USB_MUSB prefix, for
consistency.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agousb: Generic USB Kconfig option, that fits both host and gadget and comments
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:05 +0000 (17:04 +0200)]
usb: Generic USB Kconfig option, that fits both host and gadget and comments

There is no particular reason why the USB Kconfig option should be specific to
host mode. In prevision of adding MUSB host and gadget to Kconfig, this moves
the title and help message of the USB Kconfig option to a more generic format.

Adding comments to the usb Kconfig allows for a better separation and more
readability in generated configs and in menuconfig.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agousb: USB_ARCH_HAS_HCD Kconfig option removal
Paul Kocialkowski [Tue, 4 Aug 2015 15:04:04 +0000 (17:04 +0200)]
usb: USB_ARCH_HAS_HCD Kconfig option removal

The USB_ARCH_HAS_HCD currently serves no purpose and adds some confusion to the
required Kconfig options that are required to have USB support.

Dropping it makes things easier and doesn't break anything, since it was unused
anyways.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
9 years agousb: dwc2: Call board_usb_init() from usb_lowlevel_init()
Peter Griffin [Wed, 29 Jul 2015 21:39:29 +0000 (22:39 +0100)]
usb: dwc2: Call board_usb_init() from usb_lowlevel_init()

This patch makes the dwc2 controller like ehci / ohci / xhci controllers
by calling the board_usb_init() function from usb_lowlevel_init.

This can then be implemented by specific platforms to initialise
their USB hardware (phys / clocks etc).

Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
9 years agoefi: Add a README to explain how things work
Simon Glass [Tue, 4 Aug 2015 18:34:05 +0000 (12:34 -0600)]
efi: Add a README to explain how things work

Add some documentation on the EFI implementation in U-Boot.

Signed-off-by: Ben Stoltz <stoltz@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Gracefully disable the vesa driver when running from EFI
Simon Glass [Tue, 4 Aug 2015 18:34:04 +0000 (12:34 -0600)]
x86: Gracefully disable the vesa driver when running from EFI

We cannot use this driver when running from EFI as we have no direct hardware
access. In fact coreboot uses a different driver which uses tables provided
by coreboot. So far it does not seem possible to use a normal video driver
when booting from EFI.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Anatolij Gustschin <agust@denx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: qemu: Support operation as an EFI payload
Simon Glass [Tue, 4 Aug 2015 18:34:03 +0000 (12:34 -0600)]
x86: qemu: Support operation as an EFI payload

Disable a few things which interfere with the EFI init. This allows QEMU to
to boot into EFI, load a U-Boot payload then boot to the U-Boot prompt.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: baytrail: Support operation as an EFI payload
Simon Glass [Tue, 4 Aug 2015 18:34:02 +0000 (12:34 -0600)]
x86: baytrail: Support operation as an EFI payload

Disable a few things which interfere with the EFI init. This allows the
Minnowboard MAX to boot into EFI, load a U-Boot payload then boot to the
U-Boot prompt.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add helper code for running from EFI
Simon Glass [Tue, 4 Aug 2015 18:34:01 +0000 (12:34 -0600)]
x86: Add helper code for running from EFI

When U-Boot is running from EFI some of the x86 init is replaced with
EFI-specific init. For example, since DRAM has already been set up, we only
need to find it, not init it. Add these functions so that boards can easily
allow booting from EFI if required.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Handle running as EFI payload
Simon Glass [Tue, 4 Aug 2015 18:34:00 +0000 (12:34 -0600)]
x86: Handle running as EFI payload

When U-Boot runs as an EFI payload it needs to avoid setting up the CPU
again. Also U-Boot currently does not handle interrupts for many devices, so
run with interrupts disabled.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Add a command to display the memory map
Simon Glass [Tue, 4 Aug 2015 18:33:59 +0000 (12:33 -0600)]
efi: Add a command to display the memory map

The EFI memory map is passed from the stub to U-Boot in a table. Add a
command to display it in a vaguely readable fashion.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested on QEMU
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Add functions for decoding the EFI tables
Simon Glass [Tue, 4 Aug 2015 18:33:58 +0000 (12:33 -0600)]
efi: Add functions for decoding the EFI tables

The EFI stub can pass a table to U-Boot with information about the memory map
Potentially other things will follow. Add a way to access this table.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add support for passing tables into U-Boot
Simon Glass [Tue, 4 Aug 2015 18:33:57 +0000 (12:33 -0600)]
x86: Add support for passing tables into U-Boot

The EFI stub provides information to U-Boot in a table. This includes the
memory map which is needed to decide where to relocate U-Boot. Collect this
information in the early init code and store it in global_data.

Fix up the BIST code at the same time since we don't have it when booting
from EFI and can assume it is 0.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Add 64-bit payload support
Simon Glass [Tue, 4 Aug 2015 18:33:56 +0000 (12:33 -0600)]
efi: Add 64-bit payload support

Most EFI implementations use 64-bit. Add a way to build U-Boot as a 64-bit
EFI payload. The payload unpacks a (32-bit) U-Boot and starts it. This can
be enabled for x86 boards at present.

Signed-off-by: Simon Glass <sjg@chromium.org>
Improvements to how the payload is built:
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add a way to call 32-bit code from 64-bit mode
Simon Glass [Tue, 4 Aug 2015 18:33:55 +0000 (12:33 -0600)]
x86: Add a way to call 32-bit code from 64-bit mode

The procedure to drop from 64-bit mode to 32-bit is a bit messy. Add a
function to take care of it. It requires identity-mapped pages and that
the calling code is running below 4GB.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add an enum for some commonly-used GDT bits
Simon Glass [Tue, 4 Aug 2015 18:33:54 +0000 (12:33 -0600)]
x86: Add an enum for some commonly-used GDT bits

Rather than add these as open-coded values, create an enum with the commonly
used flags.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Support building the EFI stub
Simon Glass [Tue, 4 Aug 2015 18:33:53 +0000 (12:33 -0600)]
x86: Support building the EFI stub

Add support for building a 32/64-bit EFI stub for x86. This involves
building the startup and relocation code for either i386 or x86_64.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Add support for loading U-Boot through an EFI stub
Simon Glass [Tue, 4 Aug 2015 18:33:52 +0000 (12:33 -0600)]
efi: Add support for loading U-Boot through an EFI stub

It is useful to be able to load U-Boot onto a board even if is it already
running EFI. This can allow access to the U-Boot command interface, flexible
booting options and easier development.

The easiest way to do this is to build U-Boot as a binary blob and have an
EFI stub copy it into RAM. Add support for this feature, targeting 32-bit
initially.

Also add a way to detect when U-Boot has been loaded via a stub. This goes
in common.h since it needs to be widely available so that we avoid redoing
initialisation that should be skipped.

Signed-off-by: Simon Glass <sjg@chromium.org>
Improvements to how the payload is built:
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add relocation and link script for a 64-bit EFI application
Simon Glass [Tue, 4 Aug 2015 18:33:51 +0000 (12:33 -0600)]
x86: Add relocation and link script for a 64-bit EFI application

Add a linker script and relocation code for building 64-bit EFI
applications. This can be used for the EFI stub.

Signed-off-by: Simon Glass <sjg@chromium.org>
Improvements to how the payload is built:
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add definitions for the x86-efi board and plumb it in
Ben Stoltz [Tue, 4 Aug 2015 18:33:50 +0000 (12:33 -0600)]
x86: Add definitions for the x86-efi board and plumb it in

Add configuration and Kconfig changes for this board.

Signed-off-by: Ben Stoltz <stoltz@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Allow relocation code to build without text base
Simon Glass [Tue, 4 Aug 2015 18:33:49 +0000 (12:33 -0600)]
x86: Allow relocation code to build without text base

This code currently requires CONFIG_SYS_TEXT_BASE but this should be
unnecessary. As a first step, remove the build-time limitation and report an
error instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: dts: Add a device tree file for EFI
Simon Glass [Tue, 4 Aug 2015 18:33:48 +0000 (12:33 -0600)]
x86: dts: Add a device tree file for EFI

This contains just enough to bring up the serial UART.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add EFI board code
Ben Stoltz [Tue, 4 Aug 2015 18:33:47 +0000 (12:33 -0600)]
x86: Add EFI board code

Add support for the efi-x86 board, which supports running U-Boot as an
EFI 32-bit application.

Signed-off-by: Ben Stoltz <stoltz@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add support for U-Boot as an EFI application
Ben Stoltz [Tue, 4 Aug 2015 18:33:46 +0000 (12:33 -0600)]
x86: Add support for U-Boot as an EFI application

Add the required x86 glue code. This includes the initial start-up,
relocation and jumping to efi_main(). We also need to avoid fiddling with
interrupts.

Signed-off-by: Ben Stoltz <stoltz@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add asm/elf.h for x86-specific ELF definitions
Simon Glass [Tue, 4 Aug 2015 18:33:45 +0000 (12:33 -0600)]
x86: Add asm/elf.h for x86-specific ELF definitions

Bring in this file from Linux 4.1. It supports relocation features specific
to x86.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Support skipping relocation for EFI
Simon Glass [Tue, 4 Aug 2015 18:33:44 +0000 (12:33 -0600)]
x86: Support skipping relocation for EFI

When running as an EFI application we must skip relocation. Add support for
this in the x86 relocation code.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Support building a u-boot-app.efi executable
Simon Glass [Tue, 4 Aug 2015 18:33:43 +0000 (12:33 -0600)]
efi: Support building a u-boot-app.efi executable

Add support for building U-Boot as an EFI application with a .efi suffix.
This can be loaded by EFI provided that EFI has the same bit width (32-
or 64-bit) as U-Boot. This unfortunate limitation is imposed by EFI.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Set up toolchain flags for running as EFI application
Ben Stoltz [Tue, 4 Aug 2015 18:33:42 +0000 (12:33 -0600)]
x86: Set up toolchain flags for running as EFI application

Adjust the toolchain flags to build U-Boot as a relocatable shared library,
as required by EFI.

Signed-off-by: Ben Stoltz <stoltz@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Drop CONFIG_SYS_TEXT_BASE for EFI
Ben Stoltz [Tue, 4 Aug 2015 18:33:41 +0000 (12:33 -0600)]
efi: Drop CONFIG_SYS_TEXT_BASE for EFI

When U-Boot runs as an EFI application is does not have a definition of
CONFIG_SYS_TEXT_BASE. U-Boot is a relocatable application and the relocation
is done by EFI. U-Boot can be loaded at any address.

Ensure that this CONFIG option is not set in this case.

Signed-off-by: Ben Stoltz <stoltz@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Add a serial driver
Simon Glass [Tue, 4 Aug 2015 18:33:40 +0000 (12:33 -0600)]
efi: Add a serial driver

Add a serial driver which makes use of EFI's console in/out service.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested on Intel Crown Bay and QEMU
Tested-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoAdd a way to skip relocation
Simon Glass [Tue, 4 Aug 2015 18:33:39 +0000 (12:33 -0600)]
Add a way to skip relocation

When running U-Boot as an EFI application we cannot relocate since we do not
have relocation information. U-Boot has already been relocated to a suitable
address.

Add a global_data flag to control skipping relocation.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Update README to explain booting Ubuntu on Minnowmax
Simon Glass [Mon, 27 Jul 2015 21:47:31 +0000 (15:47 -0600)]
x86: Update README to explain booting Ubuntu on Minnowmax

The steps required to boot a Linux distribution from U-Boot on x86 are not
very complicated, but it is a good idea to have these written down in an
accessible place.

Document how to examine the boot media from U-Boot, how to load a kernel,
load a ramdisk, set the kernel boot arguments and start the kernel. With
these instructions Ubuntu boots mostly normally on Minnowmax.

Note that the TSC timer does not operate correctly and gives warnings in
the boot log. I expect that ACPI support will solve this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: minnowmax: Drop the old PCI settings
Simon Glass [Mon, 27 Jul 2015 21:47:29 +0000 (15:47 -0600)]
x86: minnowmax: Drop the old PCI settings

These are now in the device tree so we don't need to use the CONFIG options.
Drop them.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: dts: Fix typo in intel,irq-router.txt
Simon Glass [Mon, 27 Jul 2015 21:47:26 +0000 (15:47 -0600)]
x86: dts: Fix typo in intel,irq-router.txt

Fix a small typo in this binding file.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Drop CONFIG_DCACHE_RAM_MRC_VAR_SIZE from header file
Simon Glass [Mon, 27 Jul 2015 21:47:25 +0000 (15:47 -0600)]
x86: Drop CONFIG_DCACHE_RAM_MRC_VAR_SIZE from header file

This is provided in Kconfig so we don't need it here.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Move CONFIG_X86_SERIAL to Kconfig
Simon Glass [Mon, 27 Jul 2015 21:47:23 +0000 (15:47 -0600)]
x86: Move CONFIG_X86_SERIAL to Kconfig

Move this config option to Kconfig and tidy up.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Move Chrome OS options to defconfig
Simon Glass [Mon, 27 Jul 2015 21:47:22 +0000 (15:47 -0600)]
x86: Move Chrome OS options to defconfig

Drop these from the header file and use Kconfig instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agodm: Add a return value comment to device_get_child()
Simon Glass [Mon, 27 Jul 2015 21:47:19 +0000 (15:47 -0600)]
dm: Add a return value comment to device_get_child()

At present this function does not specify its return value. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agopci: Indicate prefetchable memory allocate when debugging
Simon Glass [Mon, 27 Jul 2015 21:47:18 +0000 (15:47 -0600)]
pci: Indicate prefetchable memory allocate when debugging

At present the PCI output displays 'Mem' when it allocates memory for a PCI
device, whether it is prefetchable or not. There is a distinction since the
memory comes from separate pools. Use 'Prf' instead of 'Mem' when allocating
prefetchable memory.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agopci: Add a constant for an invalid interrupt
Simon Glass [Mon, 27 Jul 2015 21:47:17 +0000 (15:47 -0600)]
pci: Add a constant for an invalid interrupt

Rather than using 0xff in the code, add a constant.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Display the correct initcall pre-relocation values
Simon Glass [Fri, 31 Jul 2015 15:31:38 +0000 (09:31 -0600)]
efi: Display the correct initcall pre-relocation values

With EFI the start address of U-Boot is specified differently. We could
consider just setting GD_FLG_RELOC and then setting up reloc_off. But that
flag has other implementations and we are not able to use U-Boot relocation
which this flag implies.

Instead, just add a special case for EFI.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Avoid using non-existent text base
Ben Stoltz [Fri, 31 Jul 2015 15:31:37 +0000 (09:31 -0600)]
efi: Avoid using non-existent text base

When U-Boot runs as an EFI application is does not have a definition of
CONFIG_SYS_TEXT_BASE. U-Boot is a relocatable application and the relocation
is done by EFI. U-Boot can be loaded at any address.

This is similar to how sandbox works. Adjust the early board init to deal
with this.

Signed-off-by: Ben Stoltz <stoltz@google.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoefi: Add start-up library code
Simon Glass [Fri, 31 Jul 2015 15:31:36 +0000 (09:31 -0600)]
efi: Add start-up library code

When running as an EFI application, U-Boot must request memory from EFI,
and provide access to the boot services U-Boot needs.

Add library code to perform these tasks. This includes efi_main() which is
the entry point from EFI. U-Boot is built as a shared library.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Allow use of global_data with EFI
Simon Glass [Fri, 31 Jul 2015 15:31:35 +0000 (09:31 -0600)]
x86: Allow use of global_data with EFI

On x86 the global_data pointer is provided through a somewhat-bizarre and
x86-specific mechanism: the F segment register is set to a pointer to the
start of global_data, so that accesses can use this build-in register.

When running as an EFI application we don't want to mess with the Global
Descriptor Table (GDT) and there is little advantage (in terms of code size)
to doing so.

Allow global_data to be a simple variable in this case.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agopci: Fix up code for CONFIG_PCI_ENUM_ONLY
Simon Glass [Fri, 31 Jul 2015 15:31:34 +0000 (09:31 -0600)]
pci: Fix up code for CONFIG_PCI_ENUM_ONLY

This option is not used by any board but appears to still be useful, at least
for testing. With recent commits it does not build, so fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agopci: Use debug() instead of DEBUGF() in pci_auto.c
Simon Glass [Fri, 31 Jul 2015 15:31:33 +0000 (09:31 -0600)]
pci: Use debug() instead of DEBUGF() in pci_auto.c

This file does not need its own way of doing debug(). Clean it up to use the
new way.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Pavel Machek <pavel@denx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Tidy up a few minor issues with interrupts
Simon Glass [Fri, 31 Jul 2015 15:31:32 +0000 (09:31 -0600)]
x86: Tidy up a few minor issues with interrupts

Fix a typo, remove an unused field and make sure to use existing #define
constants instead of open-coded values.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add some missing global_data declarations in files that use gd
Simon Glass [Fri, 31 Jul 2015 15:31:31 +0000 (09:31 -0600)]
x86: Add some missing global_data declarations in files that use gd

Some files use global_data but don't declare it. Fix this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Tidy up the 64-bit calling code
Simon Glass [Fri, 31 Jul 2015 15:31:30 +0000 (09:31 -0600)]
x86: Tidy up the 64-bit calling code

The GDT works but technically the length is incorrect. Fix this and add a
comment.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Drop unused copy_fdt_to_ram()
Simon Glass [Fri, 31 Jul 2015 15:31:29 +0000 (09:31 -0600)]
x86: Drop unused copy_fdt_to_ram()

This is now handled by generic U-Boot code so we do not need an x86 version.
It is no-longer called, so remove it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Tidy up global_data flags
Simon Glass [Fri, 31 Jul 2015 15:31:28 +0000 (09:31 -0600)]
x86: Tidy up global_data flags

These flags now overlap some global ones. Adjust the x86-specific flags to
avoid this. Since this requires a change to the start.S code, add a way for
tools to find the 32-bit cold reset entry point. Previously this was at a
fixed offset.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoReserve the top 16 flag bits for architecture-specific use
Simon Glass [Fri, 31 Jul 2015 15:31:27 +0000 (09:31 -0600)]
Reserve the top 16 flag bits for architecture-specific use

Add a convention that the generic global_data only occupy the bottom 16 bits
of the flags word, so that there is less chance of a conflict. At present the
x86 flags conflict.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Use CR0 constants in CPU init
Simon Glass [Fri, 31 Jul 2015 15:31:26 +0000 (09:31 -0600)]
x86: Use CR0 constants in CPU init

We should use these constants where possible.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agox86: Add various minor tidy-ups to the 32-bit startup code
Simon Glass [Fri, 31 Jul 2015 15:31:25 +0000 (09:31 -0600)]
x86: Add various minor tidy-ups to the 32-bit startup code

Fix a typo, improve some comments and add a little more detail in some
cases.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoBring in __aligned_u64 and friends to linux/types.h
Simon Glass [Fri, 31 Jul 2015 15:31:24 +0000 (09:31 -0600)]
Bring in __aligned_u64 and friends to linux/types.h

These will be used for efi.h both for U-Boot running as an EFI application
and as a payload. They come from Linux 4.1.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
9 years agoAllow objcopy to work without filling gaps with 0xff
Simon Glass [Fri, 31 Jul 2015 15:31:23 +0000 (09:31 -0600)]
Allow objcopy to work without filling gaps with 0xff

This is currently done for all targets, since 0xff is the default erased
value for most flash devices. In some cases this is not what we want (e.g.
for EFI images) so provide a command to do a vanilla objcopy.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>