diff options
author | Kevin Hilman <khilman@linaro.org> | 2015-09-09 16:15:34 -0700 |
---|---|---|
committer | Kevin Hilman <khilman@linaro.org> | 2015-09-09 16:15:34 -0700 |
commit | c6e59bdac940e63cfabd40a89d342eb470b009b9 (patch) | |
tree | 84c6777a03f7eda4ef5a1bdbc75c8baa7f2f4637 /include/linux/soc/qcom/smd.h | |
parent | 312146b50781a9ed1172402e170983a5e967d55d (diff) | |
parent | 208487a8f69084992f76ef87ddd3e00e5eaf6587 (diff) |
Merge tag 'qcom-soc-for-4.3-rc2' of git://codeaurora.org/quic/kernel/agross-msm into next/late
Qualcomm ARM Based SoC Updates for 4.3-rc2
* Fix errant private access in SMEM
* Fix use of correct remote processor ID in SMD transactions
* Correct SMD fBLOCKREADINTR handling
* tag 'qcom-soc-for-4.3-rc2' of git://codeaurora.org/quic/kernel/agross-msm:
soc: qcom: smd: Correct fBLOCKREADINTR handling
soc: qcom: smd: Use correct remote processor ID
soc: qcom: smem: Fix errant private access
devicetree: soc: Add Qualcomm SMD based RPM DT binding
soc: qcom: Driver for the Qualcomm RPM over SMD
soc: qcom: Add Shared Memory Driver
soc: qcom: Add device tree binding for Shared Memory Device
drivers: qcom: Select QCOM_SCM unconditionally for QCOM_PM
soc: qcom: Add Shared Memory Manager driver
Diffstat (limited to 'include/linux/soc/qcom/smd.h')
-rw-r--r-- | include/linux/soc/qcom/smd.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/linux/soc/qcom/smd.h b/include/linux/soc/qcom/smd.h new file mode 100644 index 000000000000..d7e50aa6a4ac --- /dev/null +++ b/include/linux/soc/qcom/smd.h @@ -0,0 +1,46 @@ +#ifndef __QCOM_SMD_H__ +#define __QCOM_SMD_H__ + +#include <linux/device.h> +#include <linux/mod_devicetable.h> + +struct qcom_smd; +struct qcom_smd_channel; +struct qcom_smd_lookup; + +/** + * struct qcom_smd_device - smd device struct + * @dev: the device struct + * @channel: handle to the smd channel for this device + */ +struct qcom_smd_device { + struct device dev; + struct qcom_smd_channel *channel; +}; + +/** + * struct qcom_smd_driver - smd driver struct + * @driver: underlying device driver + * @probe: invoked when the smd channel is found + * @remove: invoked when the smd channel is closed + * @callback: invoked when an inbound message is received on the channel, + * should return 0 on success or -EBUSY if the data cannot be + * consumed at this time + */ +struct qcom_smd_driver { + struct device_driver driver; + int (*probe)(struct qcom_smd_device *dev); + void (*remove)(struct qcom_smd_device *dev); + int (*callback)(struct qcom_smd_device *, const void *, size_t); +}; + +int qcom_smd_driver_register(struct qcom_smd_driver *drv); +void qcom_smd_driver_unregister(struct qcom_smd_driver *drv); + +#define module_qcom_smd_driver(__smd_driver) \ + module_driver(__smd_driver, qcom_smd_driver_register, \ + qcom_smd_driver_unregister) + +int qcom_smd_send(struct qcom_smd_channel *channel, const void *data, int len); + +#endif |