
On 26 August 2015 at 20:14, Marek Vasut marex@denx.de wrote:
On Wednesday, August 26, 2015 at 04:39:40 PM, Jagan Teki wrote:
On 26 August 2015 at 19:29, Marek Vasut marex@denx.de wrote:
On Wednesday, August 26, 2015 at 03:47:28 PM, Jagan Teki wrote:
On 26 August 2015 at 13:00, Chin Liang See clsee@altera.com wrote:
On Wed, 2015-08-26 at 08:57 +0200, marex@denx.de wrote:
On Wednesday, August 26, 2015 at 02:09:55 AM, Chin Liang See wrote: > Enable the quad output fast read and quad input fast program > support. Quad mode is supported by Cadence QSPI controller. > > Signed-off-by: Chin Liang See clsee@altera.com > Cc: Dinh Nguyen dinguyen@opensource.altera.com > Cc: Stefan Roese sr@denx.de > Cc: Vikas Manocha vikas.manocha@st.com > Cc: Jagannadh Teki jteki@openedev.com > Cc: Pavel Machek pavel@denx.de > Cc: Marek Vasut marex@denx.de > --- > > drivers/spi/cadence_qspi.c | 11 +++++++++++ > drivers/spi/cadence_qspi_apb.c | 16 ++++++++++++---- > 2 files changed, 23 insertions(+), 4 deletions(-) > > diff --git a/drivers/spi/cadence_qspi.c > b/drivers/spi/cadence_qspi.c index 34a0f46..c6b69c4 100644 > --- a/drivers/spi/cadence_qspi.c > +++ b/drivers/spi/cadence_qspi.c > @@ -318,6 +318,16 @@ static int > cadence_spi_ofdata_to_platdata(struct udevice *bus) return 0; > > } > > +static int cadence_spi_child_pre_probe(struct udevice *dev) > +{ > + struct spi_slave *slave = dev_get_parentdata(dev); > + > + /* Cadence QSPI controller can support quad read and program */ > + slave->op_mode_rx = SPI_OPM_RX_QOF; > + slave->op_mode_tx = SPI_OPM_TX_QPP; > + return 0; > +} > + > > static const struct dm_spi_ops cadence_spi_ops = { > > .xfer = cadence_spi_xfer, > .set_speed = cadence_spi_set_speed, > > @@ -341,5 +351,6 @@ U_BOOT_DRIVER(cadence_spi) = { > > .ofdata_to_platdata = cadence_spi_ofdata_to_platdata, > .platdata_auto_alloc_size = sizeof(struct > cadence_spi_platdata), .priv_auto_alloc_size = sizeof(struct > cadence_spi_priv), > > + .child_pre_probe = cadence_spi_child_pre_probe, > > .probe = cadence_spi_probe, > > };
Simon, can you please check if this DM bit is correct ?
> diff --git a/drivers/spi/cadence_qspi_apb.c > b/drivers/spi/cadence_qspi_apb.c index d053407..deffb6b 100644 > --- a/drivers/spi/cadence_qspi_apb.c > +++ b/drivers/spi/cadence_qspi_apb.c > @@ -29,6 +29,9 @@ > > #include <asm/io.h> > #include <asm/errno.h> > #include "cadence_qspi.h" > > +#include <spi.h> > +#include <spi_flash.h> > +#include "../mtd/spi/sf_internal.h"
Why do you need this include ?
Actually I am comparing the opcode to determine whether its a quad command. If yes, we need to setup the controller accordingly.
Sorry, this I wouldn't recommend as of now please assign quad directly instead setting up controller based on the flash stuff, Yes things need to change it on u-boot like spi-nor framework and currently we are working on it[1] will defiantly back with proper solution.
[1] http://git.denx.de/?p=u-boot/u-boot-spi.git;a=shortlog;h=refs/heads/spi- no r
Is this stuff in any way compatible with the spi-nor stuff in Linux ?
Main intention is to compatible with Linux spi-nor, but instead of direct porting - this way is to make enhancements step by step.
Why can't you port the SPI-NOR from Linux directly ?
There are some features that are not added in Linux, yet like BAR, dual_flash and way of handling ops like erase/read/write logic need to compatible to these features. I'm planning to make these ops logic sits as it is and add spi-nor on top it.
This way looks better for testing as I experienced so-far, and I'm hoping at the end these no much significant difference between Linux vs U-Boot except these feature sets.
thanks!