mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 22:54:01 +00:00
memory: mvebu-devbus: add a devbus, keep-config property
Currently, the mvebu-devbus Device Tree binding makes defining the timing parameters mandatory. However, in practice, when converting Orion5x platforms to the Device Tree, we may not necessarily have easy access to the hardware platforms to fetch those values which were not defined in old-style board files: all these platforms rely on the bootloader setting the timing parameters correctly. In order to facilitate the migration to the Device Tree of this platform, this commit relaxes the mvebu-devbus Device Tree binding by introducing a 'devbus,keep-config' boolean property, which, if defined, will ignore all timing parameters passed in the Device Tree, and simply rely on the timing values already defined by the bootloader. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Tested-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Link: https://lkml.kernel.org/r/1398202002-28530-10-git-send-email-thomas.petazzoni@free-electrons.com Signed-off-by: Jason Cooper <jason@lakedaemon.net>
This commit is contained in:
parent
c4ec7430c3
commit
0456d3300e
2 changed files with 29 additions and 20 deletions
|
@ -23,6 +23,13 @@ Required properties:
|
||||||
integer values for each chip-select line in use:
|
integer values for each chip-select line in use:
|
||||||
0 <physical address of mapping> <size>
|
0 <physical address of mapping> <size>
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- devbus,keep-config This property can optionally be used to keep
|
||||||
|
using the timing parameters set by the
|
||||||
|
bootloader. It makes all the timing properties
|
||||||
|
described below unused.
|
||||||
|
|
||||||
Timing properties for child nodes:
|
Timing properties for child nodes:
|
||||||
|
|
||||||
Read parameters:
|
Read parameters:
|
||||||
|
@ -31,26 +38,26 @@ Read parameters:
|
||||||
drive the AD bus after the completion of a device read.
|
drive the AD bus after the completion of a device read.
|
||||||
This prevents contentions on the Device Bus after a read
|
This prevents contentions on the Device Bus after a read
|
||||||
cycle from a slow device.
|
cycle from a slow device.
|
||||||
Mandatory.
|
Mandatory, except if devbus,keep-config is used.
|
||||||
|
|
||||||
- devbus,bus-width: Defines the bus width, in bits (e.g. <16>).
|
- devbus,bus-width: Defines the bus width, in bits (e.g. <16>).
|
||||||
Mandatory.
|
Mandatory, except if devbus,keep-config is used.
|
||||||
|
|
||||||
- devbus,badr-skew-ps: Defines the time delay from from A[2:0] toggle,
|
- devbus,badr-skew-ps: Defines the time delay from from A[2:0] toggle,
|
||||||
to read data sample. This parameter is useful for
|
to read data sample. This parameter is useful for
|
||||||
synchronous pipelined devices, where the address
|
synchronous pipelined devices, where the address
|
||||||
precedes the read data by one or two cycles.
|
precedes the read data by one or two cycles.
|
||||||
Mandatory.
|
Mandatory, except if devbus,keep-config is used.
|
||||||
|
|
||||||
- devbus,acc-first-ps: Defines the time delay from the negation of
|
- devbus,acc-first-ps: Defines the time delay from the negation of
|
||||||
ALE[0] to the cycle that the first read data is sampled
|
ALE[0] to the cycle that the first read data is sampled
|
||||||
by the controller.
|
by the controller.
|
||||||
Mandatory.
|
Mandatory, except if devbus,keep-config is used.
|
||||||
|
|
||||||
- devbus,acc-next-ps: Defines the time delay between the cycle that
|
- devbus,acc-next-ps: Defines the time delay between the cycle that
|
||||||
samples data N and the cycle that samples data N+1
|
samples data N and the cycle that samples data N+1
|
||||||
(in burst accesses).
|
(in burst accesses).
|
||||||
Mandatory.
|
Mandatory, except if devbus,keep-config is used.
|
||||||
|
|
||||||
- devbus,rd-setup-ps: Defines the time delay between DEV_CSn assertion to
|
- devbus,rd-setup-ps: Defines the time delay between DEV_CSn assertion to
|
||||||
DEV_OEn assertion. If set to 0 (default),
|
DEV_OEn assertion. If set to 0 (default),
|
||||||
|
@ -58,8 +65,8 @@ Read parameters:
|
||||||
This parameter has no affect on <acc-first-ps> parameter
|
This parameter has no affect on <acc-first-ps> parameter
|
||||||
(no affect on first data sample). Set <rd-setup-ps>
|
(no affect on first data sample). Set <rd-setup-ps>
|
||||||
to a value smaller than <acc-first-ps>.
|
to a value smaller than <acc-first-ps>.
|
||||||
Mandatory for "marvell,mvebu-devbus"
|
Mandatory for "marvell,mvebu-devbus" compatible string,
|
||||||
compatible string, ignored otherwise.
|
except if devbus,keep-config is used.
|
||||||
|
|
||||||
- devbus,rd-hold-ps: Defines the time between the last data sample to the
|
- devbus,rd-hold-ps: Defines the time between the last data sample to the
|
||||||
de-assertion of DEV_CSn. If set to 0 (default),
|
de-assertion of DEV_CSn. If set to 0 (default),
|
||||||
|
@ -70,8 +77,8 @@ Read parameters:
|
||||||
last data sampled. Also this parameter has no
|
last data sampled. Also this parameter has no
|
||||||
affect on <turn-off-ps> parameter.
|
affect on <turn-off-ps> parameter.
|
||||||
Set <rd-hold-ps> to a value smaller than <turn-off-ps>.
|
Set <rd-hold-ps> to a value smaller than <turn-off-ps>.
|
||||||
Mandatory for "marvell,mvebu-devbus"
|
Mandatory for "marvell,mvebu-devbus" compatible string,
|
||||||
compatible string, ignored otherwise.
|
except if devbus,keep-config is used.
|
||||||
|
|
||||||
Write parameters:
|
Write parameters:
|
||||||
|
|
||||||
|
@ -96,8 +103,8 @@ Write parameters:
|
||||||
- devbus,sync-enable: Synchronous device enable.
|
- devbus,sync-enable: Synchronous device enable.
|
||||||
1: True
|
1: True
|
||||||
0: False
|
0: False
|
||||||
Mandatory for "marvell,mvebu-devbus" compatible
|
Mandatory for "marvell,mvebu-devbus" compatible string,
|
||||||
string, ignored otherwise.
|
except if devbus,keep-config is used.
|
||||||
|
|
||||||
An example for an Armada XP GP board, with a 16 MiB NOR device as child
|
An example for an Armada XP GP board, with a 16 MiB NOR device as child
|
||||||
is showed below. Note that the Device Bus driver is in charge of allocating
|
is showed below. Note that the Device Bus driver is in charge of allocating
|
||||||
|
|
|
@ -310,16 +310,18 @@ static int mvebu_devbus_probe(struct platform_device *pdev)
|
||||||
dev_dbg(devbus->dev, "Setting timing parameter, tick is %lu ps\n",
|
dev_dbg(devbus->dev, "Setting timing parameter, tick is %lu ps\n",
|
||||||
devbus->tick_ps);
|
devbus->tick_ps);
|
||||||
|
|
||||||
/* Read the Device Tree node */
|
if (!of_property_read_bool(node, "devbus,keep-config")) {
|
||||||
err = devbus_get_timing_params(devbus, node, &r, &w);
|
/* Read the Device Tree node */
|
||||||
if (err < 0)
|
err = devbus_get_timing_params(devbus, node, &r, &w);
|
||||||
return err;
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
/* Set the new timing parameters */
|
/* Set the new timing parameters */
|
||||||
if (of_device_is_compatible(node, "marvell,orion-devbus"))
|
if (of_device_is_compatible(node, "marvell,orion-devbus"))
|
||||||
devbus_orion_set_timing_params(devbus, node, &r, &w);
|
devbus_orion_set_timing_params(devbus, node, &r, &w);
|
||||||
else
|
else
|
||||||
devbus_armada_set_timing_params(devbus, node, &r, &w);
|
devbus_armada_set_timing_params(devbus, node, &r, &w);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We need to create a child device explicitly from here to
|
* We need to create a child device explicitly from here to
|
||||||
|
|
Loading…
Reference in a new issue