From: Michal Suchanek <hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Ian Campbell
<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Brian Norris
<computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>,
Huang Shijie <b32955-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
Michal Suchanek
<hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Ben Hutchings <ben-/+tVBieCtBitmTQ+vhA3Yw@public.gmane.org>,
Alison Chaiken
<alison_chaiken-nmGgyN9QBj3QT0dZR+AlfA@public.gmane.org>,
Mika Westerberg
<mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
"grmoore-EIB2kfCEclfQT0dZR+AlfA@public.gmane.org"
<grmoore-EIB2kfCEclfQT0dZR+AlfA@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: [PATCH 3/3] MTD: m25p80: Add option to limit SPI transfer size.
Date: Thu, 30 Apr 2015 15:46:11 +0200 [thread overview]
Message-ID: <3b0c112672f364452e80c333048161eaffb655db.1430403750.git.hramrach@gmail.com> (raw)
In-Reply-To: <cover.1430403750.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
My SPI driver does not support DMA so sizes larger than 64 bytes return
an error. Add an option to limit transfer size so m25p80 can be used
with reduced speed with such controller.
Signed-off-by: Michal Suchanek <hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
Documentation/devicetree/bindings/mtd/m25p80.txt | 5 +++++
drivers/mtd/devices/m25p80.c | 19 +++++++++++++++++--
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/mtd/m25p80.txt b/Documentation/devicetree/bindings/mtd/m25p80.txt
index f20b111..2bda5be 100644
--- a/Documentation/devicetree/bindings/mtd/m25p80.txt
+++ b/Documentation/devicetree/bindings/mtd/m25p80.txt
@@ -19,6 +19,11 @@ Optional properties:
all chips and support for it can not be detected at runtime.
Refer to your chips' datasheet to check if this is supported
by your chip.
+- linux,max_tx_len : With some SPI controller drivers transfer size is
+ limited.s
+ Transfer data in chunks no larger than this value.
+ Using this option will degrade performance when
+ max_tx_len is smaller than flash page size.
Example:
diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
index 0b2bc21..dfdb750 100644
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -26,12 +26,14 @@
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#include <linux/mtd/spi-nor.h>
+#include <linux/of_platform.h>
#define MAX_CMD_SIZE 6
struct m25p {
struct spi_device *spi;
struct spi_nor spi_nor;
struct mtd_info mtd;
+ size_t max_tx_len;
u8 command[MAX_CMD_SIZE];
};
@@ -97,7 +99,10 @@ static void m25p80_write(struct spi_nor *nor, loff_t to, size_t len,
spi_message_add_tail(&t[0], &m);
t[1].tx_buf = buf;
- t[1].len = len;
+ if (flash->max_tx_len)
+ t[1].len = min(len,flash->max_tx_len);
+ else
+ t[1].len = len;
spi_message_add_tail(&t[1], &m);
spi_sync(spi, &m);
@@ -145,7 +150,10 @@ static int m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
t[1].rx_buf = buf;
t[1].rx_nbits = m25p80_rx_nbits(nor);
- t[1].len = len;
+ if (flash->max_tx_len)
+ t[1].len = min(len,flash->max_tx_len);
+ else
+ t[1].len = len;
spi_message_add_tail(&t[1], &m);
spi_sync(spi, &m);
@@ -233,6 +241,13 @@ static int m25p_probe(struct spi_device *spi)
return ret;
ppdata.of_node = spi->dev.of_node;
+ if (spi->dev.of_node){
+ int result = of_property_read_u32(spi->dev.of_node, "linux,max_tx_len", &flash->max_tx_len);
+ if (result)
+ flash->max_tx_len = 0;
+ else
+ dev_info(&spi->dev, "Using maximum transfer length %u\n", flash->max_tx_len);
+ }
return mtd_device_parse_register(&flash->mtd, NULL, &ppdata,
data ? data->parts : NULL,
--
2.1.4
next prev parent reply other threads:[~2015-04-30 13:46 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-30 14:22 [PATCH 0/3] Using SPI NOR flah on sunxi Michal Suchanek
[not found] ` <cover.1430403750.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-04-30 13:33 ` [PATCH 1/3] MTD: m25p80: fix write return value Michal Suchanek
[not found] ` <55132b4496e7fe73f949186c0f140f3e4fd4e2c7.1430403750.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-04-30 18:43 ` Marek Vasut
[not found] ` <201504302043.11118.marex-ynQEQJNshbs@public.gmane.org>
2015-04-30 21:37 ` Michal Suchanek
2015-04-30 13:38 ` [PATCH 2/3] MTD: spi-nor: check for short writes in spi_nor_write Michal Suchanek
[not found] ` <50c40ef17ab6566f35ef5a4426bf23567f896db7.1430403750.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-20 23:38 ` Brian Norris
2015-05-21 8:39 ` Michal Suchanek
[not found] ` <CAOMqctTYqDWL51twOuGi+oXONXQ4B2-2BkdJNSpzZAXshZUN6g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-21 10:28 ` Mark Brown
[not found] ` <20150521102802.GS21577-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2015-05-22 7:17 ` Brian Norris
2015-04-30 13:46 ` Michal Suchanek [this message]
[not found] ` <3b0c112672f364452e80c333048161eaffb655db.1430403750.git.hramrach-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-04-30 14:58 ` [PATCH 3/3] MTD: m25p80: Add option to limit SPI transfer size Julian Calaby
[not found] ` <CAGRGNgXKrpJ8rc4h4BykgHsn3kfT5fuAssMK1bQJtxhVL=s2BA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-05-20 23:27 ` Brian Norris
2015-04-30 16:30 ` [PATCH 0/3] Using SPI NOR flah on sunxi Thomas.Betker-Bf/A/FSCP0w3s4ca2cGeAgC/G2K4zDHf
2015-04-30 16:30 ` Thomas.Betker
2015-04-30 16:30 ` Thomas.Betker
[not found] ` <OF23B05612.4290AF80-ONC1257E37.00589292-C1257E37.005AB106-Bf/A/FSCP0w3s4ca2cGeAgC/G2K4zDHf@public.gmane.org>
2015-04-30 16:56 ` Michal Suchanek
[not found] ` <CAOMqctRLnCJfVCYGjsmhORYNk+HCf07wwSXnZv4oqDxbaQqKGw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-04-30 18:34 ` Marek Vasut
2015-05-20 23:54 ` Brian Norris
2015-04-30 16:30 ` Thomas.Betker
2015-05-01 12:27 ` Stefan Monnier
[not found] ` <jwv4mnwfppf.fsf-monnier+gmane.comp.hardware.netbook.arm.sunxi-mXXj517/zsQ@public.gmane.org>
2015-05-04 10:32 ` [linux-sunxi] " Michal Suchanek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3b0c112672f364452e80c333048161eaffb655db.1430403750.git.hramrach@gmail.com \
--to=hramrach-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=alison_chaiken-nmGgyN9QBj3QT0dZR+AlfA@public.gmane.org \
--cc=b32955-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=ben-/+tVBieCtBitmTQ+vhA3Yw@public.gmane.org \
--cc=computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=grmoore-EIB2kfCEclfQT0dZR+AlfA@public.gmane.org \
--cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=marex-ynQEQJNshbs@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).