mutex_unlock(&indio_dev->mlock);
                return -EBUSY;
        }
-       indio_dev->clock_id = clock_id;
+       iio_dev_opaque->clock_id = clock_id;
        mutex_unlock(&indio_dev->mlock);
 
        return 0;
 }
 EXPORT_SYMBOL(iio_device_set_clock);
 
+/**
+ * iio_device_get_clock() - Retrieve current timestamping clock for the device
+ * @indio_dev: IIO device structure containing the device
+ */
+clockid_t iio_device_get_clock(const struct iio_dev *indio_dev)
+{
+       struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev);
+
+       return iio_dev_opaque->clock_id;
+}
+EXPORT_SYMBOL(iio_device_get_clock);
+
 /**
  * iio_get_time_ns() - utility function to get a time stamp for events etc
  * @indio_dev: device
 
  * @legacy_scan_el_group:      attribute group for legacy scan elements attribute group
  * @legacy_buffer_group:       attribute group for legacy buffer attributes group
  * @scan_index_timestamp:      cache of the index to the timestamp
+ * @clock_id:                  timestamping clock posix identifier
  * @chrdev:                    associated character device
  * @flags:                     file ops related flags including busy flag.
  * @debugfs_dentry:            device specific debugfs dentry
        struct attribute_group          legacy_buffer_group;
 
        unsigned int                    scan_index_timestamp;
+       clockid_t                       clock_id;
        struct cdev                     chrdev;
        unsigned long                   flags;
 
 
  * @name:              [DRIVER] name of the device.
  * @label:              [DRIVER] unique name to identify which device this is
  * @info:              [DRIVER] callbacks and constant info from driver
- * @clock_id:          [INTERN] timestamping clock posix identifier
  * @setup_ops:         [DRIVER] callbacks to call before and after buffer
  *                     enable/disable
  * @priv:              [DRIVER] reference to driver's private information
        const char                      *name;
        const char                      *label;
        const struct iio_info           *info;
-       clockid_t                       clock_id;
        const struct iio_buffer_setup_ops       *setup_ops;
 
        void                            *priv;
                put_device(&indio_dev->dev);
 }
 
-/**
- * iio_device_get_clock() - Retrieve current timestamping clock for the device
- * @indio_dev: IIO device structure containing the device
- */
-static inline clockid_t iio_device_get_clock(const struct iio_dev *indio_dev)
-{
-       return indio_dev->clock_id;
-}
-
+clockid_t iio_device_get_clock(const struct iio_dev *indio_dev);
 int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id);
 
 /**