[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170329174340.89109-7-cbostic@linux.vnet.ibm.com>
Date: Wed, 29 Mar 2017 12:43:23 -0500
From: Christopher Bostic <cbostic@...ux.vnet.ibm.com>
To: robh+dt@...nel.org, mark.rutland@....com, linux@...linux.org.uk,
rostedt@...dmis.org, mingo@...hat.com, gregkh@...uxfoundation.org,
devicetree@...r.kernel.org, linux-arm-kernel@...ts.infradead.org
Cc: Chris Bostic <cbostic@...ux.vnet.ibm.com>, joel@....id.au,
linux-kernel@...r.kernel.org, andrew@...id.au,
alistair@...ple.id.au, benh@...nel.crashing.org
Subject: [PATCH v4 06/23] drivers/fsi: Set up links for slave communication
From: Chris Bostic <cbostic@...ux.vnet.ibm.com>
Enable each link and send a break command, and try to detect a slave by
reading from the SMODE register.
Signed-off-by: Chris Bostic <cbostic@...ux.vnet.ibm.com>
Signed-off-by: Joel Stanley <joel@....id.au>
---
drivers/fsi/fsi-core.c | 37 +++++++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
index 32698ed..6e1cfdf 100644
--- a/drivers/fsi/fsi-core.c
+++ b/drivers/fsi/fsi-core.c
@@ -157,12 +157,45 @@ static int fsi_master_write(struct fsi_master *master, int link,
return master->write(master, link, slave_id, addr, val, size);
}
+static int fsi_master_link_enable(struct fsi_master *master, int link)
+{
+ if (master->link_enable)
+ return master->link_enable(master, link);
+
+ return 0;
+}
+
+/*
+ * Issue a break command on this link
+ */
+static int fsi_master_break(struct fsi_master *master, int link)
+{
+ if (master->send_break)
+ return master->send_break(master, link);
+
+ return 0;
+}
+
static int fsi_master_scan(struct fsi_master *master)
{
- int link;
+ int link, rc;
+
+ for (link = 0; link < master->n_links; link++) {
+ rc = fsi_master_link_enable(master, link);
+ if (rc) {
+ dev_dbg(&master->dev,
+ "enable link %d failed: %d\n", link, rc);
+ continue;
+ }
+ rc = fsi_master_break(master, link);
+ if (rc) {
+ dev_dbg(&master->dev,
+ "break to link %d failed: %d\n", link, rc);
+ continue;
+ }
- for (link = 0; link < master->n_links; link++)
fsi_slave_init(master, link, 0);
+ }
return 0;
}
--
1.8.2.2
Powered by blists - more mailing lists