coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
retimer.c File Reference
#include <acpi/acpigen.h>
#include <acpi/acpi_device.h>
#include <acpi/acpi_pld.h>
#include <console/console.h>
#include <device/device.h>
#include <device/path.h>
#include <drivers/usb/acpi/chip.h>
#include <gpio.h>
#include <string.h>
#include "chip.h"
#include "retimer.h"
Include dependency graph for retimer.c:

Go to the source code of this file.

Macros

#define INTEL_USB4_RETIMER_DSM_UUID   "E0053122-795B-4122-8A5E-57BE1D26ACB3"
 
#define USB4_RETIMER_ITERATION_NUM   12
 
#define USB4_RETIMER_POLL_CYCLE_MS   25
 

Functions

static const char * usb4_retimer_path_arg (const char *arg)
 
static void usb4_retimer_execute_ec_cmd (uint8_t port, uint8_t cmd, uint8_t expected_value)
 
static void enable_retimer_online_state (uint8_t port, struct acpi_gpio *power_gpio)
 
static void disable_retimer_online_state (uint8_t port, struct acpi_gpio *power_gpio)
 
static void usb4_retimer_cb_standard_query (uint8_t port, void *arg)
 
static void usb4_retimer_cb_get_power_state (uint8_t port, void *arg)
 
static void usb4_retimer_cb_set_power_state (uint8_t port, void *arg)
 
static void usb4_retimer_write_dsm (uint8_t port, const char *uuid, void(**callbacks)(uint8_t port, void *), size_t count, void *arg)
 
static void usb4_retimer_fill_ssdt (const struct device *dev)
 
static void usb4_retimer_enable (struct device *dev)
 
__weak const char * ec_retimer_fw_update_path (void)
 
__weak void ec_retimer_fw_update (uint8_t data)
 
__weak int retimer_get_index_for_typec (uint8_t typec_port)
 

Variables

static const char * usb4_retimer_scope
 
static void(* usb4_retimer_callbacks [3])(uint8_t port, void *)
 
static struct device_operations usb4_retimer_dev_ops
 
struct chip_operations drivers_intel_usb4_retimer_ops
 

Macro Definition Documentation

◆ INTEL_USB4_RETIMER_DSM_UUID

#define INTEL_USB4_RETIMER_DSM_UUID   "E0053122-795B-4122-8A5E-57BE1D26ACB3"

Definition at line 16 of file retimer.c.

◆ USB4_RETIMER_ITERATION_NUM

#define USB4_RETIMER_ITERATION_NUM   12

Definition at line 28 of file retimer.c.

◆ USB4_RETIMER_POLL_CYCLE_MS

#define USB4_RETIMER_POLL_CYCLE_MS   25

Definition at line 29 of file retimer.c.

Function Documentation

◆ disable_retimer_online_state()

static void disable_retimer_online_state ( uint8_t  port,
struct acpi_gpio power_gpio 
)
static

Definition at line 135 of file retimer.c.

References acpigen_disable_tx_gpio(), usb4_retimer_execute_ec_cmd(), USB_RETIMER_FW_UPDATE_DISCONNECT, and USB_RETIMER_FW_UPDATE_RESUME_PD.

Referenced by usb4_retimer_cb_set_power_state().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ec_retimer_fw_update()

__weak void ec_retimer_fw_update ( uint8_t  data)

Definition at line 443 of file retimer.c.

Referenced by usb4_retimer_execute_ec_cmd().

Here is the caller graph for this function:

◆ ec_retimer_fw_update_path()

__weak const char* ec_retimer_fw_update_path ( void  )

Definition at line 438 of file retimer.c.

References NULL.

Referenced by usb4_retimer_execute_ec_cmd().

Here is the caller graph for this function:

◆ enable_retimer_online_state()

static void enable_retimer_online_state ( uint8_t  port,
struct acpi_gpio power_gpio 
)
static

◆ retimer_get_index_for_typec()

__weak int retimer_get_index_for_typec ( uint8_t  typec_port)

Definition at line 458 of file retimer.c.

◆ usb4_retimer_cb_get_power_state()

static void usb4_retimer_cb_get_power_state ( uint8_t  port,
void arg 
)
static

◆ usb4_retimer_cb_set_power_state()

◆ usb4_retimer_cb_standard_query()

static void usb4_retimer_cb_standard_query ( uint8_t  port,
void arg 
)
static

Definition at line 176 of file retimer.c.

References acpigen_pop_len(), acpigen_write_if_lequal_op_int(), acpigen_write_return_singleton_buffer(), acpigen_write_to_integer(), ARG1_OP, and LOCAL1_OP.

Here is the call graph for this function:

◆ usb4_retimer_enable()

static void usb4_retimer_enable ( struct device dev)
static

Definition at line 428 of file retimer.c.

◆ usb4_retimer_execute_ec_cmd()

◆ usb4_retimer_fill_ssdt()

static void usb4_retimer_fill_ssdt ( const struct device dev)
static

Definition at line 337 of file retimer.c.

◆ usb4_retimer_path_arg()

static const char* usb4_retimer_path_arg ( const char *  arg)
static

Definition at line 19 of file retimer.c.

References arg, DEVICE_PATH_MAX, name, snprintf(), and usb4_retimer_scope.

Referenced by usb4_retimer_cb_get_power_state(), and usb4_retimer_cb_set_power_state().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ usb4_retimer_write_dsm()

static void usb4_retimer_write_dsm ( uint8_t  port,
const char *  uuid,
void(**)(uint8_t port, void *)  callbacks,
size_t  count,
void arg 
)
static

Variable Documentation

◆ drivers_intel_usb4_retimer_ops

struct chip_operations drivers_intel_usb4_retimer_ops
Initial value:
= {
.enable_dev = usb4_retimer_enable
}
static void usb4_retimer_enable(struct device *dev)
Definition: retimer.c:428

Definition at line 428 of file retimer.c.

◆ usb4_retimer_callbacks

void(* usb4_retimer_callbacks[3])(uint8_t port, void *) ( uint8_t  port,
void  
)
static
Initial value:
= {
}
static void usb4_retimer_cb_get_power_state(uint8_t port, void *arg)
Definition: retimer.c:196
static void usb4_retimer_cb_set_power_state(uint8_t port, void *arg)
Definition: retimer.c:225
static void usb4_retimer_cb_standard_query(uint8_t port, void *arg)
Definition: retimer.c:176

Definition at line 311 of file retimer.c.

◆ usb4_retimer_dev_ops

struct device_operations usb4_retimer_dev_ops
static
Initial value:
= {
.read_resources = noop_read_resources,
.set_resources = noop_set_resources,
.acpi_fill_ssdt = usb4_retimer_fill_ssdt,
}
static void usb4_retimer_fill_ssdt(const struct device *dev)
Definition: retimer.c:337
static void noop_read_resources(struct device *dev)
Standard device operations function pointers shims.
Definition: device.h:73
static void noop_set_resources(struct device *dev)
Definition: device.h:74

Definition at line 337 of file retimer.c.

◆ usb4_retimer_scope

const char* usb4_retimer_scope
static

Definition at line 18 of file retimer.c.

Referenced by usb4_retimer_path_arg().