Hi Florian,
On Wed, Jun 07, 2017 at 08:48:06AM -0700, Florian Fainelli wrote:
On 06/07/2017 01:38 AM, Antoine Tenart wrote:
quoted
+ if (of_device_is_compatible(np, "marvell,orion-mdio")) {
+ ops->is_done = smi_is_done;
+ ops->is_read_valid = smi_is_read_valid;
+ ops->start_read = smi_start_read_op;
+ ops->read = smi_read_op;
+ ops->write = smi_write_op;
+
+ dev->poll_interval_min = MVMDIO_SMI_POLL_INTERVAL_MIN;
+ dev->poll_interval_max = MVMDIO_SMI_POLL_INTERVAL_MAX;
+ } else if (of_device_is_compatible(np, "marvell,xmdio")) {
+ ops->is_done = xsmi_is_done;
+ ops->is_read_valid = xsmi_is_read_valid;
+ ops->start_read = xsmi_start_read_op;
+ ops->read = xsmi_read_op;
+ ops->write = xsmi_write_op;
+
+ dev->poll_interval_min = MVMDIO_XSMI_POLL_INTERVAL_MIN;
+ dev->poll_interval_max = MVMDIO_XSMI_POLL_INTERVAL_MAX;
+ } else {
+ return -EINVAL;
+ }
Instead of doing this, you could have the ops structure declared e.g: a
static global variables in the driver and reference them from the
of_device_id .data field, something like:
Good idea, I'll update the series using static global variables for ops
and poll intervals and reference them in the .data field.
Thanks!
Antoine
--
Antoine Ténart, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com