public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] i2c: ocores: add gaisler to platform data
@ 2020-08-14 16:31 Mohammed Billoo
  2020-08-14 16:31 ` [PATCH 2/2] i2c: ocores: add be/le support for gaisler Mohammed Billoo
  2020-08-14 16:49 ` [PATCH 1/2] i2c: ocores: add gaisler to platform data Andrew Lunn
  0 siblings, 2 replies; 7+ messages in thread
From: Mohammed Billoo @ 2020-08-14 16:31 UTC (permalink / raw)
  Cc: Mohammed Billoo, peter, andrew, linux-i2c

There may be instances when the device tree is not suitable to interface
with the ocores implementation. For example, when the FPGA/ASIC is
not on the same silicon die (e.g. the communication between the CPU and
the FPGA/ASIC is over PCI), information about the ocore implementation,
such as whether the gaisler implementation is used, must be determined
during runtime. In this case, the client driver would prepopulate the
platform data during device instantiation. Thus, a boolean needs to be
added in the platform data, to instruct the i2c-ocores driver whether
the gaisler register callbacks should be used.

Signed-off-by: Mohammed Billoo <mab@mab-labs.com>
---
 drivers/i2c/busses/i2c-ocores.c          | 4 ++++
 include/linux/platform_data/i2c-ocores.h | 1 +
 2 files changed, 5 insertions(+)

diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
index f5fc75b65a19..0975f6797069 100644
--- a/drivers/i2c/busses/i2c-ocores.c
+++ b/drivers/i2c/busses/i2c-ocores.c
@@ -647,6 +647,10 @@ static int ocores_i2c_probe(struct platform_device *pdev)
 			i2c->bus_clock_khz = pdata->bus_khz;
 		else
 			i2c->bus_clock_khz = 100;
+		if (pdata->gaisler) {
+			i2c->setreg = oc_setreg_grlib;
+			i2c->getreg = oc_getreg_grlib;
+		}
 	} else {
 		ret = ocores_i2c_of_probe(pdev, i2c);
 		if (ret)
diff --git a/include/linux/platform_data/i2c-ocores.h b/include/linux/platform_data/i2c-ocores.h
index e6326cbafe59..8a5849f1e267 100644
--- a/include/linux/platform_data/i2c-ocores.h
+++ b/include/linux/platform_data/i2c-ocores.h
@@ -14,6 +14,7 @@ struct ocores_i2c_platform_data {
 	u32 clock_khz; /* input clock in kHz */
 	u32 bus_khz; /* bus clock in kHz */
 	bool big_endian; /* registers are big endian */
+	bool gaisler; /* use grlib accessors */
 	u8 num_devices; /* number of devices in the devices list */
 	struct i2c_board_info const *devices; /* devices connected to the bus */
 };
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-08-14 19:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-14 16:31 [PATCH 1/2] i2c: ocores: add gaisler to platform data Mohammed Billoo
2020-08-14 16:31 ` [PATCH 2/2] i2c: ocores: add be/le support for gaisler Mohammed Billoo
2020-08-14 16:50   ` Andrew Lunn
     [not found]     ` <CALkjhPppeOwekp-ZJZ9QGfNGa=K5g6P+TWs42Anrb+QvFSrspQ@mail.gmail.com>
2020-08-14 19:02       ` Andrew Lunn
2020-08-14 19:05         ` Wolfram Sang
2020-08-14 16:49 ` [PATCH 1/2] i2c: ocores: add gaisler to platform data Andrew Lunn
     [not found]   ` <CALkjhPo3BGRDao=Rz9S5Xxf1bubBXv7WEGu6B=5V1WvnmGUmwg@mail.gmail.com>
2020-08-14 19:04     ` Andrew Lunn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox