Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
[firefly-linux-kernel-4.4.55.git] / drivers / macintosh / windfarm.h
index 7a2482cc26a7a09af070916482c0bf51bee1747a..028cdac2d33d3f9bf6146dc24b329fa4237c785e 100644 (file)
@@ -17,7 +17,7 @@
 #include <linux/device.h>
 
 /* Display a 16.16 fixed point value */
-#define FIX32TOPRINT(f)        ((f) >> 16),((((f) & 0xffff) * 1000) >> 16)
+#define FIX32TOPRINT(f)        (((s32)(f)) >> 16),(((((s32)(f)) & 0xffff) * 1000) >> 16)
 
 /*
  * Control objects
@@ -35,12 +35,13 @@ struct wf_control_ops {
 };
 
 struct wf_control {
-       struct list_head        link;
-       struct wf_control_ops   *ops;
-       char                    *name;
-       int                     type;
-       struct kref             ref;
-       struct device_attribute attr;
+       struct list_head                link;
+       const struct wf_control_ops     *ops;
+       const char                      *name;
+       int                             type;
+       struct kref                     ref;
+       struct device_attribute         attr;
+       void                            *priv;
 };
 
 #define WF_CONTROL_TYPE_GENERIC                0
@@ -72,6 +73,26 @@ static inline int wf_control_set_min(struct wf_control *ct)
        return ct->ops->set_value(ct, vmin);
 }
 
+static inline int wf_control_set(struct wf_control *ct, s32 val)
+{
+       return ct->ops->set_value(ct, val);
+}
+
+static inline int wf_control_get(struct wf_control *ct, s32 *val)
+{
+       return ct->ops->get_value(ct, val);
+}
+
+static inline s32 wf_control_get_min(struct wf_control *ct)
+{
+       return ct->ops->get_min(ct);
+}
+
+static inline s32 wf_control_get_max(struct wf_control *ct)
+{
+       return ct->ops->get_max(ct);
+}
+
 /*
  * Sensor objects
  */
@@ -85,11 +106,12 @@ struct wf_sensor_ops {
 };
 
 struct wf_sensor {
-       struct list_head        link;
-       struct wf_sensor_ops    *ops;
-       char                    *name;
-       struct kref             ref;
-       struct device_attribute attr;
+       struct list_head                link;
+       const struct wf_sensor_ops      *ops;
+       const char                      *name;
+       struct kref                     ref;
+       struct device_attribute         attr;
+       void                            *priv;
 };
 
 /* Same lifetime rules as controls */
@@ -99,6 +121,11 @@ extern struct wf_sensor * wf_find_sensor(const char *name);
 extern int wf_get_sensor(struct wf_sensor *sr);
 extern void wf_put_sensor(struct wf_sensor *sr);
 
+static inline int wf_sensor_get(struct wf_sensor *sr, s32 *val)
+{
+       return sr->ops->get_value(sr, val);
+}
+
 /* For use by clients. Note that we are a bit racy here since
  * notifier_block doesn't have a module owner field. I may fix
  * it one day ...