It causes build failures on other arches than socfpga and the driver
doesn't use anything provided by this header.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
A read id operation followed by 0x00 reads the device ID while
a read id operation followed by 0x20 reads the possible ONFI identifier.
As the READID function did not propagate the second id parameter but had
a hard-coded call for 0x90 0x00, reading the ONFI identifier was not
possible and thus chips werde not detected (tested with
MT29F8G08ABABAWP)
Signed-off-by: Enrico Jorns <ejo@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The driver is based on the denali driver from the linux kernel
Signed-off-by: Enrico Jorns <ejo@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This one is available in the kernel and used by the denali driver
Signed-off-by: Enrico Jorns <ejo@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The lock/unlock code is broken beyond repair.
First of all the algorithm doesn't work properly. SPI NOR flashes
can only protect a certain amount of blocks from the end of the device
which is incompatible to the protect(start,len) API we have. The
algorithm tries to be clever by doing protection only when it does
not protect unrelated blocks and unprotection only when it does not
unprotect unrelated blocks. This breaks for example when some code
protects the last blocks (which may contain the bootloader), then
protects the blocks before the last ones (which may contain the
environment). Then if we try to overwrite the bootloader this won't
work since it would unprotect the environment aswell, so the driver
will not unprotect anything resulting in a failed erase/write later.
Then the protection behaviour is different between different flashes.
Some have three protection bits, some have four. For some the smallest
protection are is 1/16 of the device, others have 1/256 or 1/64. Some
have a bit which selects the lower area instead of upper area for
protection. The position of this bit differs on different flashes.
This patch removes the lock code completely and always unprotects
the whole device. This way we can unprotect a device for writing to
it and never protect it again.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Some SPI NOR flashes support 4K erase blocks. 4K erase blocks do not
work with UBIFS which needs a minimum erase block size of 15360 bytes.
Also bigger sectors are faster to erase. This patch adds a device tree
option to use the bigger blocks instead of the default 4K blocks.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
When creating an initial bad blocks table, create it empty. This is
necessary because when the bad block table blocks are not
initialized (all ff) while some partitions are, all the blocks which
have an OOB data not beginning with 0xff 0xff will be marked as bad
blocks in the initial bad blocks scan.
As a consequence, any existing blocks are impossible to erase
anymore. Fix this by fixing the BBT creation flag.
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Sync the spi_nor_ids[] struct with the one from kernel 4.1.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
In concat_write and concat_read *retlen is only added to, but it's never
initialized. If the caller hasn't initialized retlen doesn't contain
valid values. Fix this by initializing *retlen properly.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Since
636d384 mtd: cfi-flash: Add mtd concat support
The devinfo output is broken. dev->priv no longer contains a
struct flash_info * but instead a struct cfi_priv *.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Partition names should be partition@<offset> with <offset> being the
offset in the master mtd, and not a counting number.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Make setting partitions a litte bit more robust.
Signed-off-by: Teresa Remmet <t.remmet@phytec.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The m25p80 driver now depends on MTD_SPI_NOR which is disabled in all
defconfigs, so this effectively disables the m25p80 driver in all
defconfigs. Fix this by selecting MTD_SPI_NOR which is library code
without further dependencies. Also let m25p80 depend on SPI because
it needs the SPI code and won't link without it.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The caller will show a message, no need to do this in UBI. This
is for the case when mtd_detect calls ubi_attach_mtd_dev. mtd_detect
does not know whether this is already attached and it's not an error.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Hook UBI attachment into the mtd class devices detect function. This
makes it possible to attach ubi devices with 'detect nand0.root'.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Instead of naming all ubi devices and cdev names ubi<num> append
'.ubi' to the original mtd name. This makes ubi device and cdev
names predictable. With this ubi0 becomes nand0.root.ubi. Also
do the same for volume names, so ubi0.root becomes nand0.root.ubi.root.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
The mtd concat layer supports concatenating several MTD devices
into a single one. This is nearly as-is from the corresponding
Kernel code.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
- use consistent variable types (drop uchar, ushort and friends)
- remove whitespace between functions and opening brace
- Add some blank lines to rectify code
- drop 'rc' and 'retcode' and use 'ret' consistently
- Do not put variable assignment into if()
- drop unncessary braces
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Some members in struct cfi_qry are unaligned. Use get_unaligned_*
to access them. Fixes unaligned aborts on busses which don't support
unaligned accesses.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Some messages produce a lot of log spam. Turn them into
dev_vdbg to make some more important messages more visible.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Use variables instead of long defines to get the loops into a single
line. Also use goto to move the deeply indented code more to the left.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
TO get rid of some ifdefs. While at it add the vendor code of
the unsupported vendor to the error message.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Add the parameter to boot from ubifs fileystems. This assumes that
there will be only one UBI device registered in the kernel, otherwise
there is no way to predict the ubi number.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Use the spi-nor framework for the m25p80 driver to de-duplicate the code base
and follow along with the linux kernel version, so bugfixes or features can be
easier integrated.
Based on the Linux v4.1-rc3 version of m25p80.c.
Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Commit 2e6a88f210 (add cpu native ordered io accessors) introduced
these macros and then commit be57f20cdd (Fix big endian MMIO
primitives) figured out they are equivalent to __raw_{read,write}*.
They turned out unnecessary after all. Anyway, most source files
use __raw_read* and __raw_write*.
Let's replace a few remaining references and abolish them.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>