project/bcm63xx/u-boot.git
9 years agodm: net: Adjust PHY interface to work with CONFIG_DM_ETH
Simon Glass [Sun, 5 Apr 2015 22:07:39 +0000 (16:07 -0600)]
dm: net: Adjust PHY interface to work with CONFIG_DM_ETH

When driver model is used for Ethernet a few functions are passed a udevice
instead of an eth_device. Also add a function to find a PHY type given its
name. This will be used to decode the device tree node.

Finally, put a phy_interface field in struct eth_pdata since this is an
important part of the platform data for Ethernet.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
9 years agoAvoid calling print_eths() with driver model
Simon Glass [Sun, 5 Apr 2015 22:07:38 +0000 (16:07 -0600)]
Avoid calling print_eths() with driver model

This function is not supported with driver model.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
9 years agodm: net: Use existing Ethernet init for driver model
Simon Glass [Sun, 5 Apr 2015 22:07:37 +0000 (16:07 -0600)]
dm: net: Use existing Ethernet init for driver model

At present even with driver model is used there is still much manual init
of related devices: PHY, environment and board init. Until these requirements
are dealt with in another way we need to keep them around.

Break out the init portion of the legacy eth_initialize() into a separate
function and call it from both the legacy and driver model eth_initialize()
functions.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
9 years agodts: sunxi: Bring in Ethernet device tree bindings
Simon Glass [Sun, 5 Apr 2015 22:07:35 +0000 (16:07 -0600)]
dts: sunxi: Bring in Ethernet device tree bindings

Since we will use these bindings on sunxi, bring them in from Linux
4.0-rc1.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
9 years agoKconfig: Move CONFIG_DESIGNWARE_ETH to Kconfig
Simon Glass [Sun, 5 Apr 2015 22:07:34 +0000 (16:07 -0600)]
Kconfig: Move CONFIG_DESIGNWARE_ETH to Kconfig

Move this to Kconfig and clean up board config files that use it. Also
rename it to CONFIG_ETH_DESIGNWARE to fit with the naming that exists
in drivers/net/Kconfig.

Signed-off-by: Simon Glass <sjg@chromium.org>
Version 1:
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
9 years agosunxi: Replace the pcDuino3 config with FDT version
Simon Glass [Sun, 5 Apr 2015 22:07:33 +0000 (16:07 -0600)]
sunxi: Replace the pcDuino3 config with FDT version

We currently have Linksprite_pcDuino3 and Linksprite_pcDuino3_fdt. Drop the
former in favour of the latter.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
9 years agosandbox: Enable more network features for sandbox
Joe Hershberger [Wed, 8 Apr 2015 06:41:25 +0000 (01:41 -0500)]
sandbox: Enable more network features for sandbox

More net features enabled and supported on sandbox to allow more testing

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: Fix compile errors when SNTP enabled and not DATE
Joe Hershberger [Wed, 8 Apr 2015 06:41:24 +0000 (01:41 -0500)]
net: Fix compile errors when SNTP enabled and not DATE

When SNTP is enabled and DATE is not, to_tm() is not built in. It could
be defined when TIMESTAMP is defined, so check for that.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: Convert protocol structures to use explicit sizes
Sergey Temerkhanov [Wed, 8 Apr 2015 06:41:23 +0000 (01:41 -0500)]
net: Convert protocol structures to use explicit sizes

Convert uchar/ushort to u8/u16 respectively.

Signed-off-by: Radha Mohan Chintakuntla <rchintakuntla@cavium.com>
Signed-off-by: Sergey Temerkhanov <s.temerkhanov@gmail.com>
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: Fix incorrect DHCP/BOOTP packets on 64-bit systems
Sergey Temerkhanov [Wed, 8 Apr 2015 06:41:22 +0000 (01:41 -0500)]
net: Fix incorrect DHCP/BOOTP packets on 64-bit systems

This commit fixes incorrect DHCP/BOOTP packet layout caused by
'ulong' type size difference on 64 and 32-bit architectures.
It also renames NetReadLong()/NetCopyLong() to
net_read_u32/net_copy_u32() accordingly.

Signed-off-by: Radha Mohan Chintakuntla <rchintakuntla@cavium.com>
Signed-off-by: Sergey Temerkhanov <s.temerkhanov@gmail.com>
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Fix checkpatch.pl failures in net.c
Joe Hershberger [Wed, 8 Apr 2015 06:41:21 +0000 (01:41 -0500)]
net: cosmetic: Fix checkpatch.pl failures in net.c

Finish eliminating CamelCase from net.c and other failures

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Fix checkpatch.pl failures in net.h
Joe Hershberger [Wed, 8 Apr 2015 06:41:20 +0000 (01:41 -0500)]
net: cosmetic: Fix checkpatch.pl failures in net.h

There were still a few remaining complains in the legacy eth_device
definition that hadn't been addressed.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Fix checkpatch.pl failures in eth.c
Joe Hershberger [Wed, 8 Apr 2015 06:41:19 +0000 (01:41 -0500)]
net: cosmetic: Fix checkpatch.pl failures in eth.c

There were still a few failures in net/eth.c, especially in the legacy
part of the code.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Fix checkpatch.pl failures in linklocal
Joe Hershberger [Wed, 8 Apr 2015 06:41:18 +0000 (01:41 -0500)]
net: cosmetic: Fix checkpatch.pl failures in linklocal

A few new rules in checkpatch.pl since linklocal.c was added.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up cmd_net variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:17 +0000 (01:41 -0500)]
net: cosmetic: Clean up cmd_net variables and functions

Make a thorough pass through all variables and function names contained
within common/cmd_net.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up netconsole variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:16 +0000 (01:41 -0500)]
net: cosmetic: Clean up netconsole variables and functions

Make a thorough pass through all variables and function names contained
within netconsole.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up DNS variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:15 +0000 (01:41 -0500)]
net: cosmetic: Clean up DNS variables and functions

Make a thorough pass through all variables and function names contained
within dns.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up CDP variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:14 +0000 (01:41 -0500)]
net: cosmetic: Clean up CDP variables and functions

Make a thorough pass through all variables and function names contained
within cdp.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up ping variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:13 +0000 (01:41 -0500)]
net: cosmetic: Clean up ping variables and functions

Make a thorough pass through all variables and function names contained
within ping.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up SNTP variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:12 +0000 (01:41 -0500)]
net: cosmetic: Clean up SNTP variables and functions

Make a thorough pass through all variables and function names contained
within sntp.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up RARP variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:11 +0000 (01:41 -0500)]
net: cosmetic: Clean up RARP variables and functions

Make a thorough pass through all variables and function names contained
within rarp.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up NFS variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:10 +0000 (01:41 -0500)]
net: cosmetic: Clean up NFS variables and functions

Make a thorough pass through all variables and function names contained
within nfs.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up DHCP variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:09 +0000 (01:41 -0500)]
net: cosmetic: Clean up DHCP variables and functions

Make a thorough pass through all variables and function names contained
within bootp.c and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up ARP variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:08 +0000 (01:41 -0500)]
net: cosmetic: Clean up ARP variables and functions

Make a thorough pass through all variables and function names contained
within arp and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Clean up TFTP variables and functions
Joe Hershberger [Wed, 8 Apr 2015 06:41:07 +0000 (01:41 -0500)]
net: cosmetic: Clean up TFTP variables and functions

Make a thorough pass through all variables and function names contained
within tftp and remove CamelCase and improve naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Fix var naming net <-> eth drivers
Joe Hershberger [Wed, 8 Apr 2015 06:41:06 +0000 (01:41 -0500)]
net: cosmetic: Fix var naming net <-> eth drivers

Update the naming convention used in the network stack functions and
variables that Ethernet drivers use to interact with it.

This cleans up the temporary hacks that were added to this interface
along with the DM support.

This patch has a few remaining checkpatch.pl failures that would be out
of the scope of this patch to fix (drivers that are in gross violation
of checkpatch.pl).

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Cleanup internal packet buffer names
Joe Hershberger [Wed, 8 Apr 2015 06:41:05 +0000 (01:41 -0500)]
net: cosmetic: Cleanup internal packet buffer names

This patch cleans up the names of internal packet buffer names that are
used within the network stack and the functions that use them.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
9 years agonet: cosmetic: Name ethaddr variables consistently
Joe Hershberger [Wed, 8 Apr 2015 06:41:04 +0000 (01:41 -0500)]
net: cosmetic: Name ethaddr variables consistently

Use "_ethaddr" at the end of variables and drop CamelCase.
Make constant values actually 'const'.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Fixup var names for DHCP strings
Joe Hershberger [Wed, 8 Apr 2015 06:41:03 +0000 (01:41 -0500)]
net: cosmetic: Fixup var names for DHCP strings

Remove CamelCase variable naming.
Move the definition to the same compilation unit as the primary use.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Fixup var names related to boot file
Joe Hershberger [Wed, 8 Apr 2015 06:41:02 +0000 (01:41 -0500)]
net: cosmetic: Fixup var names related to boot file

The variables around the bootfile were inconsistent and used CamelCase.
Update them to make the code more readable.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agonet: cosmetic: Change IPaddr_t to struct in_addr
Joe Hershberger [Wed, 8 Apr 2015 06:41:01 +0000 (01:41 -0500)]
net: cosmetic: Change IPaddr_t to struct in_addr

This patch is simply clean-up to make the IPv4 type that is used match
what Linux uses. It also attempts to move all variables that are IP
addresses use good naming instead of CamelCase. No functional change.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agopowerpc: ids8313: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:48:03 +0000 (12:48 +0900)]
powerpc: ids8313: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: cm_fx6: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:48:02 +0000 (12:48 +0900)]
ARM: cm_fx6: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: stv0991: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:48:01 +0000 (12:48 +0900)]
ARM: stv0991: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: bav335x: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:48:00 +0000 (12:48 +0900)]
ARM: bav335x: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: socfpga: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:47:59 +0000 (12:47 +0900)]
ARM: socfpga: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: mx6: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:47:58 +0000 (12:47 +0900)]
ARM: mx6: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: snapper9260: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:47:57 +0000 (12:47 +0900)]
ARM: snapper9260: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: rmobile: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:47:56 +0000 (12:47 +0900)]
ARM: rmobile: use "select" instead of default value in defconfig

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: zynq: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:47:55 +0000 (12:47 +0900)]
ARM: zynq: use "select" instead of default value in defconfig

All the Zynq boards have switch to Driver Model.
"select DM" is better than default value in each defconfig.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agoARM: UniPhier: use "select" instead of default value in defconfig
Masahiro Yamada [Tue, 31 Mar 2015 03:47:54 +0000 (12:47 +0900)]
ARM: UniPhier: use "select" instead of default value in defconfig

All the UniPhier boards have switch to Driver Model.
"select DM" is better than default value in each defconfig.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agodm: select CONFIG_DM* options
Masahiro Yamada [Tue, 31 Mar 2015 03:47:53 +0000 (12:47 +0900)]
dm: select CONFIG_DM* options

As mentioned in the previous commit, adding default values in each
Kconfig causes problems because it does not co-exist with the
"depends on" syntax.  (Please note this is not a bug of Kconfig.)
We should not do so unless we have a special reason.  Actually,
for CONFIG_DM*, we have no good reason to do so.

Generally, CONFIG_DM is not a user-configurable option.  Once we
convert a driver into Driver Model, the board only works with Driver
Model, i.e. CONFIG_DM must be always enabled for that board.
So, using "select DM" is more suitable rather than allowing users to
modify it.  Another good thing is, Kconfig warns unmet dependencies
for "select" syntax, so we easily notice bugs.

Actually, CONFIG_DM and other related options have been added
without consistency: some into arch/*/Kconfig, some into
board/*/Kconfig, and some into configs/*_defconfig.

This commit prefers "select" and cleans up the following issues.

[1] Never use "CONFIG_DM=n" in defconfig files

It is really rare to add "CONFIG_FOO=n" to disable CONFIG options.
It is more common to use "# CONFIG_FOO is not set".  But here, we
do not even have to do it.
Less than half of OMAP3 boards have been converted to Driver Model.
Adding the default values to arch/arm/cpu/armv7/omap3/Kconfig is
weird.  Instead, add "select DM" only to appropriate boards, which
eventually eliminates "CONFIG_DM=n", etc.

[2] Delete redundant CONFIGs

Sandbox sets CONFIG_DM in arch/sandbox/Kconfig and defines it again
in configs/sandbox_defconfig.
Likewise, OMAP3 sets CONFIG_DM arch/arm/cpu/armv7/omap3/Kconfig and
defines it also in omap3_beagle_defconfig and devkit8000_defconfig.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
9 years agodm: spi_flash: fix wrong dependency
Masahiro Yamada [Tue, 31 Mar 2015 03:47:52 +0000 (12:47 +0900)]
dm: spi_flash: fix wrong dependency

CONFIG_SPI does not exist in Kconfig in the first place, so the
dependency "depends on DM && SPI" is never met, i.e., DM_SPI_FLASH
can never be enabled (unless you ignore the dependency in an illegal
way.  See below.)

Actually, some defconfigs such as socfpga_*_defconfig define
CONFIG_DM_SPI_FLASH=y, but it never appears in the .config file
because of this wrong dependency.

On the other hand, all the Tegra boards enable DM_SPI_FLASH because

  config DM_SPI_FLASH
          default y

silently ignores the dependency.
Unfortunately, this style of CONFIG definition is abused everywhere
in U-Boot, so we easily miss such a wrong dependency.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
9 years agodm: usb: Add a README for driver model
Simon Glass [Wed, 25 Mar 2015 18:23:08 +0000 (12:23 -0600)]
dm: usb: Add a README for driver model

Add some documentation describing how USB is implemented with USB. This
might make things easier for people to understand.

Signed-off-by: Simon Glass <sjg@chromium.org>
9 years agodm: usb: Add tests for the USB uclass
Simon Glass [Wed, 25 Mar 2015 18:23:05 +0000 (12:23 -0600)]
dm: usb: Add tests for the USB uclass

This adds a simple test for probing and a functional test using the flash
stick emulator, which tests a large chunk of the USB stack.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: test: Allow 'dm test' to select a particular test to run
Simon Glass [Wed, 25 Mar 2015 18:23:04 +0000 (12:23 -0600)]
dm: test: Allow 'dm test' to select a particular test to run

As well as running all tests, it is useful to be able to run a selected test.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: test: Correct printf() output nit in 'dm uclass'
Simon Glass [Wed, 25 Mar 2015 18:23:03 +0000 (12:23 -0600)]
dm: test: Correct printf() output nit in 'dm uclass'

Neither the hyphen nor the equals sign is needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: sandbox: Enable USB
Simon Glass [Wed, 25 Mar 2015 18:23:02 +0000 (12:23 -0600)]
dm: usb: sandbox: Enable USB

Enable USB emulation and associated features so that USB can be used in
sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Tidy up pipe value decoding
Simon Glass [Wed, 25 Mar 2015 18:23:01 +0000 (12:23 -0600)]
dm: usb: Tidy up pipe value decoding

Add a few more shifts/masks to make it easier to decode a pipe value (rather
than just building it). We need this for USB device emulation.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Add a generic descriptor struct
Simon Glass [Wed, 25 Mar 2015 18:23:00 +0000 (12:23 -0600)]
dm: usb: Add a generic descriptor struct

This is useful for creating lists of descriptors, and is better than using
void * for this purpose.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: exynos: Enable both EHCI and XHCI on snow
Simon Glass [Wed, 25 Mar 2015 18:22:58 +0000 (12:22 -0600)]
dm: usb: exynos: Enable both EHCI and XHCI on snow

Since we can support both controllers now, enable this in the device tree.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: exynos: Enable both USB ports on snow
Simon Glass [Wed, 25 Mar 2015 18:22:57 +0000 (12:22 -0600)]
dm: usb: exynos: Enable both USB ports on snow

Switch snow over to use both EHCI and XHCI at the same time.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: exynos: Use driver model for USB
Simon Glass [Wed, 25 Mar 2015 18:22:56 +0000 (12:22 -0600)]
dm: usb: exynos: Use driver model for USB

Convert Exynos boards over to use driver model for USB. This does not remove
any unnecessary code so far.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: exynos: Adjust XHCI driver to support driver model
Simon Glass [Wed, 25 Mar 2015 18:22:55 +0000 (12:22 -0600)]
dm: usb: exynos: Adjust XHCI driver to support driver model

Support driver model in the exynos XHCI driver.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Rename the XHCI HCD to U-Boot
Simon Glass [Wed, 25 Mar 2015 18:22:54 +0000 (12:22 -0600)]
dm: usb: Rename the XHCI HCD to U-Boot

This should be "U-Boot", not "u-boot".

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Support driver model in XHCI
Simon Glass [Wed, 25 Mar 2015 18:22:53 +0000 (12:22 -0600)]
dm: usb: Support driver model in XHCI

Add driver model support in the XHCI support code so that it can be used by
XHCI USB drivers.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: xhci: Factor out common init/uninit
Simon Glass [Wed, 25 Mar 2015 18:22:52 +0000 (12:22 -0600)]
dm: usb: xhci: Factor out common init/uninit

Since driver model will want to use most of the same code for XHCI init
and uninit, put it in a separate function.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: xhci: Use explicit parameters for xhci_setup_addressable_virt_dev()
Simon Glass [Wed, 25 Mar 2015 18:22:51 +0000 (12:22 -0600)]
dm: usb: xhci: Use explicit parameters for xhci_setup_addressable_virt_dev()

This function should not be delving into struct usb_device. Pass in the
parameters it needs directly.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: xhci: Use explicit parameters for xhci_alloc_virt_device()
Simon Glass [Wed, 25 Mar 2015 18:22:50 +0000 (12:22 -0600)]
dm: usb: xhci: Use explicit parameters for xhci_alloc_virt_device()

This function should not be delving into struct usb_device. Pass in the
parameters it needs directly.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: xhci: Use a function to get xhci_ctrl
Simon Glass [Wed, 25 Mar 2015 18:22:49 +0000 (12:22 -0600)]
dm: usb: xhci: Use a function to get xhci_ctrl

Rather than getting this directly from struct usb_device, call a function
to obtain it. This will make it possible for driver model to provide it
another way.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: tegra: Add driver model support to tegra EHCI
Simon Glass [Wed, 25 Mar 2015 18:22:48 +0000 (12:22 -0600)]
dm: usb: tegra: Add driver model support to tegra EHCI

Update this driver with driver model support for USB.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: tegra: Move most of init/uninit into a function
Simon Glass [Wed, 25 Mar 2015 18:22:47 +0000 (12:22 -0600)]
dm: usb: tegra: Move most of init/uninit into a function

We want to use mostly the same init and uninit code for driver model, so move
the common part into two functions.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: tegra: Tidy up error handling and a static function
Simon Glass [Wed, 25 Mar 2015 18:22:46 +0000 (12:22 -0600)]
dm: usb: tegra: Tidy up error handling and a static function

Try to return useful error numbers where possible. Also avoid swallowing
an error number when it is returned by a called function.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: tegra: Remove the port_addr_clear_csc variable
Simon Glass [Wed, 25 Mar 2015 18:22:45 +0000 (12:22 -0600)]
dm: usb: tegra: Remove the port_addr_clear_csc variable

This variable is a bit of a hack. We can obtain the same information from
the normal device config. This will fit better with driver model, where
global variables are best avoided.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: exynos: Add driver model support to exynos EHCI
Simon Glass [Wed, 25 Mar 2015 18:22:44 +0000 (12:22 -0600)]
dm: usb: exynos: Add driver model support to exynos EHCI

Update this driver with driver model support for USB.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Add support for USB ethernet devices with driver model
Simon Glass [Wed, 25 Mar 2015 18:22:43 +0000 (12:22 -0600)]
dm: usb: Add support for USB ethernet devices with driver model

Add support for scanning USB etghernet devices with driver model. This mostly
involves scanning all buses since device numbering is not unique across
buses.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: dts: sandbox: Add some sample USB devices to sandbox
Simon Glass [Wed, 25 Mar 2015 18:22:42 +0000 (12:22 -0600)]
dm: usb: dts: sandbox: Add some sample USB devices to sandbox

These allow basic testing of the USB functionality within sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: sandbox: Add a driver for sandbox
Simon Glass [Wed, 25 Mar 2015 18:22:41 +0000 (12:22 -0600)]
dm: usb: sandbox: Add a driver for sandbox

This driver supports using emulation devices to provide a USB bus within
sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: sandbox: Add an emulator for USB hub emulation
Simon Glass [Wed, 25 Mar 2015 18:22:40 +0000 (12:22 -0600)]
dm: usb: sandbox: Add an emulator for USB hub emulation

All USB controllers need a root hub. Add a sandbox emulation for this so
that we can add USB devices to sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: sandbox: Add an emulator for USB flash devices
Simon Glass [Wed, 25 Mar 2015 18:22:39 +0000 (12:22 -0600)]
dm: usb: sandbox: Add an emulator for USB flash devices

This emulator supports USB enumeration and allows a local file to be provided
as the contents of the emulated flash stick. U-Boot can then use the file as
it would a normal device, with all access passing through the usb_stor layer
and the USB stack.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: sandbox: Reset emulation devices in usb stop()
Simon Glass [Wed, 25 Mar 2015 18:22:38 +0000 (12:22 -0600)]
dm: usb: sandbox: Reset emulation devices in usb stop()

These devices must have their addresses removed ready for the next USB
bus enumeration. Add this logic to usb_stop().

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: sandbox: Add a uclass for USB device emulation
Simon Glass [Wed, 25 Mar 2015 18:22:37 +0000 (12:22 -0600)]
dm: usb: sandbox: Add a uclass for USB device emulation

With sandbox we want to be able to emulate USB devices so that we can test
the USB stack. Add a uclass to support this. It implements the same
operations as a normal USB device driver, but in this case passes them on
to an emulation driver.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Move struct usb_string to a common place
Simon Glass [Wed, 25 Mar 2015 18:22:36 +0000 (12:22 -0600)]
dm: usb: Move struct usb_string to a common place

This is needed for sandbox USB device emulation, so move it to a place
where it can be found by things other than gadgets.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: tegra: Add vbus GPIOs for nyan
Simon Glass [Wed, 25 Mar 2015 18:22:35 +0000 (12:22 -0600)]
dm: usb: tegra: Add vbus GPIOs for nyan

These are needed to enable the USB bus (although not sufficient since it
still does not work).

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Support driver model with USB keyboards
Simon Glass [Wed, 25 Mar 2015 18:22:34 +0000 (12:22 -0600)]
dm: usb: Support driver model with USB keyboards

Allow USB keyboards to work with driver model. The main difference is that
we can have multiple buses (each with its own device numbering) and each
bus must be scanned.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Split out the keyboard probe into its own function
Simon Glass [Wed, 25 Mar 2015 18:22:33 +0000 (12:22 -0600)]
dm: usb: Split out the keyboard probe into its own function

Before adding driver model support, split out code from this over-long
function.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Allow setting up a USB controller as a device/gadget
Simon Glass [Wed, 25 Mar 2015 18:22:32 +0000 (12:22 -0600)]
dm: usb: Allow setting up a USB controller as a device/gadget

Some controllers support OTG (on-the-go) where they can operate as either
host or device. The gadget layer in U-Boot supports this.

While this layer does not interact with driver model, we can provide a
function which sets up the controller in the correct way. This way the code
at least builds (although it likely will not work).

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Bind generic USB devices when there is no driver
Simon Glass [Wed, 25 Mar 2015 18:22:31 +0000 (12:22 -0600)]
dm: usb: Bind generic USB devices when there is no driver

At present USB devices with no driver model driver cannot be seen in the
device list, and we fail to set them up correctly. This means they cannot
be used.

While having real drivers that support driver model for all USB devices
is the eventual goal, we are not there yet.

As a stop-gap, add a generic USB driver which is bound when we do not have
a real driver. This allows the device to be set up and shown on the bus.
It also allows ad-hoc code (such as usb_ether) to find these devices and
set them up.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Allow USB drivers to be declared and auto-probed
Simon Glass [Wed, 25 Mar 2015 18:22:30 +0000 (12:22 -0600)]
dm: usb: Allow USB drivers to be declared and auto-probed

USB devices in U-Boot are currently probed only after all devices have
been enumerated. Each type of device is probed by custom code, e.g.:

- USB storage
- Keyboard
- Ethernet

With driver model this approach doesn't work very well. We could build
a picture of the bus and then go back and add the devices later, but
this means that the data structures are incomplete for quite a while.
It also does not follow the model of being able to bind a device when we
discover it.

We would prefer to have devices automatically be bound as the device is
enumerated. This allows us to attach drivers to particular USB classes
or product/vendor IDs. This is the method used by Linux.

Add the required #defines from Linux, a way of declaring a USB driver and
the logic to locate the correct driver given the USB device's descriptors.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Add driver model support to EHCI
Simon Glass [Wed, 25 Mar 2015 18:22:29 +0000 (12:22 -0600)]
dm: usb: Add driver model support to EHCI

Add a way for EHCI controller drivers to support driver model. Drivers can
call ehci_register() to register themselves in their probe() methods.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Change ehci_reset() to use a pointer
Simon Glass [Wed, 25 Mar 2015 18:22:28 +0000 (12:22 -0600)]
dm: usb: Change ehci_reset() to use a pointer

The index cannot be used with driver model, and isn't needed anyway. Change
the parameter to a pointer.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Drop the EHCI weak functions
Simon Glass [Wed, 25 Mar 2015 18:22:27 +0000 (12:22 -0600)]
dm: usb: Drop the EHCI weak functions

These are a pain with driver model because we might have different EHCI
drivers which want to implement them differently. Now that they use
consistent function signatures, we can in good conscience move them to
a struct.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
Fix non-driver-model EHCI to set up the EHCI operations correctly:
Signed-off-by: Tom Rini <trini@konsulko.com>
9 years agodm: usb: Refactor EHCI init
Simon Glass [Wed, 25 Mar 2015 18:22:26 +0000 (12:22 -0600)]
dm: usb: Refactor EHCI init

Move the bulk of the code in usb_lowlevel_init() into a separate function
which will also be used by driver model. Keep the CONFIG options out of
this function by providing a tweak flag for Faraday. We need to avoid using
CONFIG options in driver model code where possible, since it makes it
impossible to use multiple controllers in that code where they have
different options.

The CONFIG_EHCI_HCD_INIT_AFTER_RESET option is also kept out of the
common init function. With driver model the controller will be able to
perform this extra init itself after registering with the EHCI layer.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: ehci: Use a function to find the controller from struct udevice
Simon Glass [Wed, 25 Mar 2015 18:22:25 +0000 (12:22 -0600)]
dm: usb: ehci: Use a function to find the controller from struct udevice

With driver model we want to remove the controller pointer in struct udevice
and use driver model data structures instead. To prepare for this, move
access to this field to a function which can provide a different
implementation for driver model.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Pass EHCI controller pointer to ehci_get_portsc_register()
Simon Glass [Wed, 25 Mar 2015 18:22:24 +0000 (12:22 -0600)]
dm: usb: Pass EHCI controller pointer to ehci_get_portsc_register()

Adjust this function so that it is passed an EHCI controller pointer so that
implementations can look up their controller. This makes the weak functions
use a consistent API.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Pass EHCI controller pointer to ehci_set_usbmode()
Simon Glass [Wed, 25 Mar 2015 18:22:23 +0000 (12:22 -0600)]
dm: usb: Pass EHCI controller pointer to ehci_set_usbmode()

Adjust this function so that it is passed an EHCI controller pointer so that
implementations can look up their controller. This makes the weak functions
use a consistent API.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: tegra: Drop use of global controller variable
Simon Glass [Wed, 25 Mar 2015 18:22:22 +0000 (12:22 -0600)]
dm: usb: tegra: Drop use of global controller variable

We don't need this anymore, so adjust the code to avoid using it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Pass EHCI controller pointer to ehci_powerup_fixup()
Simon Glass [Wed, 25 Mar 2015 18:22:21 +0000 (12:22 -0600)]
dm: usb: Pass EHCI controller pointer to ehci_powerup_fixup()

Adjust this function so that it is passed an EHCI controller pointer so that
implementations can look up their controller.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: tegra: Store the controller type explicitly
Simon Glass [Wed, 25 Mar 2015 18:22:20 +0000 (12:22 -0600)]
dm: usb: tegra: Store the controller type explicitly

At present the tegra driver uses a separate pointer to know which controller
type is in use. This works because only one controller type is used at a
time.

With driver model we want to make the controller state hermetic in the sense
that it is not necessary to look elsewhere to know the controller type. This
will permit a controller to implement the EHCI weak functions without
reference to global data structures.

To achieve this, define an enum for the controller type and store it with
the information on each EHCI controller.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Allow ECHI to hold private data for the controller
Simon Glass [Wed, 25 Mar 2015 18:22:19 +0000 (12:22 -0600)]
dm: usb: Allow ECHI to hold private data for the controller

Add a private data pointer that clients of EHCI can use to access their
private information. This establishes a link between struct ehci_ctrl and
its associated controller data structure.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Pass EHCI controller pointer to ehci_get_port_speed()
Simon Glass [Wed, 25 Mar 2015 18:22:18 +0000 (12:22 -0600)]
dm: usb: Pass EHCI controller pointer to ehci_get_port_speed()

Adjust this function so that it is passed an EHCI controller pointer so that
implementations can look up their controller.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Move all the EHCI weak functions together and declare them
Simon Glass [Wed, 25 Mar 2015 18:22:17 +0000 (12:22 -0600)]
dm: usb: Move all the EHCI weak functions together and declare them

Put these at the top of the file so they are in one place. Also add function
prototypes to the header file to avoid call site mismatches.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Convert usb_storage to driver model
Simon Glass [Wed, 25 Mar 2015 18:22:16 +0000 (12:22 -0600)]
dm: usb: Convert usb_storage to driver model

Add support for scanning USB storage devices with driver model. This mostly
involves adding a USB device ID for storage devices.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Move storage device scanning into its own function
Simon Glass [Wed, 25 Mar 2015 18:22:15 +0000 (12:22 -0600)]
dm: usb: Move storage device scanning into its own function

The usb_stor_scan() function is quite long, so split out the code that scans
each device into its own function. Also, rather than setting up the block
device list once at the start, set it up as each device is scanned. This
makes it possible to use this code from driver model.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agoRevert "usb_storage : scan all interfaces to find a storage device"
Simon Glass [Thu, 16 Apr 2015 23:27:34 +0000 (17:27 -0600)]
Revert "usb_storage : scan all interfaces to find a storage device"

This reverts commit cd749658d5994978579628a6333e5c2a6c8ec632.

The conflicts with this commit are hard for me to figure out. I will re-apply
it later.

9 years agodm: usb: Adjust usb_storage to work with sandbox
Simon Glass [Wed, 25 Mar 2015 18:22:14 +0000 (12:22 -0600)]
dm: usb: Adjust usb_storage to work with sandbox

With a few tweaks we can compile this code with sandbox and enable testing
of the USB storage layer.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Simply device finding code in usb_storage
Simon Glass [Wed, 25 Mar 2015 18:22:13 +0000 (12:22 -0600)]
dm: usb: Simply device finding code in usb_storage

The for() loop is not needed since the value is immediately accessible.
Use this instead to simplify the code.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Fix type problems in usb_stor_get_info()
Simon Glass [Wed, 25 Mar 2015 18:22:12 +0000 (12:22 -0600)]
dm: usb: Fix type problems in usb_stor_get_info()

This function assumes that unsigned long is 32-bits wide, but it is not
on 64-bit machines. Use the correct type, and add a few debug() lines also.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Move USB storage definitions to usb_defs.h
Simon Glass [Wed, 25 Mar 2015 18:22:11 +0000 (12:22 -0600)]
dm: usb: Move USB storage definitions to usb_defs.h

These are better off in a header file so they can be used by other code (e.g.
the sandbox USB storage emulator).

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
9 years agodm: usb: Add driver model support for hubs
Simon Glass [Wed, 25 Mar 2015 18:22:10 +0000 (12:22 -0600)]
dm: usb: Add driver model support for hubs

Adjust the existing hub code to support driver model, and add a USB driver
for hubs.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>