The fec has a mdio bus. This adds support for a subnode
in which the phys on this bus can be specified.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
phys start with features initialized from the phy driver
and are eventually limited by of_set_phy_supported. This
does not work with the genphy driver which starts with
no features and overwrites phydev->supported with the
values read from hardware in config_init. This overwrites
the features adjusted by of_set_phy_supported.
To fix this let the genphy driver start with full features
which are then only limited in config_init, but never
extended.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
the phydev->supported field does not necessarily match the hardware
capabilities, it could be limited by the board to force the phy
to a lower speed. In this case make sure the gigabit advertise bits
are cleared on a gigabit phy.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
barebox can transparently handle phys specified in the devicetree.
Use this functionality in the orion-gbe driver. This requires:
- add a device to the orion-gbe ports. This has the port device_node
attached and is set as the parent of the ethernet device so that
the ethernet code finds the correct device_node
- In the mdio-mvebu driver attach the device_node of the mdio device
to the miibus device so that the phy code finds the correct node
- call phy_device_connect instead of of_phy_device_connect.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Tested-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Some USB ports only have one possiblitly for the phy_type and
the type is not specified in the devicetree in this case.
Rely on the reset default instead of failing.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
I assume I am the only person knowing that barebox is able to
merge devicetrees. This feature seems broken for a while now since
trying to merge devicetress results in:
unflatten: too many end nodes
Remove this feature to save the complexity.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Even when both the ethernet controller and the phy support certain
features a board may have additional limitations. Allow specifying
it in the devicetree.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
We do not care about releasing the resources in the error
path, but at least check the return value of eth_register
and mdiobus_register.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
When the ethernet device has a device_node then try finding
the associated phy via the phy-handle property.
This makes the phy handling via devicetree transparent to the
ethernet drivers.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
When a mdio bus has a device node attached then register the phys
specified there. This makes it possible to lookup the phys using
phandles later.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The phy_map should be valid once a phy_device is registered. This
allows registering phys outside of mdiobus_scan.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
phy_device_connect combines searching for a phy with actually attaching
it to the ethernet device. Factor out a phy_device_attach function to
have a function for each purpose. This makes the logic of phy_device_connect
simpler.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The driver doesn't use interrupts and Linux driver crashes when emac
interrupts are enabled at boot: keep them disabled.
Signed-off-by: Beniamino Galvani <b.galvani@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Avoid unneeded delay when waiting for the completion of a mdio
operation and return as soon as possible.
Signed-off-by: Beniamino Galvani <b.galvani@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The mxs nand driver has a calculation for the ecc strength.
This calculation was not used for some common nands and it
was assumed that 2k page nands always have a ecc strength
of 8. This is not true since there are devices with 224 bytes
of oob instread of 64 bytes. These allow for a greater ecc
strength. Since the kernel relies on the calculation and
we have to be consistent with the kernel use the calculcation
in barebox aswell and just remove our assumptions.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Some users such as fs/nfs.c just save the pointer to the packet in the
handler and process it after net_poll() returns. This break when more than
one packet is received using the same buffer.
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The PMIC is often a dependency for other devices, so make sure
it's initialized early. While at it, merge the spi/i2c registration
into a single initcall and use IS_ENABLED instead of ifdefs.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Some boards have to initialize the PMIC before other devices can
be initialized. This requires three levels of initcalls: one level
in which the PMIC is probed, one in which the board can call mc13xxx_get()
and the third one to initialize the PMIC dependent devices.
Allow to register a callback which is called once the PMIC is initialized.
This way mc13xxx_get() is no longer necessary and the number of required
initcalls levels is reduced to two.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
These are special groups to configure pad properties
such as drive strength and slew rate for a group of
pads.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Needed for SD cards connected to sdmmc1 or sdmmc3
to work properly.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Some peripherals have a double wide divider in front
of them.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Now that we have a proper reset controller, it
isn't necessary anymore to keep the device reset
hack coupled to the clock.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The console devices are the only ones that can't
use the reset controller properly, as they get
registered from platform code. Reset those devices
from the clock controller.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Allows us to drop the hack in the clock controller
and implement proper reset at device level.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Add stripped sown version of the reset controller
framework from the Linux kernel.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Instead of keeping track of the mac_control register value and
only writing to it when it changed just always write it. This is
more safe anyway since the mac_control register content is altered
in the soft_reset functions.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Since the cpsw has two slaves which handle one network interface
each the slave number is interesting during debugging. use the
slave device for dev_dbg.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This makes it possible to directly call dev_dbg and friends
on the slave. Also the ethernet aliases in the devicetree
now match the devices.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The OMAP SPI core allows swapping MISO/MOSI and some boards are
wired up that way, so add a property to swap the lines.
Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
This patch does probably too much, but it's hard (and very
cumbersome/time consuming) to break it out. What is does is this:
* each command has one short description, e.g. "list MUX configuration"
* made sure the short descriptions start lowercase
* each command has one usage. That string contains just the
options, e.g. "[-npn]". It's not part of the long help text.
* that is, it doesn't say "[OPTIONS]" anymore, every usable option
is listed by character in this (short) option string (the long
description is in the long help text, as before)
* help texts have been reworked, to make them
- sometimes smaller
- sometimes describe the options better
- more often present themselves in a nicer format
* all long help texts are now created with BUSYBOX_CMD_HELP_
macros, no more 'static const __maybe_unused char cmd_foobar_help[]'
* made sure the long help texts starts uppercase
* because cmdtp->name and cmdtp->opts together provide the new usage,
all "Usage: foobar" texts have been removed from the long help texts
* BUSYBOX_CMD_HELP_TEXT() provides the trailing newline by itself, this
is nicer in the source code
* BUSYBOX_CMD_HELP_OPT() provides the trailing newline by itself
* made sure no line gets longer than 77 characters
* delibertely renamed cmdtp->usage, so that we can get compile-time
errors (e.g. in out-of-tree modules that use register_command()
* the 'help' command can now always emit the usage, even without
compiled long help texts
* 'help -v' gives a list of commands with their short description, this
is similar like the old "help" command before my patchset
* 'help -a' gives out help of all commands
Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The old output of "help" was just producing a long list, that usually
scrolled of the screen (even on a X11 terminal). This list is more
compact, and also sorted by groups.
The old output format (plus grouping) is now available with 'help -v'.
Example:
Information commands:
?, devinfo, help, iomem, meminfo, version
Boot commands:
boot, bootm, go, loadb, loads, loadx, loady, saves, uimage
...
Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
With CONFIG_PARTITION_NEED_MTD enabled we use mtd rather than devfs
directly to create partitions on mtd devices. Since:
| commit b32cd8df87
| Author: Sascha Hauer <s.hauer@pengutronix.de>
| Date: Wed Apr 9 15:49:32 2014 +0200
|
| mtd: nand: bb: use mtd api directly
|
| The devfs layer just adds an addition indirection between mtd
| and the bb devices with no purpose. Drop it.
|
| Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The bad block aware device creation doesn't work if this option
is disabled. With this we remove CONFIG_PARTITION_NEED_MTD and always
use mtd partitions on mtd devices.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
When a devicenode has invalid pinctrl settings then printing the
offending node helps debugging it.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
RX DMA Head Descriptor Pointer can get 0 when there is a lot of traffic,
which results in a timeout error. A good way to provoke this error is by
sending lots of ARP requests. This patch makes sure that the RX DMA Head
Descriptor Pointer is set.
The origin driver, from which this is derived, already contains this fix.
Signed-off-by: Christoph Fritz <chf.fritz@googlemail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Clock gates having the CLK_GATE_HIWORD_MASK flag set use the upper 16
bits of the register as a "write enable" mask for the value in the
lower 16 bits.
Signed-off-by: Beniamino Galvani <b.galvani@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
To avoid code duplication and make easier to introduce new flags.
Signed-off-by: Beniamino Galvani <b.galvani@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This adds a clk_gate_flags argument to clock gate creation functions
to allow the introduction of new clock gate modifiers.
Signed-off-by: Beniamino Galvani <b.galvani@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This patch adds support for the Synopsys 10/100 Mbps Ethernet MAC used
on some ARC devices and on Rockchip SoCs.
Signed-off-by: Beniamino Galvani <b.galvani@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
We need list_for_each_entry_safe in dev_remove_bb_dev since the
list entries are removed during iteration over the list.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reported-by: Alexander Aring <alex.aring@gmail.com>
Provide minimal regulator support. Only supported operations are enabling
and disabling regulators. Association of devices with their regulators is
limited to devicetree only. If regulator support is disabled the API expands
to static inline stubs so consumers can still use the API.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
When a mtd device can have bad blocks we want to create a
bb device, so do this automatically. This allows us to
drop bb device creation from the environment.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This refactors the code so that we get a mtd_add_bb which can
be used to create a bb dev on a mtd_info.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The devfs layer just adds an addition indirection between mtd
and the bb devices with no purpose. Drop it.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Instead of just allowing to specify an OF path with additional
partname: property allow to specify a phandle to the partition
directly.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The upstream dts files do not contain the register shift. As
we have Omap specific init code anyway we can just set the register
shift from there instead of relying on the devicetree properties.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Also remove the unnecessary check for xzalloc failure.
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
No need to store init() function in the driver private structure
since it called only once during startup.
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>