#include <linux/auxiliary_bus.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/of_device.h>
#include <linux/property.h>
#include <linux/soc/qcom/pdr.h>
#include <linux/usb/typec_mux.h>
#include <linux/gpio/consumer.h>
#include <linux/soc/qcom/pmic_glink.h>
#include "ucsi.h"
#define PMIC_GLINK_MAX_PORTS …
#define UCSI_BUF_SIZE …
#define MSG_TYPE_REQ_RESP …
#define UCSI_BUF_SIZE …
#define UC_NOTIFY_RECEIVER_UCSI …
#define UC_UCSI_READ_BUF_REQ …
#define UC_UCSI_WRITE_BUF_REQ …
#define UC_UCSI_USBC_NOTIFY_IND …
struct ucsi_read_buf_req_msg { … };
struct ucsi_read_buf_resp_msg { … };
struct ucsi_write_buf_req_msg { … };
struct ucsi_write_buf_resp_msg { … };
struct ucsi_notify_ind_msg { … };
struct pmic_glink_ucsi { … };
static int pmic_glink_ucsi_read(struct ucsi *__ucsi, unsigned int offset,
void *val, size_t val_len)
{ … }
static int pmic_glink_ucsi_read_version(struct ucsi *ucsi, u16 *version)
{ … }
static int pmic_glink_ucsi_read_cci(struct ucsi *ucsi, u32 *cci)
{ … }
static int pmic_glink_ucsi_read_message_in(struct ucsi *ucsi, void *val, size_t val_len)
{ … }
static int pmic_glink_ucsi_locked_write(struct pmic_glink_ucsi *ucsi, unsigned int offset,
const void *val, size_t val_len)
{ … }
static int pmic_glink_ucsi_async_control(struct ucsi *__ucsi, u64 command)
{ … }
static void pmic_glink_ucsi_update_connector(struct ucsi_connector *con)
{ … }
static void pmic_glink_ucsi_connector_status(struct ucsi_connector *con)
{ … }
static const struct ucsi_operations pmic_glink_ucsi_ops = …;
static void pmic_glink_ucsi_read_ack(struct pmic_glink_ucsi *ucsi, const void *data, int len)
{ … }
static void pmic_glink_ucsi_write_ack(struct pmic_glink_ucsi *ucsi, const void *data, int len)
{ … }
static void pmic_glink_ucsi_notify(struct work_struct *work)
{ … }
static void pmic_glink_ucsi_register(struct work_struct *work)
{ … }
static void pmic_glink_ucsi_callback(const void *data, size_t len, void *priv)
{ … }
static void pmic_glink_ucsi_pdr_notify(void *priv, int state)
{ … }
static void pmic_glink_ucsi_destroy(void *data)
{ … }
static unsigned long quirk_sc8180x = …;
static unsigned long quirk_sc8280xp = …;
static unsigned long quirk_sm8450 = …;
static const struct of_device_id pmic_glink_ucsi_of_quirks[] = …;
static int pmic_glink_ucsi_probe(struct auxiliary_device *adev,
const struct auxiliary_device_id *id)
{ … }
static void pmic_glink_ucsi_remove(struct auxiliary_device *adev)
{ … }
static const struct auxiliary_device_id pmic_glink_ucsi_id_table[] = …;
MODULE_DEVICE_TABLE(auxiliary, pmic_glink_ucsi_id_table);
static struct auxiliary_driver pmic_glink_ucsi_driver = …;
module_auxiliary_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;