These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / spmi / spmi.c
index 9493843..6b3da1b 100644 (file)
@@ -22,6 +22,8 @@
 #include <linux/pm_runtime.h>
 
 #include <dt-bindings/spmi/spmi.h>
+#define CREATE_TRACE_POINTS
+#include <trace/events/spmi.h>
 
 static DEFINE_IDA(ctrl_ida);
 
@@ -96,28 +98,42 @@ EXPORT_SYMBOL_GPL(spmi_device_remove);
 static inline int
 spmi_cmd(struct spmi_controller *ctrl, u8 opcode, u8 sid)
 {
+       int ret;
+
        if (!ctrl || !ctrl->cmd || ctrl->dev.type != &spmi_ctrl_type)
                return -EINVAL;
 
-       return ctrl->cmd(ctrl, opcode, sid);
+       ret = ctrl->cmd(ctrl, opcode, sid);
+       trace_spmi_cmd(opcode, sid, ret);
+       return ret;
 }
 
 static inline int spmi_read_cmd(struct spmi_controller *ctrl, u8 opcode,
                                u8 sid, u16 addr, u8 *buf, size_t len)
 {
+       int ret;
+
        if (!ctrl || !ctrl->read_cmd || ctrl->dev.type != &spmi_ctrl_type)
                return -EINVAL;
 
-       return ctrl->read_cmd(ctrl, opcode, sid, addr, buf, len);
+       trace_spmi_read_begin(opcode, sid, addr);
+       ret = ctrl->read_cmd(ctrl, opcode, sid, addr, buf, len);
+       trace_spmi_read_end(opcode, sid, addr, ret, len, buf);
+       return ret;
 }
 
 static inline int spmi_write_cmd(struct spmi_controller *ctrl, u8 opcode,
                                 u8 sid, u16 addr, const u8 *buf, size_t len)
 {
+       int ret;
+
        if (!ctrl || !ctrl->write_cmd || ctrl->dev.type != &spmi_ctrl_type)
                return -EINVAL;
 
-       return ctrl->write_cmd(ctrl, opcode, sid, addr, buf, len);
+       trace_spmi_write_begin(opcode, sid, addr, len, buf);
+       ret = ctrl->write_cmd(ctrl, opcode, sid, addr, buf, len);
+       trace_spmi_write_end(opcode, sid, addr, ret);
+       return ret;
 }
 
 /**
@@ -544,12 +560,13 @@ EXPORT_SYMBOL_GPL(spmi_controller_remove);
  * This API will register the client driver with the SPMI framework.
  * It is typically called from the driver's module-init function.
  */
-int spmi_driver_register(struct spmi_driver *sdrv)
+int __spmi_driver_register(struct spmi_driver *sdrv, struct module *owner)
 {
        sdrv->driver.bus = &spmi_bus_type;
+       sdrv->driver.owner = owner;
        return driver_register(&sdrv->driver);
 }
-EXPORT_SYMBOL_GPL(spmi_driver_register);
+EXPORT_SYMBOL_GPL(__spmi_driver_register);
 
 static void __exit spmi_exit(void)
 {