/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) in ucsi_sync_control_common() argument 64 set_bit(ACK_PENDING, &ucsi->flags); in ucsi_sync_control_common() [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 | ucsi_yoga_c630.c | 17 #include "ucsi.h" 21 struct ucsi *ucsi; member 26 static int yoga_c630_ucsi_read_version(struct ucsi *ucsi, u16 *version) in yoga_c630_ucsi_read_version() argument 28 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_read_version() 35 static int yoga_c630_ucsi_read_cci(struct ucsi *ucsi, u32 *cci) in yoga_c630_ucsi_read_cci() argument 37 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_read_cci() 50 static int yoga_c630_ucsi_read_message_in(struct ucsi *ucsi, in yoga_c630_ucsi_read_message_in() argument 53 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_read_message_in() 67 static int yoga_c630_ucsi_async_control(struct ucsi *ucsi, u64 command) in yoga_c630_ucsi_async_control() argument 69 struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi); in yoga_c630_ucsi_async_control() [all …]
|
H A D | ucsi.h | 19 struct ucsi; 24 /* UCSI offsets (Bytes) */ 32 /* UCSI versions */ 62 * struct ucsi_operations - UCSI I/O operations 63 * @read_version: Read implemented UCSI version 66 * @read_message_in: Read message data from UCSI 73 * Read and write routines for UCSI interface. @sync_write must wait for the 78 int (*read_version)(struct ucsi *ucsi, u16 *version); 79 int (*read_cci)(struct ucsi *ucsi, u32 *cci); 80 int (*poll_cci)(struct ucsi *ucsi, u32 *cci); [all …]
|
H A D | Kconfig | 9 USB Type-C Connector System Software Interface (UCSI) is a 11 control the USB Type-C ports. On UCSI system the USB Type-C ports 14 is required. UCSI is available on most of the new Intel based systems 17 UCSI specification does not define the interface method, so depending 22 The UCSI specification can be downloaded from: 23 https://www.intel.com/content/www/us/en/io/universal-serial-bus/usb-type-c-ucsi-spec.html 31 tristate "UCSI Interface Driver for Cypress CCGx" 34 This driver enables UCSI support on platforms that expose a 41 tristate "UCSI ACPI Interface Driver" 44 This driver enables UCSI suppor [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 366 * Flush CCGx RESPONSE queue by acking interrupts. Above ucsi control in ucsi_ccg_init() 397 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() 559 static int ucsi_ccg_read_version(struct ucsi *ucsi, u16 *version) in ucsi_ccg_read_version() argument 561 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 69 ret = ucsi_send_command(ucsi, command, &cur, sizeof(cur)); in ucsi_displayport_enter() 71 if (ucsi->version > 0x0100) in ucsi_displayport_enter() 127 ret = ucsi_send_command(dp->con->ucsi, command, NULL, 0); in ucsi_displayport_exit() 194 return ucsi_send_command(dp->con->ucsi, command, NULL, 0); in ucsi_displayport_configure()
|
H A D | Makefile | 6 typec_ucsi-y := ucsi.o
|
H A D | trace.c | 3 #include "ucsi.h"
|
/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" 283 "register UCSI failed\n"); in i2c_dw_pci_probe()
|
H A D | Makefile | 10 obj-$(CONFIG_I2C_CCGX_UCSI) += i2c-ccgx-ucsi.o
|
H A D | i2c-designware-core.h | 322 * Enable UCSI interrupt by writing 0xd at register
|
H A D | i2c-designware-master.c | 358 * In order to enable the interrupt for UCSI i.e. AMD NAVI GPU card, in amd_i2c_dw_xfer_quirk()
|
/linux/drivers/usb/typec/ |
H A D | Makefile | 7 obj-$(CONFIG_TYPEC_UCSI) += ucsi/
|
H A D | Kconfig | 51 source "drivers/usb/typec/ucsi/Kconfig"
|
/linux/include/linux/platform_data/ |
H A D | lenovo-yoga-c630.h | 17 #define YOGA_C630_DEV_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/drivers/mfd/ |
H A D | cros_ec_dev.c | 260 * UCSI provides power supply information so we don't need to separately in ec_device_probe()
|
/linux/Documentation/driver-api/usb/ |
H A D | typec.rst | 16 driver, but it may be a driver for firmware interface such as UCSI, driver for
|
/linux/drivers/platform/surface/ |
H A D | surface_aggregator_registry.c | 140 /* HID device instance 7 (SAM, TID=1, UCM UCSI HID client). */
|
/linux/drivers/pci/ |
H A D | quirks.c | 5709 * Create device link for GPUs with integrated Type-C UCSI controller 5710 * to VGA. Currently there is no class code defined for UCSI device over PCI 5711 * so using UNKNOWN class for now and it will be updated when UCSI 5715 static void quirk_gpu_usb_typec_ucsi(struct pci_dev *ucsi) in quirk_gpu_usb_typec_ucsi() argument 5717 pci_create_device_link(ucsi, 3, 0, PCI_BASE_CLASS_DISPLAY, 16); in quirk_gpu_usb_typec_ucsi()
|