* [PATCH v2] mtd: m25p80: add support for PMC SPI flash
@ 2013-08-17 23:44 Luka Perkov
2013-08-21 9:12 ` Brian Norris
0 siblings, 1 reply; 5+ messages in thread
From: Luka Perkov @ 2013-08-17 23:44 UTC (permalink / raw)
To: linux-mtd
Cc: Luka Perkov, Gabor Juhos, Brian Norris, Michel Stempin,
Artem Bityutskiy
From: Michel Stempin <michel.stempin@wanadoo.fr>
This patch adds support for PMC (now Chingis, part of ISSI) Pm25LV512 (512
kBbit), Pm25LV010 (1 Mbit) and Pm25LQ032 (32 Mbit) SPI flash.
Two generations of PMC SPI flash chips are addressed:
1) Pm25LV512 and Pm25LV010 - These have 4KB sectors and 32KB blocks. The 4KB
sector erase uses a non-standard opcode (0xd7). They do not support JEDEC RDID
(0x9f), and so they can only be detected by matching their name string with
pre-configured platform data. Because of the cascaded acquisitions, the
datasheet is no longer available on the current manufacturer's website,
although it is still commonly used in some recent wireless routers [1]. Only
public datasheet available seems to be on GeoCities [2].
2) Pm25LQ032 - A newer generation flash, with 4KB sectors and 32KB blocks. It
uses the standard erase and JEDEC read-ID opcodes. Manufacturer's datasheet is
available [3].
[1] https://forum.openwrt.org/viewtopic.php?pid=186360#p186360
[2] http://www.geocities.jp/scottle556/pdf/Pm25LV512-010.pdf
[3] http://www.chingistek.com/img/Product_Files/Pm25LQ032C%20datasheet%20v1.6.1.pdf
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Michel Stempin <michel.stempin@wanadoo.fr>
CC: Brian Norris <computersforpeace@gmail.com>
CC: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
---
Changes in v2:
- style and documentation improvements
drivers/mtd/devices/m25p80.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
index 2f3d2a5..4d45ce4 100644
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -45,6 +45,7 @@
#define OPCODE_BE_4K 0x20 /* Erase 4KiB block */
#define OPCODE_BE_32K 0x52 /* Erase 32KiB block */
#define OPCODE_CHIP_ERASE 0xc7 /* Erase whole flash chip */
+#define OPCODE_BE_4K_PMC 0xd7 /* Erase 4KiB block on PMC chips*/
#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
#define OPCODE_RDID 0x9f /* Read JEDEC ID */
@@ -682,6 +683,7 @@ struct flash_info {
#define SECT_4K 0x01 /* OPCODE_BE_4K works uniformly */
#define M25P_NO_ERASE 0x02 /* No erase command needed */
#define SST_WRITE 0x04 /* use SST byte programming */
+#define SECT_4K_PMC 0x08 /* OPCODE_BE_4K_PMC works uniformly */
};
#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \
@@ -762,6 +764,11 @@ static const struct spi_device_id m25p_ids[] = {
{ "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, 0) },
{ "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K) },
+ /* PMC -- pm25x "blocks" are 32K, sectors are 4K */
+ { "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },
+ { "pm25lv010", INFO(0, 0, 32 * 1024, 4, SECT_4K_PMC) },
+ { "pm25lq032", INFO(0x7F9D46, 0, 64 * 1024, 64, SECT_4K) },
+
/* Spansion -- single (large) sector size only, at least
* for the chips listed here (without boot sectors).
*/
@@ -1014,6 +1021,9 @@ static int m25p_probe(struct spi_device *spi)
if (info->flags & SECT_4K) {
flash->erase_opcode = OPCODE_BE_4K;
flash->mtd.erasesize = 4096;
+ } else if (info->flags & SECT_4K_PMC) {
+ flash->erase_opcode = OPCODE_BE_4K_PMC;
+ flash->mtd.erasesize = 4096;
} else {
flash->erase_opcode = OPCODE_SE;
flash->mtd.erasesize = info->sector_size;
--
1.8.3.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2] mtd: m25p80: add support for PMC SPI flash
2013-08-17 23:44 [PATCH v2] mtd: m25p80: add support for PMC SPI flash Luka Perkov
@ 2013-08-21 9:12 ` Brian Norris
2013-08-21 10:03 ` Luka Perkov
0 siblings, 1 reply; 5+ messages in thread
From: Brian Norris @ 2013-08-21 9:12 UTC (permalink / raw)
To: Luka Perkov
Cc: Marek Vašut, Michel Stempin, linux-mtd@lists.infradead.org,
Artem Bityutskiy, Gabor Juhos
Hi Luka,
I just noticed this version of Michel's patch (it was filtered to my
spam for some reason). I pushed Michel's version, but Marek and we are
still discussing it. If it comes down to changing anything, perhaps i
can update with your minor changes. But I will leave them out for now.
Thanks,
Brian
On Sat, Aug 17, 2013 at 4:44 PM, Luka Perkov <luka@openwrt.org> wrote:
> From: Michel Stempin <michel.stempin@wanadoo.fr>
>
> This patch adds support for PMC (now Chingis, part of ISSI) Pm25LV512 (512
> kBbit), Pm25LV010 (1 Mbit) and Pm25LQ032 (32 Mbit) SPI flash.
>
> Two generations of PMC SPI flash chips are addressed:
>
> 1) Pm25LV512 and Pm25LV010 - These have 4KB sectors and 32KB blocks. The 4KB
> sector erase uses a non-standard opcode (0xd7). They do not support JEDEC RDID
> (0x9f), and so they can only be detected by matching their name string with
> pre-configured platform data. Because of the cascaded acquisitions, the
> datasheet is no longer available on the current manufacturer's website,
> although it is still commonly used in some recent wireless routers [1]. Only
> public datasheet available seems to be on GeoCities [2].
>
> 2) Pm25LQ032 - A newer generation flash, with 4KB sectors and 32KB blocks. It
> uses the standard erase and JEDEC read-ID opcodes. Manufacturer's datasheet is
> available [3].
>
> [1] https://forum.openwrt.org/viewtopic.php?pid=186360#p186360
> [2] http://www.geocities.jp/scottle556/pdf/Pm25LV512-010.pdf
> [3] http://www.chingistek.com/img/Product_Files/Pm25LQ032C%20datasheet%20v1.6.1.pdf
>
> Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
> Signed-off-by: Michel Stempin <michel.stempin@wanadoo.fr>
> CC: Brian Norris <computersforpeace@gmail.com>
> CC: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
> ---
>
> Changes in v2:
> - style and documentation improvements
>
> drivers/mtd/devices/m25p80.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
> index 2f3d2a5..4d45ce4 100644
> --- a/drivers/mtd/devices/m25p80.c
> +++ b/drivers/mtd/devices/m25p80.c
> @@ -45,6 +45,7 @@
> #define OPCODE_BE_4K 0x20 /* Erase 4KiB block */
> #define OPCODE_BE_32K 0x52 /* Erase 32KiB block */
> #define OPCODE_CHIP_ERASE 0xc7 /* Erase whole flash chip */
> +#define OPCODE_BE_4K_PMC 0xd7 /* Erase 4KiB block on PMC chips*/
> #define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
> #define OPCODE_RDID 0x9f /* Read JEDEC ID */
>
> @@ -682,6 +683,7 @@ struct flash_info {
> #define SECT_4K 0x01 /* OPCODE_BE_4K works uniformly */
> #define M25P_NO_ERASE 0x02 /* No erase command needed */
> #define SST_WRITE 0x04 /* use SST byte programming */
> +#define SECT_4K_PMC 0x08 /* OPCODE_BE_4K_PMC works uniformly */
> };
>
> #define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \
> @@ -762,6 +764,11 @@ static const struct spi_device_id m25p_ids[] = {
> { "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, 0) },
> { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K) },
>
> + /* PMC -- pm25x "blocks" are 32K, sectors are 4K */
> + { "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },
> + { "pm25lv010", INFO(0, 0, 32 * 1024, 4, SECT_4K_PMC) },
> + { "pm25lq032", INFO(0x7F9D46, 0, 64 * 1024, 64, SECT_4K) },
> +
> /* Spansion -- single (large) sector size only, at least
> * for the chips listed here (without boot sectors).
> */
> @@ -1014,6 +1021,9 @@ static int m25p_probe(struct spi_device *spi)
> if (info->flags & SECT_4K) {
> flash->erase_opcode = OPCODE_BE_4K;
> flash->mtd.erasesize = 4096;
> + } else if (info->flags & SECT_4K_PMC) {
> + flash->erase_opcode = OPCODE_BE_4K_PMC;
> + flash->mtd.erasesize = 4096;
> } else {
> flash->erase_opcode = OPCODE_SE;
> flash->mtd.erasesize = info->sector_size;
> --
> 1.8.3.4
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] mtd: m25p80: add support for PMC SPI flash
2013-08-21 9:12 ` Brian Norris
@ 2013-08-21 10:03 ` Luka Perkov
2013-08-30 20:50 ` David Woodhouse
0 siblings, 1 reply; 5+ messages in thread
From: Luka Perkov @ 2013-08-21 10:03 UTC (permalink / raw)
To: Brian Norris
Cc: Marek Vašut, Michel Stempin, linux-mtd@lists.infradead.org,
Artem Bityutskiy, Gabor Juhos
Hi Brian,
On Wed, Aug 21, 2013 at 02:12:42AM -0700, Brian Norris wrote:
> I just noticed this version of Michel's patch (it was filtered to my
> spam for some reason). I pushed Michel's version,
Ok, I have only changed commit message.
> but Marek and we are still discussing it. If it comes down to changing
> anything, perhaps i can update with your minor changes. But I will leave them
> out for now.
Let me know if you need anything.
Luka
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] mtd: m25p80: add support for PMC SPI flash
2013-08-21 10:03 ` Luka Perkov
@ 2013-08-30 20:50 ` David Woodhouse
2013-08-30 21:11 ` Michel Stempin
0 siblings, 1 reply; 5+ messages in thread
From: David Woodhouse @ 2013-08-30 20:50 UTC (permalink / raw)
To: Luka Perkov
Cc: Marek Vašut, Artem Bityutskiy, Gabor Juhos,
linux-mtd@lists.infradead.org, Michel Stempin, Brian Norris
[-- Attachment #1: Type: text/plain, Size: 2498 bytes --]
On Wed, 2013-08-21 at 12:03 +0200, Luka Perkov wrote:
>
> On Wed, Aug 21, 2013 at 02:12:42AM -0700, Brian Norris wrote:
> > I just noticed this version of Michel's patch (it was filtered to my
> > spam for some reason). I pushed Michel's version,
>
> Ok, I have only changed commit message.
And I'm going to change it a little more to make it make sense, I think.
Can someone confirm the accuracy of the following (fixing non-standard
terms, and also I think fixing the comment about Pm25LQ032 block size):
-commit ac36246d7c8684128c5879219c3178838983fbd0
+commit ab50c34679ca03929fbc313da378b4f934e706ea
Author: Michel Stempin <michel.stempin@wanadoo.fr>
Date: Mon Jul 15 12:13:56 2013 +0200
mtd: chips: Add support for PMC SPI Flash chips in m25p80.c
- Add support for PMC (now Chingis, part of ISSI) Pm25LV512 (512 kBbit),
- Pm25LV010 (1 Mbit) and Pm25LQ032 (32 Mbit) SPI Flash chips.
+ Add support for PMC (now Chingis, part of ISSI) Pm25LV512 (512 Kib),
+ Pm25LV010 (1 Mib) and Pm25LQ032 (32 Mib) SPI Flash chips.
This patch addresses two generations of PMC SPI Flash chips:
- - Pm25LV512 and Pm25LV010: these have 4KB sectors and 32KB
- blocks. The 4KB sector erase uses a non-standard opcode
+ - Pm25LV512 and Pm25LV010: these have 4KiB sectors and 32KiB
+ blocks. The 4KiB sector erase uses a non-standard opcode
(0xd7). They do not support JEDEC RDID (0x9f), and so they can only
be detected by matching their name string with pre-configured
platform data. Because of the cascaded acquisitions, the datasheet
@@ -20,7 +20,7 @@ Date: Mon Jul 15 12:13:56 2013 +0200
only public datasheet available seems to be on GeoCities:
<http://www.geocities.jp/scottle556/pdf/Pm25LV512-010.pdf>
- - Pm25LQ032: a newer generation flash, with 4KB sectors and 32KB
+ - Pm25LQ032: a newer generation flash, with 4KiB sectors and 64KiB
blocks. It uses the standard erase and JEDEC read-ID
opcodes. Manufacturer's datasheet is here:
<http://www.chingistek.com/img/Product_Files/Pm25LQ032C%20datasheet%20v1.6.1.pdf>
@@ -46,6 +46,7 @@ Date: Mon Jul 15 12:13:56 2013 +0200
Signed-off-by: Michel Stempin <michel.stempin@wanadoo.fr>
[Brian: fixed conflict]
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
+ Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
--
dwmw2
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5745 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] mtd: m25p80: add support for PMC SPI flash
2013-08-30 20:50 ` David Woodhouse
@ 2013-08-30 21:11 ` Michel Stempin
0 siblings, 0 replies; 5+ messages in thread
From: Michel Stempin @ 2013-08-30 21:11 UTC (permalink / raw)
To: David Woodhouse
Cc: Marek Vašut, Artem Bityutskiy, Luka Perkov, Gabor Juhos,
linux-mtd@lists.infradead.org, Brian Norris
Le 30/08/2013 22:50, David Woodhouse a écrit :
> On Wed, 2013-08-21 at 12:03 +0200, Luka Perkov wrote:
>>
>> On Wed, Aug 21, 2013 at 02:12:42AM -0700, Brian Norris wrote:
>>> I just noticed this version of Michel's patch (it was filtered to my
>>> spam for some reason). I pushed Michel's version,
>>
>> Ok, I have only changed commit message.
>
> And I'm going to change it a little more to make it make sense, I think.
> Can someone confirm the accuracy of the following (fixing non-standard
> terms, and also I think fixing the comment about Pm25LQ032 block size):
I can't get used to these IEC prefixes vs. the customary ones, but you are right,
this is the international standard.
>
> -commit ac36246d7c8684128c5879219c3178838983fbd0
> +commit ab50c34679ca03929fbc313da378b4f934e706ea
> Author: Michel Stempin <michel.stempin@wanadoo.fr>
> Date: Mon Jul 15 12:13:56 2013 +0200
>
> mtd: chips: Add support for PMC SPI Flash chips in m25p80.c
>
> - Add support for PMC (now Chingis, part of ISSI) Pm25LV512 (512 kBbit),
> - Pm25LV010 (1 Mbit) and Pm25LQ032 (32 Mbit) SPI Flash chips.
> + Add support for PMC (now Chingis, part of ISSI) Pm25LV512 (512 Kib),
> + Pm25LV010 (1 Mib) and Pm25LQ032 (32 Mib) SPI Flash chips.
>
> This patch addresses two generations of PMC SPI Flash chips:
>
> - - Pm25LV512 and Pm25LV010: these have 4KB sectors and 32KB
> - blocks. The 4KB sector erase uses a non-standard opcode
> + - Pm25LV512 and Pm25LV010: these have 4KiB sectors and 32KiB
> + blocks. The 4KiB sector erase uses a non-standard opcode
> (0xd7). They do not support JEDEC RDID (0x9f), and so they can only
> be detected by matching their name string with pre-configured
> platform data. Because of the cascaded acquisitions, the datasheet
> @@ -20,7 +20,7 @@ Date: Mon Jul 15 12:13:56 2013 +0200
> only public datasheet available seems to be on GeoCities:
> <http://www.geocities.jp/scottle556/pdf/Pm25LV512-010.pdf>
>
> - - Pm25LQ032: a newer generation flash, with 4KB sectors and 32KB
> + - Pm25LQ032: a newer generation flash, with 4KiB sectors and 64KiB
Yes, this is a 64KiB block size indeed.
> blocks. It uses the standard erase and JEDEC read-ID
> opcodes. Manufacturer's datasheet is here:
> <http://www.chingistek.com/img/Product_Files/Pm25LQ032C%20datasheet%20v1.6.1.pdf>
> @@ -46,6 +46,7 @@ Date: Mon Jul 15 12:13:56 2013 +0200
> Signed-off-by: Michel Stempin <michel.stempin@wanadoo.fr>
> [Brian: fixed conflict]
> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
> + Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
>
>
>
>
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>
-- Michel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-08-30 21:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-17 23:44 [PATCH v2] mtd: m25p80: add support for PMC SPI flash Luka Perkov
2013-08-21 9:12 ` Brian Norris
2013-08-21 10:03 ` Luka Perkov
2013-08-30 20:50 ` David Woodhouse
2013-08-30 21:11 ` Michel Stempin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox