* [PATCH v2] ptp: ocp: add I2C ISP support for ADVA TimeCard CPLD
@ 2026-06-28 5:38 Sagi Maimon
2026-06-29 14:53 ` Vadim Fedorenko
0 siblings, 1 reply; 2+ messages in thread
From: Sagi Maimon @ 2026-06-28 5:38 UTC (permalink / raw)
To: jonathan.lemon, vadim.fedorenko, richardcochran, andrew+netdev,
davem, edumazet, kuba, pabeni
Cc: linux-kernel, netdev, Sagi Maimon
The ADVA TimeCard programs its on-board CPLD (Lattice MachXO3)
via I2C using in-system programming (ISP).
The CPLD resides on a secondary I2C bus controlled by the
embedded MicroBlaze. To allow programming, the driver must
take ownership of this bus and expose it to userspace.
Add support to:
- enable the i2c-dev interface to expose /dev/i2c-N
- provide sysfs control over the secondary I2C bus
Signed-off-by: Sagi Maimon <maimon.sagi@gmail.com>
---
Address comments from:
- Andrew Lunn: https://www.spinics.net/lists/netdev/msg1200997.html
Changes since v1:
- Add reasoning to the commit message
drivers/ptp/ptp_ocp.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/drivers/ptp/ptp_ocp.c b/drivers/ptp/ptp_ocp.c
index 35e911f1ad78..1b4ccb4feca5 100644
--- a/drivers/ptp/ptp_ocp.c
+++ b/drivers/ptp/ptp_ocp.c
@@ -4224,6 +4224,34 @@ static const struct ocp_attr_group art_timecard_groups[] = {
{ },
};
+static ssize_t
+i2c_bus_ctrl_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ struct ptp_ocp *bp = dev_get_drvdata(dev);
+
+ if (!bp->pps_select)
+ return -ENODEV;
+ return sysfs_emit(buf, "0x%08x\n",
+ ioread32(&bp->pps_select->__pad1));
+}
+
+static ssize_t
+i2c_bus_ctrl_store(struct device *dev, struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct ptp_ocp *bp = dev_get_drvdata(dev);
+ u32 val;
+
+ if (!bp->pps_select)
+ return -ENODEV;
+ if (kstrtou32(buf, 0, &val))
+ return -EINVAL;
+ iowrite32(val, &bp->pps_select->__pad1);
+ return count;
+}
+
+static DEVICE_ATTR_RW(i2c_bus_ctrl);
+
static struct attribute *adva_timecard_attrs[] = {
&dev_attr_serialnum.attr,
&dev_attr_gnss_sync.attr,
@@ -4272,6 +4300,7 @@ static struct attribute *adva_timecard_x1_attrs[] = {
&dev_attr_ts_window_adjust.attr,
&dev_attr_utc_tai_offset.attr,
&dev_attr_tod_correction.attr,
+ &dev_attr_i2c_bus_ctrl.attr,
NULL,
};
@@ -5235,6 +5264,7 @@ ptp_ocp_init(void)
const char *what;
int err;
+ request_module("i2c-dev");
ptp_ocp_debugfs_init();
what = "timecard class";
--
2.47.0
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2] ptp: ocp: add I2C ISP support for ADVA TimeCard CPLD
2026-06-28 5:38 [PATCH v2] ptp: ocp: add I2C ISP support for ADVA TimeCard CPLD Sagi Maimon
@ 2026-06-29 14:53 ` Vadim Fedorenko
0 siblings, 0 replies; 2+ messages in thread
From: Vadim Fedorenko @ 2026-06-29 14:53 UTC (permalink / raw)
To: Sagi Maimon, jonathan.lemon, richardcochran, andrew+netdev, davem,
edumazet, kuba, pabeni
Cc: linux-kernel, netdev
On 28/06/2026 06:38, Sagi Maimon wrote:
> The ADVA TimeCard programs its on-board CPLD (Lattice MachXO3)
> via I2C using in-system programming (ISP).
>
> The CPLD resides on a secondary I2C bus controlled by the
> embedded MicroBlaze. To allow programming, the driver must
> take ownership of this bus and expose it to userspace.
>
> Add support to:
> - enable the i2c-dev interface to expose /dev/i2c-N
> - provide sysfs control over the secondary I2C bus
>
> Signed-off-by: Sagi Maimon <maimon.sagi@gmail.com>
> ---
> Address comments from:
> - Andrew Lunn: https://www.spinics.net/lists/netdev/msg1200997.html
I don't see anything regarding module_request() part.
It looks like you want to expose raw I2C access for user-space software
to do direct writes to the HW, which is not modeled as a device in
kernel. Exposure of /dev/i2c bus affects other Time Cards where we tried
to hide to avoid direct writes to EEPROM areas.
If you need some addresses of i2c bus to be accessible, it's better to
implement these accesses as sysfs or debugfs attributes and expose them
for ADVA cards.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-29 14:53 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-28 5:38 [PATCH v2] ptp: ocp: add I2C ISP support for ADVA TimeCard CPLD Sagi Maimon
2026-06-29 14:53 ` Vadim Fedorenko
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.