/linux/drivers/usb/typec/ucsi/ |
H A D | ucsi_glink.c | 15 #include "ucsi.h" 64 struct ucsi *ucsi; member 78 static int pmic_glink_ucsi_read(struct ucsi *__ucsi, unsigned int offset, in pmic_glink_ucsi_read() 81 struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(__ucsi); in pmic_glink_ucsi_read() local 90 mutex_lock(&ucsi->lock); in pmic_glink_ucsi_read() 91 memset(ucsi->read_buf, 0, sizeof(ucsi->read_buf)); in pmic_glink_ucsi_read() 92 reinit_completion(&ucsi->read_ack); in pmic_glink_ucsi_read() 94 ret = pmic_glink_send(ucsi->client, &req, sizeof(req)); in pmic_glink_ucsi_read() 96 dev_err(ucsi->dev, "failed to send UCSI read request: %d\n", ret); in pmic_glink_ucsi_read() 100 left = wait_for_completion_timeout(&ucsi->read_ack, 5 * HZ); in pmic_glink_ucsi_read() [all …]
|
H A D | ucsi.c | 17 #include "ucsi.h" 23 * Ideally we could use MIN_TIME_TO_RESPOND_WITH_BUSY (which is defined in UCSI 39 void ucsi_notify_common(struct ucsi *ucsi, u32 cci) in ucsi_notify_common() argument 46 ucsi_connector_change(ucsi, UCSI_CCI_CONNECTOR(cci)); in ucsi_notify_common() 49 test_and_clear_bit(ACK_PENDING, &ucsi->flags)) in ucsi_notify_common() 50 complete(&ucsi->complete); in ucsi_notify_common() 53 test_and_clear_bit(COMMAND_PENDING, &ucsi->flags)) in ucsi_notify_common() 54 complete(&ucsi->complete); in ucsi_notify_common() 58 int ucsi_sync_control_common(struct ucsi *ucsi, u64 command, u32 *cci, in ucsi_sync_control_common() argument 65 set_bit(ACK_PENDING, &ucsi->flags); in ucsi_sync_control_common() [all …]
|
H A D | debugfs.c | 3 * UCSI debugfs interface 18 #include "ucsi.h" 24 struct ucsi *ucsi = data; in ucsi_cmd() local 27 memset(&ucsi->debugfs->response, 0, sizeof(ucsi->debugfs->response)); in ucsi_cmd() 28 ucsi->debugfs->status = 0; in ucsi_cmd() 38 ret = ucsi_send_command(ucsi, val, NULL, 0); in ucsi_cmd() 53 ret = ucsi_send_command(ucsi, val, in ucsi_cmd() 54 &ucsi->debugfs->response, in ucsi_cmd() 55 sizeof(ucsi->debugfs->response)); in ucsi_cmd() 62 ucsi->debugfs->status = ret; in ucsi_cmd() [all …]
|
H A D | ucsi_stm32g0.c | 3 * UCSI driver for STMicroelectronics STM32G0 Type-C PD controller 17 #include "ucsi.h" 66 struct ucsi *ucsi; member 81 static int ucsi_stm32g0_bl_check_ack(struct ucsi *ucsi) in ucsi_stm32g0_bl_check_ack() argument 83 struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi); in ucsi_stm32g0_bl_check_ack() 118 static int ucsi_stm32g0_bl_cmd_check_ack(struct ucsi *ucsi, unsigned int cmd, bool check_ack) in ucsi_stm32g0_bl_cmd_check_ack() argument 120 struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi); in ucsi_stm32g0_bl_cmd_check_ack() 149 return ucsi_stm32g0_bl_check_ack(ucsi); in ucsi_stm32g0_bl_cmd_check_ack() 154 static int ucsi_stm32g0_bl_cmd(struct ucsi *ucsi, unsigned int cmd) in ucsi_stm32g0_bl_cmd() argument 156 return ucsi_stm32g0_bl_cmd_check_ack(ucsi, cmd, true); in ucsi_stm32g0_bl_cmd() [all …]
|
H A D | ucsi_acpi.c | 3 * UCSI ACPI driver 14 #include "ucsi.h" 22 struct ucsi *ucsi; member 45 static int ucsi_acpi_read_version(struct ucsi *ucsi, u16 *version) in ucsi_acpi_read_version() argument 47 struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi); in ucsi_acpi_read_version() 59 static int ucsi_acpi_read_cci(struct ucsi *ucsi, u32 *cci) in ucsi_acpi_read_cci() argument 61 struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi); in ucsi_acpi_read_cci() 68 static int ucsi_acpi_poll_cci(struct ucsi *ucsi, u32 *cci) in ucsi_acpi_poll_cci() argument 70 struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi); in ucsi_acpi_poll_cci() 77 return ucsi_acpi_read_cci(ucsi, cci); in ucsi_acpi_poll_cci() [all …]
|
H A D | cros_ec_ucsi.c | 3 * UCSI driver for ChromeOS EC 20 #include "ucsi.h" 23 * Maximum size in bytes of a UCSI message between AP and EC 38 struct ucsi *ucsi; member 50 static int cros_ucsi_read(struct ucsi *ucsi, unsigned int offset, void *val, in cros_ucsi_read() argument 53 struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi); in cros_ucsi_read() 74 static int cros_ucsi_read_version(struct ucsi *ucsi, u16 *version) in cros_ucsi_read_version() argument 76 return cros_ucsi_read(ucsi, UCSI_VERSION, version, sizeof(*version)); in cros_ucsi_read_version() 79 static int cros_ucsi_read_cci(struct ucsi *ucsi, u32 *cci) in cros_ucsi_read_cci() argument 81 return cros_ucsi_read(ucsi, UCSI_CCI, cci, sizeof(*cci)); in cros_ucsi_read_cci() [all …]
|
H A D | ucsi_yoga_c630.c | 23 #include "ucsi.h" 35 struct ucsi *ucsi; member 41 static int yoga_c630_ucsi_read_version(struct ucsi *ucsi, u16 *version) in yoga_c630_ucsi_read_version() argument 43 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_read_version() 50 static int yoga_c630_ucsi_read_cci(struct ucsi *ucsi, u32 *cci) in yoga_c630_ucsi_read_cci() argument 52 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_read_cci() 65 static int yoga_c630_ucsi_read_message_in(struct ucsi *ucsi, in yoga_c630_ucsi_read_message_in() argument 68 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_read_message_in() 82 static int yoga_c630_ucsi_async_control(struct ucsi *ucsi, u64 command) in yoga_c630_ucsi_async_control() argument 84 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_async_control() [all …]
|
H A D | ucsi_huawei_gaokun.c | 3 * ucsi-huawei-gaokun - A UCSI driver for HUAWEI Matebook E Go 23 #include "ucsi.h" 82 struct gaokun_ucsi *ucsi; member 96 struct ucsi *ucsi; member 106 /* For UCSI */ 108 static int gaokun_ucsi_read_version(struct ucsi *ucsi, u16 *version) in gaokun_ucsi_read_version() argument 110 struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi); in gaokun_ucsi_read_version() 117 static int gaokun_ucsi_read_cci(struct ucsi *ucsi, u32 *cci) in gaokun_ucsi_read_cci() argument 119 struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi); in gaokun_ucsi_read_cci() 132 static int gaokun_ucsi_read_message_in(struct ucsi *ucsi, in gaokun_ucsi_read_message_in() argument [all …]
|
H A D | ucsi.h | 19 struct ucsi; 24 /* UCSI offsets (Bytes) */ 32 /* UCSI versions */ 63 * struct ucsi_operations - UCSI I/O operations 64 * @read_version: Read implemented UCSI version 67 * @read_message_in: Read message data from UCSI 74 * Read and write routines for UCSI interface. @sync_write must wait for the 79 int (*read_version)(struct ucsi *ucsi, u16 *version); 80 int (*read_cci)(struct ucsi *ucsi, u32 *cci); 81 int (*poll_cci)(struct ucsi *ucsi, u32 *cci); [all …]
|
H A D | ucsi_ccg.c | 3 * UCSI driver for Cypress CCGx Type-C controller 8 * Some code borrowed from drivers/usb/typec/ucsi/ucsi_acpi.c 22 #include "ucsi.h" 128 /* Firmware for Tegra doesn't support UCSI ALT command, built 203 struct ucsi *ucsi; member 365 * Flush CCGx RESPONSE queue by acking interrupts. Above ucsi control in ucsi_ccg_init() 396 static bool ucsi_ccg_update_altmodes(struct ucsi *ucsi, in ucsi_ccg_update_altmodes() argument 401 struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi); in ucsi_ccg_update_altmodes() 563 static int ucsi_ccg_read_version(struct ucsi *ucsi, u16 *version) in ucsi_ccg_read_version() argument 565 struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi); in ucsi_ccg_read_version() [all …]
|
H A D | displayport.c | 3 * UCSI DisplayPort Alternate Mode Support 12 #include "ucsi.h" 34 * Note. Alternate mode control is optional feature in UCSI. It means that even 39 * them. That is because UCSI defines alt mode details and alt mode "overriding" 51 struct ucsi *ucsi = dp->con->ucsi; in ucsi_displayport_enter() local 70 ret = ucsi_send_command(ucsi, command, &cur, sizeof(cur)); in ucsi_displayport_enter() 72 if (ucsi->version > 0x0100) in ucsi_displayport_enter() 129 ret = ucsi_send_command(dp->con->ucsi, command, NULL, 0); in ucsi_displayport_exit() 196 return ucsi_send_command(dp->con->ucsi, command, NULL, 0); in ucsi_displayport_configure()
|
H A D | psy.c | 3 * Power Supply for UCSI 13 #include "ucsi.h" 38 struct device *dev = con->ucsi->dev; in ucsi_psy_get_scope() 45 if (con->ucsi->cap.attributes & mask) in ucsi_psy_get_scope() 165 /* UCSI can't tell b/w DCP/CDP or USB2/3x1/3x2 SDP chargers */ in ucsi_psy_get_current_max() 256 struct device *dev = con->ucsi->dev; in ucsi_register_port_psy() 262 psy_name = devm_kasprintf(dev, GFP_KERNEL, "ucsi-source-psy-%s%d", in ucsi_register_port_psy()
|
H A D | Makefile | 6 typec_ucsi-y := ucsi.o
|
H A D | trace.c | 3 #include "ucsi.h"
|
H A D | trace.h | 4 #define TRACE_SYSTEM ucsi
|
/linux/drivers/i2c/busses/ |
H A D | i2c-ccgx-ucsi.c | 3 * Instantiate UCSI device for Cypress CCGx Type-C controller. 12 #include "i2c-ccgx-ucsi.h" 21 strscpy(info.type, "ccgx-ucsi", sizeof(info.type)); in i2c_new_ccgx_ucsi() 30 MODULE_DESCRIPTION("Instantiate UCSI device for Cypress CCGx Type-C controller");
|
H A D | i2c-nvidia-gpu.c | 21 #include "i2c-ccgx-ucsi.h" 245 * Currently there is no class code defined for UCSI device over PCI 246 * so using UNKNOWN class for now and it will be updated when UCSI 250 * (initiated from UCSI i2c_client) will timeout or UCSI commands will 315 status = dev_err_probe(dev, PTR_ERR(i2cd->ccgx_client), "register UCSI failed\n"); in gpu_i2c_probe()
|
H A D | i2c-designware-pcidrv.c | 28 #include "i2c-ccgx-ucsi.h" 284 "register UCSI failed\n"); in i2c_dw_pci_probe()
|
/linux/drivers/platform/arm64/ |
H A D | huawei-gaokun-ec.c | 375 /* API for UCSI */ 378 * gaokun_ec_ucsi_read - Read UCSI data from EC 382 * Read CCI and MSGI (used by UCSI subdriver). 403 * gaokun_ec_ucsi_write - Write UCSI data to EC 407 * Write CTRL and MSGO (used by UCSI subdriver). 423 * gaokun_ec_ucsi_get_reg - Get UCSI register from EC 425 * @ureg: The gaokun ucsi register 427 * Get UCSI register data (used by UCSI subdriver). 452 * Ack pin assignment notifications (used by UCSI subdriver).
|
/linux/include/linux/platform_data/ |
H A D | huawei-gaokun-ec.h | 28 #define GAOKUN_DEV_UCSI "ucsi" 70 /* API for UCSI */
|
H A D | lenovo-yoga-c630.h | 17 #define YOGA_C630_DEV_UCSI "ucsi"
|
/linux/drivers/usb/typec/ |
H A D | Makefile | 7 obj-$(CONFIG_TYPEC_UCSI) += ucsi/
|
/linux/Documentation/devicetree/bindings/usb/ |
H A D | st,typec-stm32g0.yaml | 11 typically using the UCSI protocol over I2C, with a dedicated alert
|
/linux/Documentation/devicetree/bindings/platform/ |
H A D | huawei,gaokun-ec.yaml | 16 UCSI, USB Type-C DP Alt Mode. In addition, Huawei's implementation
|
/linux/Documentation/devicetree/bindings/connector/ |
H A D | usb-connector.yaml | 148 alternative modes (e.g. through the UCSI firmware interface). 154 alternative modes (e.g. through the UCSI firmware interface). 160 discover supported alternative modes (e.g. through the UCSI firmware
|