oweals/u-boot.git
4 years agodrivers: net: fsl_enetc: use the new MDIO DM helper functions
Alex Marginean [Mon, 25 Nov 2019 15:15:13 +0000 (17:15 +0200)]
drivers: net: fsl_enetc: use the new MDIO DM helper functions

Uses the new dm_eth_phy_connect helper to connect to the PHY to simplify
the code.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: mdio-uclass: add dm_eth_phy_connect helper function
Alex Marginean [Mon, 25 Nov 2019 15:15:12 +0000 (17:15 +0200)]
net: mdio-uclass: add dm_eth_phy_connect helper function

The function connects an ethernet device to a PHY using DT information.
This API is only available for eth devices with an associated device tree
node.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: mdio-uclass: rename arguments of dm_mdio_phy_connect for clarity
Alex Marginean [Mon, 25 Nov 2019 15:15:11 +0000 (17:15 +0200)]
net: mdio-uclass: rename arguments of dm_mdio_phy_connect for clarity

Renamed dm_mdio_phy_connect arguments dev to mdiodev and addr to phyaddr
for a bit more clarity and consistency with the following patches.
Also use NULL instead of 0 on error return path.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: tftp: Fix too small block size
Andre Przywara [Sat, 23 Nov 2019 17:58:59 +0000 (17:58 +0000)]
net: tftp: Fix too small block size

Commit b618b3707633 ("net: Convert CONFIG_TFTP_BLOCKSIZE to Kconfig")
accidentally set the default *option* TFTP block size to 512 bytes, even
though the comment in the code says that this is a terrible choice. Most
boards didn't define the symbol before, so they got the default block size
of 1468 bytes before, but now use 512 bytes, which is also the fallback.
This leads to both abysmal performance and a lot of hashes printed
on the screen (one character for every 5K), which is both annoying and
slow over serial links.

Set the default block size in Kconfig back to the value it had before.

This improves TFTP performance from 2.8 MB/s to 6.9 MB/s on a Pine64.

Fixes: b618b3707633 ("net: Convert CONFIG_TFTP_BLOCKSIZE to Kconfig")
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodrivers: net: fsl_enetc: use XFI, USXGMII interface type macros
Alex Marginean [Thu, 14 Nov 2019 16:28:38 +0000 (18:28 +0200)]
drivers: net: fsl_enetc: use XFI, USXGMII interface type macros

Apply 10G PCS init for USXGMII, XFI interface types.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodoc: bindings: Aquantia PHY node binding
Alex Marginean [Thu, 14 Nov 2019 16:28:37 +0000 (18:28 +0200)]
doc: bindings: Aquantia PHY node binding

A couple of optional properties have been introduced for Aquantia PHY
allowing the driver to set up wiring related configuration points that
are otherwise driven by firmware.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodoc: bindings: add bindings document for PHY nodes
Alex Marginean [Thu, 14 Nov 2019 16:28:36 +0000 (18:28 +0200)]
doc: bindings: add bindings document for PHY nodes

It defines that PHY nodes must be children on MDIO bus nodes and defines
the only required property in U-Boot, reg.  This property along with the
example provided are copied over from Linux.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodrivers: net: aquantia: check system interface too when checking for link up
Alex Marginean [Thu, 14 Nov 2019 16:28:35 +0000 (18:28 +0200)]
drivers: net: aquantia: check system interface too when checking for link up

In some cases the link on the system interface of the aquantia PHY comes up
after the link on line interface.  The link state loop only checks the line
side, which may result in first packet sent being lost.
Use aquantia_link_is_up instead, which checks both system and line side on
gen 2/3 PHYs to avoid losing the 1st packet.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodrivers: net: aquantia: set SMBus addr based on DT property
Alex Marginean [Thu, 14 Nov 2019 16:28:34 +0000 (18:28 +0200)]
drivers: net: aquantia: set SMBus addr based on DT property

Aquantia PHYs have a SMBus interface mostly used for debug.  The addresses
on this interface are normally set up by PHY firmware, but depending on the
board they may end up not being unique.  Add an optional DT property used
to change SMBus address if needed.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodrivers: net: aquantia: set MDI reversal based on DT property
Alex Marginean [Thu, 14 Nov 2019 16:28:33 +0000 (18:28 +0200)]
drivers: net: aquantia: set MDI reversal based on DT property

MDI pins up to the RJ45 connector may be reversed on the board and the
default PHY configuration applied by firmware may or may not match that.
Add an optional DT property to configure MDI reversal for this case.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodrivers: net: aquantia: set up SI protocol based on interface type
Alex Marginean [Thu, 14 Nov 2019 16:28:32 +0000 (18:28 +0200)]
drivers: net: aquantia: set up SI protocol based on interface type

If PHY is not ready for data by the time _config is called, reconfigure the
PHY system interface to use the proper protocol based on phydev->interface,
just in case the defaults set by PHY firmware don't match current
configuration.

Signed-off-by: Florin Laurentiu Chiculita <florinlaurentiu.chiculita@nxp.com>
Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodrivers: net: aquantia: add PHY generation information
Alex Marginean [Thu, 14 Nov 2019 16:28:31 +0000 (18:28 +0200)]
drivers: net: aquantia: add PHY generation information

Uses the data field in phy_driver structure to identify the PHY generation.
This is useful for custom configuration as non-generic PHY registers are
not 100% compatible between generations.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodrivers: net: aquantia: use XFI, USXGMII interface types
Alex Marginean [Thu, 14 Nov 2019 16:28:30 +0000 (18:28 +0200)]
drivers: net: aquantia: use XFI, USXGMII interface types

The PHY supports XFI and USXGMII, the notable difference being that USX AN
is enabled for USXGMII.  Legacy code uses XGMII for any 10G proto and
detects whether USX AN should be enabled or not using a PHY status
register.  Keep that functionality too, so we don't break existing drivers.

Signed-off-by: Razvan Ionut Cirjan <razvanionut.cirjan@nxp.com>
Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agoinclude: phy: add data field for private driver data
Alex Marginean [Thu, 14 Nov 2019 16:28:29 +0000 (18:28 +0200)]
include: phy: add data field for private driver data

This is useful to carry custom information between the driver structure
associated with a specific HW and the driver code.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agoinclude: phy: define XFI and USXGMII interface types
Alex Marginean [Thu, 14 Nov 2019 16:28:28 +0000 (18:28 +0200)]
include: phy: define XFI and USXGMII interface types

Drivers currently use XGMII for XFI and USXGMII and, where needed, use
other information to identify the actual protocol on the board.  With these
two defined drivers can now rely on DT phy-mode property.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: fix switch vendor name
Anatolij Gustschin [Sat, 26 Oct 2019 23:14:41 +0000 (01:14 +0200)]
net: phy: fix switch vendor name

Fix vendor name in MV88E61xx option description.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Reviewed-by: Chris Packham <judge.packham@gmail.com>
Tested-by: Chris Packham <judge.packham@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: mv88e61xx: register phy_driver struct for 88E6071
Anatolij Gustschin [Sat, 26 Oct 2019 23:14:40 +0000 (01:14 +0200)]
net: phy: mv88e61xx: register phy_driver struct for 88E6071

Support probing and init for 88E6071 switch.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Reviewed-by: Chris Packham <judge.packham@gmail.com>
Tested-by: Chris Packham <judge.packham@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: mv88E61xx: fix ENERGY_DET init for mv88E6071
Anatolij Gustschin [Sat, 26 Oct 2019 23:14:39 +0000 (01:14 +0200)]
net: phy: mv88E61xx: fix ENERGY_DET init for mv88E6071

On mv88E6071 the 'EDet' field offset, width and sense control
bits are different, adjust the driver to init the PHY control
register as needed. This fixes not working link detection and
tftp transfers.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Reviewed-by: Chris Packham <judge.packham@gmail.com>
Tested-by: Chris Packham <judge.packham@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: mv88e61xx: add CPU port parameter init for 88E6071
Anatolij Gustschin [Sat, 26 Oct 2019 23:14:38 +0000 (01:14 +0200)]
net: phy: mv88e61xx: add CPU port parameter init for 88E6071

On 88E6071 chip the port status register bit field offsets
for duplex and link bits differ. Extend the driver to use
88E6071 specific offset values. The width of bit fields for
speed status differ, too. Adapt for proper port speed
detection on 88E6071.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Reviewed-by: Chris Packham <judge.packham@gmail.com>
Tested-by: Chris Packham <judge.packham@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: mv88e61xx: rework to enable detection of 88E6071 devices
Anatolij Gustschin [Sat, 26 Oct 2019 23:14:37 +0000 (01:14 +0200)]
net: phy: mv88e61xx: rework to enable detection of 88E6071 devices

Extend the driver to init switch register offsets from variables
instead of compile time macros and enable detection of 88E6071 and
compatible devices. Ethernet transfer (e.g. tftp) does not work yet,
so enable the registration of the 'indirect mii' bus for easier PHY
register access by 'mii' command.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: micrel: make sure the factory test bit is cleared
Nicolas Ferre [Wed, 23 Oct 2019 10:46:44 +0000 (10:46 +0000)]
net: phy: micrel: make sure the factory test bit is cleared

The KSZ8081 PHY has a factory test mode which is set at the de-assertion
of the reset line based on the RXER (KSZ8081RNA/RND) or TXC
(KSZ8081MNX/RNB) pin. If a pull-down is missing, or if the pin has a
pull-up, the factory test mode should be cleared by manually writing a 0
(according to the datasheet).
Create another ksz8081_config function to handle this case.

Suggested-by: Antoine Tenart <antoine.tenart@bootlin.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: eth-uclass: ignore unavailable devices
Michael Walle [Mon, 21 Oct 2019 23:03:10 +0000 (01:03 +0200)]
net: eth-uclass: ignore unavailable devices

device_probe() may fail in which case the seq_id will be -1. Don't
display these devices during startup. While this is only a cosmetic
change, the return value of eth_initialize() will also change to the
actual number of available devices. The return value is only used in
spl_net to decide whether there are any devices to boot from. So
returning only available devices is also more correct in that case.

Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: aquantia: wait for phy init sequence to finish
Florin Chiculita [Mon, 14 Oct 2019 14:27:07 +0000 (17:27 +0300)]
net: phy: aquantia: wait for phy init sequence to finish

Aquantia quad-phys may take longer to initialize. This commit adds
a polling mechanism for a global alarm bit that tells if phy init
sequence is completed.

Signed-off-by: Florin Chiculita <florinlaurentiu.chiculita@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: macb: let miiphy_read/_write pass arbitrary addresses
Josef Holzmayr [Wed, 2 Oct 2019 19:22:52 +0000 (21:22 +0200)]
net: macb: let miiphy_read/_write pass arbitrary addresses

This allows passing arbitrary addresses through macb_miiphy_read and
macb_miiphy_write, therefore enabling the mii command to access
all mdio bus devices instead of only the defined phy.

Signed-off-by: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: macb: explicitly pass phy_adr to mdio read and write
Josef Holzmayr [Wed, 2 Oct 2019 19:22:51 +0000 (21:22 +0200)]
net: macb: explicitly pass phy_adr to mdio read and write

To support accessing arbitrary addresses the mii/mdio bus it is
necessary that the macb_mdio_read and macb_mdio_write functions
do not implicitly use the address of the connected phy.

The function signature is extended according to the Linux kernel
equivalent.

Signed-off-by: Josef Holzmayr <holzmayr@rsi-elektrotechnik.de>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: Increase link up delay in genphy_update_link()
Stefan Roese [Mon, 30 Sep 2019 08:26:42 +0000 (10:26 +0200)]
net: phy: Increase link up delay in genphy_update_link()

I've noticed that in most cases when genphy_update_link() is called, the
ethernet driver (mt7628-eth in this case) fails with the first ethernet
packets. Resulting in a timeout of the first tftp command. Increasing
the delay in the link check look from 1 to 50 ms and moving it below the
BMSR register read fixes this issue, resulting in a stable ethernet
traffic, even after initial link autonogotiation.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Weijie Gao <weijie.gao@mediatek.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agocmd: mdio/mii: add Kconfig help and allow break dependency
Ramon Fried [Fri, 13 Sep 2019 15:25:03 +0000 (18:25 +0300)]
cmd: mdio/mii: add Kconfig help and allow break dependency

* Add Kconfig help describing the purpose of each command.
* Add CONFIG_CMD_MDIO so it could be selected individually, as
  it doesn't depend on the mii command.
* Add Kconfig imply to mii to automatically select the mdio
  command.

Signed-off-by: Ramon Fried <rfried.dev@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: rtl8169: Support RTL-8168c/8111c
Thierry Reding [Wed, 11 Sep 2019 17:19:06 +0000 (19:19 +0200)]
net: rtl8169: Support RTL-8168c/8111c

This version of the RTL-8168 chip can be found on some add-in cards sold
by CSL-Computer GmbH & Co. KG. The chip isn't special in any way, but it
needs to have the ChipCmd register programmed after the DMA descriptors
have been set up, so make sure that happens by adding an entry to the
chip information table.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: mvpp2: MVPP2 now needs MVMDIO
Nevo Hed [Thu, 15 Aug 2019 22:08:45 +0000 (18:08 -0400)]
net: mvpp2: MVPP2 now needs MVMDIO

Changes to mvpp2.c require the MVMDIO module which in turn uses
DM_MDIO.

Signed-off-by: Nevo Hed <nhed+github@starry.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: mvpp2: use new MVMDIO driver
Nevo Hed [Thu, 15 Aug 2019 22:08:44 +0000 (18:08 -0400)]
net: mvpp2: use new MVMDIO driver

This commit ports mvpp2 to use the recently introduced Marvell MDIO
(MVMDIO) driver.  It removes direct interaction with the SMI & XSMI
busses.  This commit is based in part on earlier work by
Ken Ma <make@marvell.com> in Marvell's own downstream repo:
https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/commit/c81dc39.

The above refrenced work was based on an MVMDIO implementation that
never made it into U-Boot.  With this patch the mvpp2 driver switches
to use the new MVMDIO driver that is based on a more universal
mdio-uclass implementation.

Signed-off-by: Nevo Hed <nhed+github@starry.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agoarm: dts: armada-cp110-*dtsi: add xmdio nodes
Nevo Hed [Thu, 15 Aug 2019 22:08:43 +0000 (18:08 -0400)]
arm: dts: armada-cp110-*dtsi: add xmdio nodes

Based on upstream-linux
See https://github.com/torvalds/linux/commit/f66b2aff.

However made the XSMI register window 0x16 (22) bytes per my reading
of the functional spec.  Similar commits in Marvels own repo bump it
to 0x200 (512) bytes but I did not see the reasoning for that.

https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/commit/4d932b4.

Also added device-name attributes to prevent ambiguity in the `mdio`
command.

Signed-off-by: Nevo Hed <nhed+github@starry.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: mvpp2: mark phy as invalid in case of missing appropriate driver
Grzegorz Jaszczyk [Thu, 15 Aug 2019 22:08:42 +0000 (18:08 -0400)]
net: mvpp2: mark phy as invalid in case of missing appropriate driver

If the phy doesn't match with any existing u-boot drivers, the phy
framework will connect it to the generic one which uid ==
0xffffffff. In this case, act as if the phy wouldn't be declared in
dts. Otherwise, in case of 3310 (for which the driver doesn't exist)
the link is marked as always down. Removing phy entry from dts in case
of 3310 is not a good option because it is required for the
phy_fw_down procedure.

This patch fixes the issue with the link always down on MCBIN board.

nhed: added NULL deref test.

Signed-off-by: Grzegorz Jaszczyk <jaz@semihalf.com>
Reviewed-by: Igal Liberman <igall@marvell.com>
Tested-by: Igal Liberman <igall@marvell.com>
Signed-off-by: Nevo Hed <nhed+github@starry.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: mvpp2x: fix traffic stuck after PHY start error
Stefan Chulski [Thu, 15 Aug 2019 22:08:41 +0000 (18:08 -0400)]
net: mvpp2x: fix traffic stuck after PHY start error

Issue:
- Network stuck if autonegotion fails.

Issue root cause:

- When autonegotiation fails during port open procedure, the packet
  processor configuration does not finish and open procedure exits
  with error.
- However, this doesn't prevent u-boot network framework from
  calling send and receive procedures.
- Using transmit and receive functions of misconfigured packet
  processor will cause traffic to get stuck.

Fix:

- Continue packet processor configuration even if autonegotiation
  fails.  Only error message is triggered in this case.
- Exit transmit and receive functions if there is no PHY link
  indication.
- U-boot network framework now calls open procedure again during next
  transmit initiation.

Signed-off-by: Stefan Chulski <stefanc@marvell.com>
Reviewed-by: Igal Liberman <igall@marvell.com>
Tested-by: Igal Liberman <igall@marvell.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agoarm: dts: k3-am654-base-board-u-boot: change cpsw2g interface mode to rgmii-rxid
Grygorii Strashko [Mon, 18 Nov 2019 21:04:47 +0000 (23:04 +0200)]
arm: dts: k3-am654-base-board-u-boot: change cpsw2g interface mode to rgmii-rxid

The AM654 SoC doesn't allow to disabling RGMII TX internal delay in CPSW2G
MAC. Hence, change CPSW2G interface mode to "rgmii-rxid" - RGMII with
internal RX delay provided by the PHY, the MAC will add an TX delay in this
case.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: dp83867: refactor rgmii configuration
Grygorii Strashko [Mon, 18 Nov 2019 21:04:46 +0000 (23:04 +0200)]
net: phy: dp83867: refactor rgmii configuration

Refactor SGMII configuration to group all settings together and reduce
number of MDIO transactions.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: dp83867: io impedance is not dependent on RGMII delay
Grygorii Strashko [Mon, 18 Nov 2019 21:04:45 +0000 (23:04 +0200)]
net: phy: dp83867: io impedance is not dependent on RGMII delay

Based on commit 27708eb5481b ("net: phy: dp83867: IO impedance is not
dependent on RGMII delay") of mainline linux kernel.

The driver would only set the IO impedance value when RGMII internal delays
were enabled.  There is no reason for this.  Move the IO impedance block
out of the RGMII delay block.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: dp83867: rework delay rgmii delay handling
Grygorii Strashko [Mon, 18 Nov 2019 21:04:44 +0000 (23:04 +0200)]
net: phy: dp83867: rework delay rgmii delay handling

Based on commit c11669a2757e ("net: phy: dp83867: Rework delay rgmii delay
handling") of mainline linux kernel.

The current code is assuming the reset default of the delay control
register was to have delay disabled.  This is what the datasheet shows as
the register's initial value.  However, that's not actually true: the
default is controlled by the PHY's pin strapping.

This patch:
- insures the other direction's delay is disabled If the interface mode is
selected as RX or TX delay only
- validates the delay values and fail if they are not in range
- checks if the board is strapped to have a delay and is configured to use
"rgmii" mode and warning is generated that "rgmii-id" should have been
used.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: dp83867: Add ability to disable output clock
Grygorii Strashko [Mon, 18 Nov 2019 21:04:43 +0000 (23:04 +0200)]
net: phy: dp83867: Add ability to disable output clock

Based on commit 13c83cf8af0d ("net: phy: dp83867: Add ability to disable
output clock") of mainline linux kernel.

Generally, the output clock pin is only used for testing and only serves as
a source of RF noise after this.  It could be used to daisy-chain PHYs, but
this is uncommon.  Since the PHY can disable the output, make doing so an
option.  I do this by adding another enumeration to the allowed values of
ti,clk-output-sel.

The code was not using the value DP83867_CLK_O_SEL_REF_CLK as one might
expect: to select the REF_CLK as the output.  Rather it meant "keep clock
output setting as is", which, depending on PHY strapping, might not be
outputting REF_CLK.

Change this so DP83867_CLK_O_SEL_REF_CLK means enable REF_CLK output.
Omitting the property will leave the setting as is (which was the previous
behavior in this case).

Out of range values were silently converted into DP83867_CLK_O_SEL_REF_CLK.
Change this so they generate an error.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agodt-bindings: phy: dp83867: Add documentation for disabling clock output
Grygorii Strashko [Mon, 18 Nov 2019 21:04:42 +0000 (23:04 +0200)]
dt-bindings: phy: dp83867: Add documentation for disabling clock output

Based on commit 980066e6d964 ("dt-bindings: phy: dp83867: Add documentation
for disabling clock output") of mainline linux kernel.

The clock output is generally only used for testing and development and not
used to daisy-chain PHYs.  It's just a source of RF noise afterward.

Add a mux value for "off".  I've added it as another enumeration to the
output property.  In the actual PHY, the mux and the output enable are
independently controllable.  However, it doesn't seem useful to be able
to describe the mux setting when the output is disabled.

Document that PHY's default setting will be left as is if the property
is omitted.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: dp83867: move static initialization to .probe()
Grygorii Strashko [Mon, 18 Nov 2019 21:04:41 +0000 (23:04 +0200)]
net: phy: dp83867: move static initialization to .probe()

Move static, one-time initialization to .probe() callback.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: phy: ti: rename ti.c to dp83867.c
Grygorii Strashko [Mon, 18 Nov 2019 21:04:40 +0000 (23:04 +0200)]
net: phy: ti: rename ti.c to dp83867.c

The driver ti.c is actually driver for TI DP83867x PHYs, so rename it
accordingly.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: tftp: Fix tftp store address check in store_block()
Bin Meng [Sat, 16 Nov 2019 06:20:13 +0000 (22:20 -0800)]
net: tftp: Fix tftp store address check in store_block()

During testing of qemu-riscv32 with a 2GiB memory configuration,
tftp always fails with a error message:

  Load address: 0x84000000
  Loading: #
  TFTP error: trying to overwrite reserved memory...

It turns out the result of 'tftp_load_addr + tftp_load_size' just
overflows (0x100000000) and the test logic in store_block() fails.
Fix this by adjusting the end address to ULONG_MAX when overflow
is detected.

Fixes: a156c47e39ad ("tftp: prevent overwriting reserved memory")
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: avoid address-of-packed-member error
Heinrich Schuchardt [Tue, 5 Nov 2019 11:48:19 +0000 (12:48 +0100)]
net: avoid address-of-packed-member error

sandbox_defconfig does not compile using GCC 9.2.1:

net/net.c: In function â€˜net_process_received_packet’:
net/net.c:1288:23: error: taking address of packed member of â€˜struct
ip_udp_hdr’ may result in an unaligned pointer value
[-Werror=address-of-packed-member]
 1288 |    sumptr = (ushort *)&(ip->udp_src);
      |                       ^~~~~~~~~~~~~~

Avoid the error by using a u8 pointer instead of an u16 pointer and
in-lining ntohs().

Simplify the checksumming of the last message byte.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet/phy: Fix phy_connect() for phy addr 0
Priyanka Jain [Tue, 5 Nov 2019 04:05:11 +0000 (04:05 +0000)]
net/phy: Fix phy_connect() for phy addr 0

Fix 'mask' calculation in phy_connect() for phy addr '0'.
'mask' is getting set to '0xffffffff' for phy addr '0'
in phy_connect() whereas expected value is '0'.

Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
Reported-by: tetsu-aoki via github
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: nfs: Only link in NFS code outside of SPL builds
Tom Rini [Fri, 6 Dec 2019 00:35:07 +0000 (19:35 -0500)]
net: nfs: Only link in NFS code outside of SPL builds

While we have networking use cases within SPL we do not support loading
files via NFS at this point in time.  Disable calling nfs_start() so
that the NFS related code can be garbage collected at link time.

Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agolib: Always build support for formatting MAC and IP address
Joe Hershberger [Tue, 24 Sep 2019 16:41:23 +0000 (11:41 -0500)]
lib: Always build support for formatting MAC and IP address

Even if not communicating over the network in U-Boot, code may be manipulating
and storing IP or MAC addresses to pass to Linux, etc.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: Improve documentation for string_to_ip()
Joe Hershberger [Sat, 14 Sep 2019 00:29:41 +0000 (19:29 -0500)]
net: Improve documentation for string_to_ip()

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
4 years agonet: Always build the string_to_enetaddr() helper
Joe Hershberger [Sat, 14 Sep 2019 00:21:16 +0000 (19:21 -0500)]
net: Always build the string_to_enetaddr() helper

Part of the env cleanup moved this out of the environment code and into
the net code. However, this helper is sometimes needed even when the net
stack isn't included.

Move the helper to lib/net_utils.c like it's similarly-purposed
string_to_ip(). Also rename the moved function to similar naming.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reported-by: Ondrej Jirman <megous@megous.com>
4 years agoMerge https://gitlab.denx.de/u-boot/custodians/u-boot-x86
Tom Rini [Sun, 8 Dec 2019 15:51:00 +0000 (10:51 -0500)]
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-x86

- 16-bit start up codes clean up

4 years agox86: simplify ljmp to 32-bit code
Masahiro Yamada [Tue, 3 Dec 2019 05:28:58 +0000 (14:28 +0900)]
x86: simplify ljmp to 32-bit code

You can directly specify the label as the operand for ljmp.

This commit saves 4-byte code.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
[bmeng: fixed the gas warning]
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
4 years agox86: use data32 directive instead of macro for operand-size prefix
Masahiro Yamada [Tue, 3 Dec 2019 05:20:49 +0000 (14:20 +0900)]
x86: use data32 directive instead of macro for operand-size prefix

This file defines 'a32' and 'o32' macros to avoid magic numbers
of operand/address-size prefixing.

GAS supports 'data32' and 'addr32' for that purpose.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
4 years agoMerge branch '2019-12-06-master-imports'
Tom Rini [Fri, 6 Dec 2019 21:45:46 +0000 (16:45 -0500)]
Merge branch '2019-12-06-master-imports'

- Allow for the sysboot command, which is used to parse extlinux.conf
  files to be used without PXE support.  There is no functional change
  here aside from fixing distro boot in a few cases where we actually
  lacked the ability to parse the extlinux.conf file
- Add the x509/pkcs7 parsers from Linux, a pre-requisite to EFI Secure
  Boot support.

4 years agoMakefile: Ensure tools directory exists in output prior to use
Tom Rini [Wed, 4 Dec 2019 23:54:30 +0000 (18:54 -0500)]
Makefile: Ensure tools directory exists in output prior to use

With the change to make tools/version.h a file we need to make sure that
the output directory exists first otherwise we will get a build failure.

Reported-by: Peter Robinson <pbrobinson@gmail.com>
Tested-by: Peter Robinson <pbrobinson@gmail.com>
Fixes: 4d90f6cd9813 ("tools: Avoid creating symbolic links for tools/version.h")
Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 years agotest: add asn1 unit test
AKASHI Takahiro [Wed, 13 Nov 2019 00:45:02 +0000 (09:45 +0900)]
test: add asn1 unit test

This test will exercise asn1 compiler as well as asn1 decoder functions
via various parsers.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolib: crypto: add pkcs7 message parser
AKASHI Takahiro [Wed, 13 Nov 2019 00:45:01 +0000 (09:45 +0900)]
lib: crypto: add pkcs7 message parser

Imported from linux kernel v5.3:
 pkcs7.asn1 without changes
 pkcs7.h with changes marked as __UBOOT__
 pkcs7_parser.h without changes
 pkcs7_parser.c with changes marked as __UBOOT__

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolib: crypto: add x509 parser
AKASHI Takahiro [Wed, 13 Nov 2019 00:45:00 +0000 (09:45 +0900)]
lib: crypto: add x509 parser

Imported from linux kernel v5.3:
 x509.asn1 without changes
 x509_akid.asn1 without changes
 x509_parser.h without changes
 x509_cert_parser.c with changes marked as __UBOOT__
 x509_public_key.c with changes marked as __UBOOT__

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolib: crypto: add rsa public key parser
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:59 +0000 (09:44 +0900)]
lib: crypto: add rsa public key parser

Imported from linux kernel v5.3:
rsapubkey.asn1 without changes
rsa.h without changes
rsa_helper.c with changes marked as __UBOOT__

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolib: crypto: add public key utility
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:58 +0000 (09:44 +0900)]
lib: crypto: add public key utility

Imported from linux kernel v5.3:
 asymmetric-type.h with changes marked as __UBOOT__
 asymmetric_type.c with changes marked as __UBOOT__
 public_key.h with changes marked as __UBOOT__
 public_key.c with changes marked as __UBOOT__

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolib: add oid registry utility
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:57 +0000 (09:44 +0900)]
lib: add oid registry utility

Imported from linux kernel v5.3:
 build_OID_registry without changes
 oid_registry.h without changes
 oid_registry.c with changes marked as __UBOOT__

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agodoc: add README for asn1 compiler and decoder
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:56 +0000 (09:44 +0900)]
doc: add README for asn1 compiler and decoder

This document gives a brief description about ASN1 compiler as well as
ASN1 decoder.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolib: add asn1 decoder
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:55 +0000 (09:44 +0900)]
lib: add asn1 decoder

Imported from linux kernel v5.3:
 lib/asn1_decoder.c with changes marked as __UBOOT__

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agoMakefile: add build script for asn1 parsers
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:54 +0000 (09:44 +0900)]
Makefile: add build script for asn1 parsers

This rule will be used to build x509 and pkcs7 parsers.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agocmd: add asn1_compiler
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:53 +0000 (09:44 +0900)]
cmd: add asn1_compiler

Imported from linux kernel v5.3:
 asn1.h without changes
 asn1_ber_bytecode.h without changes
 asn1_decoder.h without changes
 asn1_compiler.c without changes

This host command will be used to create a ASN1 parser, for example,
for pkcs7 messages or x509 certificates. More specifically, it will
generate *byte code* which will be interpreted by asn1 decoder library.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 years agolinux/time.h: include vsprintf.h
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:52 +0000 (09:44 +0900)]
linux/time.h: include vsprintf.h

Without this commit, time.h possibly causes a build error as
asctime_r() uses sprintf().

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agoinclude: kernel.h: include printk.h
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:51 +0000 (09:44 +0900)]
include: kernel.h: include printk.h

Adding "printk.h" will help improve portability from linux kernel
code (in my case, lib/asn1_decoder.c and others) where printf and
pr_* variant functions are used.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolib: add mktime64() for linux compatibility
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:50 +0000 (09:44 +0900)]
lib: add mktime64() for linux compatibility

This function will be used  in lib/crypto/x509_cert_parser.c, which
will also be imported from linux code in a later commit.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agortc: move date.c from drivers/rtc/ to lib/
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:49 +0000 (09:44 +0900)]
rtc: move date.c from drivers/rtc/ to lib/

In the next commit, rtc_mktime(), for compatibility with linux, will be
implemented using rtc_mktime(), which is no longer drivers/rtc specific.
So move this file under lib/.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agortc.h: add struct udevice declaration
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:48 +0000 (09:44 +0900)]
rtc.h: add struct udevice declaration

Without this change, including rtc.h solely will cause a build error.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
4 years agolinux_compat: move kmemdup() from ubifs.c to linux_compat.c
AKASHI Takahiro [Wed, 13 Nov 2019 00:44:47 +0000 (09:44 +0900)]
linux_compat: move kmemdup() from ubifs.c to linux_compat.c

linux_compat.c is the best place for kmemdup(), which is currenly used
only in ubifs.c, but will also be used when other kernel files
(in my case, lib/crypto/x509_cert_parser.c and pkcs7_parser.c) will be
imported. So just move it.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 years agocmd: pxe: Fix checkpatch WARNING/CHECK
Patrice Chotard [Mon, 25 Nov 2019 08:07:41 +0000 (09:07 +0100)]
cmd: pxe: Fix checkpatch WARNING/CHECK

Fix checkpatch WARNING and CHECK issues

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
4 years agocmd: sysboot: Fix checkpatch WARNING/CHECK
Patrice Chotard [Mon, 25 Nov 2019 08:07:40 +0000 (09:07 +0100)]
cmd: sysboot: Fix checkpatch WARNING/CHECK

Fix checkpatch WARNING and CHECK issues

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
4 years agocmd: pxe_utils: Fix checkpatch WARNING/CHECK
Patrice Chotard [Mon, 25 Nov 2019 08:07:39 +0000 (09:07 +0100)]
cmd: pxe_utils: Fix checkpatch WARNING/CHECK

Fix checkpatch WARNING and CHECK issues

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
4 years agocmd: sysboot: Create a sysboot command dedicated file
Patrice Chotard [Mon, 25 Nov 2019 08:07:38 +0000 (09:07 +0100)]
cmd: sysboot: Create a sysboot command dedicated file

Extract all sysboot command related code from pxe.c to new sysboot.c
Update Kconfig to insure that DISTRO_DEFAULT select new CMD_SYSBOOT
command.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
4 years agocmd: Prepare sysboot command independence
Patrice Chotard [Mon, 25 Nov 2019 08:07:37 +0000 (09:07 +0100)]
cmd: Prepare sysboot command independence

As sysboot and pxe commands are sharing piece of code, migrate this
common code into a new file pxe_utils.c to prepare sysboot command
code extraction from pxe.c

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
4 years agocmd: Migrate from_env() from pxe.c to nvedit.c
Patrice Chotard [Mon, 25 Nov 2019 08:07:36 +0000 (09:07 +0100)]
cmd: Migrate from_env() from pxe.c to nvedit.c

Migrate from_env() from pxe.c to nvedit.c as it's not pxe specific.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
4 years agoMerge tag 'u-boot-rockchip-20191206' of https://gitlab.denx.de/u-boot/custodians...
Tom Rini [Fri, 6 Dec 2019 15:35:18 +0000 (10:35 -0500)]
Merge tag 'u-boot-rockchip-20191206' of https://gitlab.denx.de/u-boot/custodians/u-boot-rockchip

- rockchip pwm driver update to support all the SoCs
- RK3308 GMAC and pinctrl support
- More UART interface support on PX30 and pmugrf reg fix
- Fixup on misc for eth_addr/serial#
- Other updates on variant SoCs

4 years agoRevert "spl: fix entry_point equal to load_addr"
Tom Rini [Fri, 6 Dec 2019 14:56:03 +0000 (09:56 -0500)]
Revert "spl: fix entry_point equal to load_addr"

Due to the (seemingly bogus) assumption of a default
CONFIG_SYS_UBOOT_START value we will revert this change for now and
evaluate it again for the next release along with changes to
CONFIG_SYS_UBOOT_START.

This reverts commit d3e97b53c1f2464f4898226de7d89abf242e4aa8.

Signed-off-by: Tom Rini <trini@konsulko.com>
4 years agoMerge branch '2019-12-05-master-imports'
Tom Rini [Thu, 5 Dec 2019 21:37:36 +0000 (16:37 -0500)]
Merge branch '2019-12-05-master-imports'

- Assorted omapl138_lcdk / da850-evm fixes
- FAT fix, add another pytest as well for FAT.
- Assorted general fixes

4 years agorockchip: allow loading larger kernels
Ben Wolsieffer [Tue, 3 Dec 2019 05:40:05 +0000 (00:40 -0500)]
rockchip: allow loading larger kernels

Recent versions of the Linux kernel with many options enabled have
grown large enough to overwrite the beginning of the initrd. For
example, the kernel I use on my Rock64 and RockPro64 is 34.1 MiB,
while only 31.5 MiB are available between kernel_addr_r and
ramdisk_addr_r.

This patch moves ramdisk_addr_r up by 32 MiB on the RK3328 and RK3399,
allowing for much larger kernels.

Signed-off-by: Ben Wolsieffer <benwolsieffer@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: rk3328: rock64: enable CONFIG_MISC_INIT_R
Ben Wolsieffer [Tue, 3 Dec 2019 05:24:31 +0000 (00:24 -0500)]
rockchip: rk3328: rock64: enable CONFIG_MISC_INIT_R

This enables reading of the cpuid and a static MAC address.

Signed-off-by: Ben Wolsieffer <benwolsieffer@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agopinctrl: rockchip: Add pinctrl support for rk3308
David Wu [Tue, 3 Dec 2019 11:26:50 +0000 (19:26 +0800)]
pinctrl: rockchip: Add pinctrl support for rk3308

An iomux register contains 8 pins, each of which is represented
by 2 bits, but the register offset is 0x8.

For example, GRF_GPIO0A_IOMUX offset is 0x0, but GRF_GPIO0B_IOMUX
offset is 0x8, the offset 0x4 is reserved.

So add a type IOMUX_8WIDTH_2BIT to calculate offset.

Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agoarm: rockchip: rk3308: Initialize the iomux configuration
David Wu [Tue, 3 Dec 2019 11:02:50 +0000 (19:02 +0800)]
arm: rockchip: rk3308: Initialize the iomux configuration

When we want to use plus pinctrl feature, we need to enable
them at spl.

Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agopwm: rk_pwm: Make PWM driver to support all Rockchip Socs
David Wu [Tue, 3 Dec 2019 09:49:53 +0000 (17:49 +0800)]
pwm: rk_pwm: Make PWM driver to support all Rockchip Socs

This PWM driver can be used to support pwm functions
for on all Rockchip Socs.

The previous chips than RK3288 did not support polarity,
and register layout was different from the RK3288 PWM.

The RK3288 keep the current functions.

RK3328 and the chips after it, which can support hardware lock,
configure duty, period and polarity at next same period, to
prevent the intermediate temporary state.

Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agodts: rk3308: Enable ethernet function supported for Firefly ROC_RK3308_CC
David Wu [Tue, 26 Nov 2019 01:39:51 +0000 (09:39 +0800)]
dts: rk3308: Enable ethernet function supported for Firefly ROC_RK3308_CC

The Firefly ROC_RK3308_CC use ref_clock of input mode,
and rmii pins of m1 group.

Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agoarm: dts: Add mac node for rk3308 at dtsi level
David Wu [Tue, 26 Nov 2019 01:39:50 +0000 (09:39 +0800)]
arm: dts: Add mac node for rk3308 at dtsi level

The rk3308 only support RMII mode, and if it is output clock
mode, better to use ref_clk pin with drive strength 12ma.

Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agonet: gmac_rockchip: Add support for rk3308
David Wu [Tue, 26 Nov 2019 01:39:49 +0000 (09:39 +0800)]
net: gmac_rockchip: Add support for rk3308

Add the glue code to allow the rk3308 variant of the Rockchip gmac
to provide network functionality.

Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: config: add support for firefly-px30 board
Kever Yang [Mon, 2 Dec 2019 07:58:17 +0000 (15:58 +0800)]
rockchip: config: add support for firefly-px30 board

This is a core board named Core-PX30-JD4 with a mainboard from Firefly,
name it as firefly-px30 for now.
This board can re-use the dts of PX30, the only difference is the UART IO,
the firefly use UART2 M1 while evb use UART2 M0.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: misc: protect serial# from getting overwritten
Heiko Stuebner [Fri, 29 Nov 2019 15:40:43 +0000 (16:40 +0100)]
rockchip: misc: protect serial# from getting overwritten

serial# is one of the vendor properties and thus protected from being
overwritten if already set. If env_set is called anyway this result in
some nasty warnings, so check for presence before trying that.

In the same direction check for the presence of cpuid# and compare it
to the actual hardware and emit a warning if they don't match.

Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: misc: don't fail if eth_addr already set
Heiko Stuebner [Fri, 29 Nov 2019 15:40:42 +0000 (16:40 +0100)]
rockchip: misc: don't fail if eth_addr already set

rockchip_setup_macaddr() runs from an initcall, so returning an error
code will make that initcall fail thus breaking the boot process.

And if an ethernet address is already set this is definitly not a
cause for that, so just return success in that case.

Fixes: 04825384999f ("rockchip: rk3399: derive ethaddr from cpuid");
Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: px30: Add support for using UART3 as debug UART
Paul Kocialkowski [Thu, 28 Nov 2019 14:27:52 +0000 (15:27 +0100)]
rockchip: px30: Add support for using UART3 as debug UART

Some generic PX30 SoMs found in the wild use UART3 as their debug output
instead of UART2 (used for MMC) and UART5.

Make it possible to use UART3 as early debug output, with the associated
clock and pinmux configuration. Two sets of output pins are supported (M0/M1).

Future users should also note that the pinmux default in the dts is to use
the M1 pins while the Kconfig option takes M0 as a default.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Reviewed-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
4 years agorockchip: px30: Rename CONFIG_DEBUG_UART2_CHANNEL to CONFIG_DEBUG_UART_CHANNEL
Paul Kocialkowski [Thu, 28 Nov 2019 14:27:51 +0000 (15:27 +0100)]
rockchip: px30: Rename CONFIG_DEBUG_UART2_CHANNEL to CONFIG_DEBUG_UART_CHANNEL

UART3 also has two sets of pins that can be selected.

Rename the config option to a common name, to allow it to be used for both
UART2 and UART3.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: px30: Fixup PMUGRF registers layout order
Paul Kocialkowski [Thu, 28 Nov 2019 14:27:50 +0000 (15:27 +0100)]
rockchip: px30: Fixup PMUGRF registers layout order

According to the PX30 TRM, the iomux registers come first, before the pull
and strength control registers.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Reviewed-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
4 years agorockchip: evb-px5: disable NET
Andy Yan [Tue, 26 Nov 2019 13:15:40 +0000 (21:15 +0800)]
rockchip: evb-px5: disable NET

PX5 evb has no ETH port, so disable it.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: px5: enable spl-fifo-mode for emmc for px5-evb
Andy Yan [Tue, 26 Nov 2019 13:15:39 +0000 (21:15 +0800)]
rockchip: px5: enable spl-fifo-mode for emmc for px5-evb

We need load some parts of ATF to sram, but rockchip
dwmmc controllers can't do dma to non-ddr addresses
space, so set the mmc controller into fifo mode in spl.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agorockchip: rk3308: enable spl-fifo-mode for emmc
Andy Yan [Tue, 26 Nov 2019 13:15:38 +0000 (21:15 +0800)]
rockchip: rk3308: enable spl-fifo-mode for emmc

We need load some parts of ATF to sram, but rockchip
dwmmc controllers can't do dma to non-ddr addresses
space, so set the mmc controller into fifo mode in spl.

And show my best respect to Heiko's work for this solution.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agodoc: rockchip: Update build instruction for rk3308
Andy Yan [Tue, 26 Nov 2019 13:15:37 +0000 (21:15 +0800)]
doc: rockchip: Update build instruction for rk3308

After commit d8765e2422cd ("Enable building of u-boot.itb
on Rockchip platform"), u-boot.itb will automatically
generated by "make all" command, manually command
"make u-boot.itb" is no longer needed.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
4 years agoARM: omapl138_lcdk: Shrink code size by building with Thumb
Adam Ford [Sun, 10 Nov 2019 12:33:40 +0000 (06:33 -0600)]
ARM: omapl138_lcdk: Shrink code size by building with Thumb

SPL has limited available resources, and the performance between
ARM and Thumb isn't that significant.

This patch builds using Thumb instruction set to reduce the code
size by nearly 6K.

Original:
   text    data     bss     dec     hex filename
  26526    4004    1376   31906    7ca2 spl/u-boot-spl

Thumb:

   text    data     bss     dec     hex filename
  20232    4004    1376   25612    640c spl/u-boot-spl

Signed-off-by: Adam Ford <aford173@gmail.com>
Tested-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
4 years agoFix typo in macros, "FIRMEWARE" -> "FIRMWARE"
Thomas Hebb [Sun, 10 Nov 2019 16:23:15 +0000 (08:23 -0800)]
Fix typo in macros, "FIRMEWARE" -> "FIRMWARE"

Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
4 years agoARM: da850-evm: Disable SYS_MMCSD_RAW_MODE_USE_SECTOR
Adam Ford [Wed, 13 Nov 2019 13:42:00 +0000 (07:42 -0600)]
ARM: da850-evm: Disable SYS_MMCSD_RAW_MODE_USE_SECTOR

The da850-evm doesn't have the boot pins configured in a way
to make MMC/SD booting an option, and MMC/SD support is not
enabled in SPL.  Therefore, there is no need to support raw mode
mmc/sd support in SPL.

This patch disables CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR

Signed-off-by: Adam Ford <aford173@gmail.com>
4 years agospl: fix entry_point equal to load_addr
Giulio Benetti [Mon, 25 Nov 2019 16:18:20 +0000 (17:18 +0100)]
spl: fix entry_point equal to load_addr

At the moment entry_point is set to image_get_load(header) that sets it
to "load address" instead of "entry point", assuming entry_point is
equal to load_addr, but it's not true. Then load_addr is set to
"entry_point - header_size", but this is wrong too since load_addr is
not an entry point.

So use image_get_ep() for entry_point assignment and image_get_load()
for load_addr assignment.

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>