From: cbostic@linux.vnet.ibm.com (Christopher Bostic)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 15/23] drivers/fsi: expose direct-access slave API
Date: Thu, 11 May 2017 16:00:52 -0500 [thread overview]
Message-ID: <20170511210101.78409-16-cbostic@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170511210101.78409-1-cbostic@linux.vnet.ibm.com>
From: Jeremy Kerr <jk@ozlabs.org>
Allow drivers to access the slave address ranges.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Christopher Bostic <cbostic@linux.vnet.ibm.com>
---
drivers/fsi/fsi-core.c | 26 ++++++++++++++++++++------
include/linux/fsi.h | 12 ++++++++++++
2 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
index 626cc06..d319f67 100644
--- a/drivers/fsi/fsi-core.c
+++ b/drivers/fsi/fsi-core.c
@@ -78,10 +78,6 @@ static int fsi_master_read(struct fsi_master *master, int link,
uint8_t slave_id, uint32_t addr, void *val, size_t size);
static int fsi_master_write(struct fsi_master *master, int link,
uint8_t slave_id, uint32_t addr, const void *val, size_t size);
-static int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
- void *val, size_t size);
-static int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
- const void *val, size_t size);
/*
* fsi_device_read() / fsi_device_write() / fsi_device_peek()
@@ -174,7 +170,7 @@ static int fsi_slave_calc_addr(struct fsi_slave *slave, uint32_t *addrp,
return 0;
}
-static int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
+int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
void *val, size_t size)
{
uint8_t id = slave->id;
@@ -188,7 +184,7 @@ static int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
addr, val, size);
}
-static int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
+int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
const void *val, size_t size)
{
uint8_t id = slave->id;
@@ -202,6 +198,24 @@ static int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
addr, val, size);
}
+extern int fsi_slave_claim_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size)
+{
+ if (addr + size < addr)
+ return -EINVAL;
+
+ if (addr + size > slave->size)
+ return -EINVAL;
+
+ /* todo: check for overlapping claims */
+ return 0;
+}
+
+extern void fsi_slave_release_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size)
+{
+}
+
static int fsi_slave_scan(struct fsi_slave *slave)
{
uint32_t engine_addr;
diff --git a/include/linux/fsi.h b/include/linux/fsi.h
index 34f1e9a..141fd38 100644
--- a/include/linux/fsi.h
+++ b/include/linux/fsi.h
@@ -66,6 +66,18 @@ struct fsi_driver {
module_driver(__fsi_driver, fsi_driver_register, \
fsi_driver_unregister)
+/* direct slave API */
+extern int fsi_slave_claim_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size);
+extern void fsi_slave_release_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size);
+extern int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
+ void *val, size_t size);
+extern int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
+ const void *val, size_t size);
+
+
+
extern struct bus_type fsi_bus_type;
#endif /* LINUX_FSI_H */
--
1.8.2.2
WARNING: multiple messages have this Message-ID (diff)
From: Christopher Bostic <cbostic@linux.vnet.ibm.com>
To: robh+dt@kernel.org, mark.rutland@arm.com, linux@armlinux.org.uk,
rostedt@goodmis.org, mingo@redhat.com,
gregkh@linuxfoundation.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Cc: Jeremy Kerr <jk@ozlabs.org>,
joel@jms.id.au, linux-kernel@vger.kernel.org, andrew@aj.id.au,
alistair@popple.id.au, benh@kernel.crashing.org,
Christopher Bostic <cbostic@linux.vnet.ibm.com>
Subject: [PATCH v7 15/23] drivers/fsi: expose direct-access slave API
Date: Thu, 11 May 2017 16:00:52 -0500 [thread overview]
Message-ID: <20170511210101.78409-16-cbostic@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170511210101.78409-1-cbostic@linux.vnet.ibm.com>
From: Jeremy Kerr <jk@ozlabs.org>
Allow drivers to access the slave address ranges.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Christopher Bostic <cbostic@linux.vnet.ibm.com>
---
drivers/fsi/fsi-core.c | 26 ++++++++++++++++++++------
include/linux/fsi.h | 12 ++++++++++++
2 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
index 626cc06..d319f67 100644
--- a/drivers/fsi/fsi-core.c
+++ b/drivers/fsi/fsi-core.c
@@ -78,10 +78,6 @@ static int fsi_master_read(struct fsi_master *master, int link,
uint8_t slave_id, uint32_t addr, void *val, size_t size);
static int fsi_master_write(struct fsi_master *master, int link,
uint8_t slave_id, uint32_t addr, const void *val, size_t size);
-static int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
- void *val, size_t size);
-static int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
- const void *val, size_t size);
/*
* fsi_device_read() / fsi_device_write() / fsi_device_peek()
@@ -174,7 +170,7 @@ static int fsi_slave_calc_addr(struct fsi_slave *slave, uint32_t *addrp,
return 0;
}
-static int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
+int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
void *val, size_t size)
{
uint8_t id = slave->id;
@@ -188,7 +184,7 @@ static int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
addr, val, size);
}
-static int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
+int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
const void *val, size_t size)
{
uint8_t id = slave->id;
@@ -202,6 +198,24 @@ static int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
addr, val, size);
}
+extern int fsi_slave_claim_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size)
+{
+ if (addr + size < addr)
+ return -EINVAL;
+
+ if (addr + size > slave->size)
+ return -EINVAL;
+
+ /* todo: check for overlapping claims */
+ return 0;
+}
+
+extern void fsi_slave_release_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size)
+{
+}
+
static int fsi_slave_scan(struct fsi_slave *slave)
{
uint32_t engine_addr;
diff --git a/include/linux/fsi.h b/include/linux/fsi.h
index 34f1e9a..141fd38 100644
--- a/include/linux/fsi.h
+++ b/include/linux/fsi.h
@@ -66,6 +66,18 @@ struct fsi_driver {
module_driver(__fsi_driver, fsi_driver_register, \
fsi_driver_unregister)
+/* direct slave API */
+extern int fsi_slave_claim_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size);
+extern void fsi_slave_release_range(struct fsi_slave *slave,
+ uint32_t addr, uint32_t size);
+extern int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,
+ void *val, size_t size);
+extern int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,
+ const void *val, size_t size);
+
+
+
extern struct bus_type fsi_bus_type;
#endif /* LINUX_FSI_H */
--
1.8.2.2
next prev parent reply other threads:[~2017-05-11 21:00 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-11 21:00 [PATCH v7 00/23] FSI device driver implementation Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 01/23] drivers/fsi: Add fsi master definition Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 02/23] drivers/fsi: Add slave definition Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 03/23] drivers/fsi: Add empty master scan Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 04/23] lib: Add crc4 module Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 05/23] drivers/fsi: Add slave & master read/write APIs Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 06/23] drivers/fsi: Set up links for slave communication Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 07/23] drivers/fsi: Implement slave initialisation Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 08/23] drivers/fsi: Set slave SMODE to init communication Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 09/23] drivers/fsi: scan slaves & register devices Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 10/23] drivers/fsi: Add device read/write/peek API Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 11/23] drivers/fsi: Add master unscan Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 12/23] drivers/fsi: Add documentation for GPIO bindings Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 13/23] drivers/fsi: Add client driver register utilities Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 14/23] drivers/fsi: Add sysfs files for FSI master & slave accesses Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic [this message]
2017-05-11 21:00 ` [PATCH v7 15/23] drivers/fsi: expose direct-access slave API Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 16/23] drivers/fsi: Add tracepoints for low-level operations Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 17/23] drivers/fsi: Add error handling for slave Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 18/23] drivers/fsi: Document FSI master sysfs files in ABI Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 19/23] drivers/fsi: Add GPIO based FSI master Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 20/23] drivers/fsi/gpio: Add tracepoints for GPIO master Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 21/23] drivers/fsi: Add SCOM FSI client device driver Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:00 ` [PATCH v7 22/23] drivers/fsi: Add hub master support Christopher Bostic
2017-05-11 21:00 ` Christopher Bostic
2017-05-11 21:01 ` [PATCH v7 23/23] drivers/fsi: Use asynchronous slave mode Christopher Bostic
2017-05-11 21:01 ` Christopher Bostic
2017-05-31 17:17 ` [PATCH v7 00/23] FSI device driver implementation Christopher Bostic
2017-05-31 17:17 ` Christopher Bostic
2017-05-31 17:17 ` Christopher Bostic
2017-06-03 10:05 ` Greg KH
2017-06-03 10:05 ` Greg KH
2017-06-03 10:05 ` Greg KH
2017-06-03 21:25 ` Steven Rostedt
2017-06-03 21:25 ` Steven Rostedt
2017-06-03 21:25 ` Steven Rostedt
2017-06-05 19:21 ` Christopher Bostic
2017-06-05 19:21 ` Christopher Bostic
2017-06-05 19:21 ` Christopher Bostic
2017-06-05 19:20 ` Christopher Bostic
2017-06-05 19:20 ` Christopher Bostic
2017-06-05 19:20 ` Christopher Bostic
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=20170511210101.78409-16-cbostic@linux.vnet.ibm.com \
--to=cbostic@linux.vnet.ibm.com \
--cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.