drivers/soundwire/cadence_master.c
1001
struct sdw_cdns *cdns =
drivers/soundwire/cadence_master.c
1008
val = cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
drivers/soundwire/cadence_master.c
1013
dev_dbg(cdns->dev, "Peripheral %d status: %d\n", i, status[i]);
drivers/soundwire/cadence_master.c
1017
mutex_lock(&cdns->status_update_lock);
drivers/soundwire/cadence_master.c
1018
ret = sdw_handle_slave_status(&cdns->bus, status);
drivers/soundwire/cadence_master.c
1019
mutex_unlock(&cdns->status_update_lock);
drivers/soundwire/cadence_master.c
1021
dev_err(cdns->dev, "%s: sdw_handle_slave_status failed: %d\n", __func__, ret);
drivers/soundwire/cadence_master.c
1032
struct sdw_cdns *cdns =
drivers/soundwire/cadence_master.c
1043
cdns_writel(cdns, CDNS_MCP_INTSTAT, CDNS_MCP_INT_SLAVE_MASK);
drivers/soundwire/cadence_master.c
1045
slave0 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT0);
drivers/soundwire/cadence_master.c
1046
slave1 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT1);
drivers/soundwire/cadence_master.c
1052
cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT0, slave0);
drivers/soundwire/cadence_master.c
1053
cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT1, slave1);
drivers/soundwire/cadence_master.c
1058
dev_dbg_ratelimited(cdns->dev, "Slave status change: 0x%llx\n", slave_intstat);
drivers/soundwire/cadence_master.c
1061
cdns_update_slave_status(cdns, slave_intstat);
drivers/soundwire/cadence_master.c
1085
device0_status = cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
drivers/soundwire/cadence_master.c
1090
dev_dbg_ratelimited(cdns->dev,
drivers/soundwire/cadence_master.c
1096
dev_err_ratelimited(cdns->dev,
drivers/soundwire/cadence_master.c
1103
cdns_updatel(cdns, CDNS_MCP_INTMASK,
drivers/soundwire/cadence_master.c
1109
void sdw_cdns_check_self_clearing_bits(struct sdw_cdns *cdns, const char *string,
drivers/soundwire/cadence_master.c
1120
ip_mcp_control = cdns_ip_readl(cdns, CDNS_IP_MCP_CONTROL);
drivers/soundwire/cadence_master.c
1124
dev_err(cdns->dev, "%s failed: IP_MCP_CONTROL_SW_RST is not cleared\n", string);
drivers/soundwire/cadence_master.c
1126
mcp_control = cdns_readl(cdns, CDNS_MCP_CONTROL);
drivers/soundwire/cadence_master.c
1130
dev_err(cdns->dev, "%s failed: MCP_CONTROL_CMD_RST is not cleared\n", string);
drivers/soundwire/cadence_master.c
1132
dev_err(cdns->dev, "%s failed: MCP_CONTROL_SOFT_RST is not cleared\n", string);
drivers/soundwire/cadence_master.c
1134
dev_err(cdns->dev, "%s failed: MCP_CONTROL_CLK_STOP_CLR is not cleared\n", string);
drivers/soundwire/cadence_master.c
1136
mcp_config_update = cdns_readl(cdns, CDNS_MCP_CONFIG_UPDATE);
drivers/soundwire/cadence_master.c
1138
dev_err(cdns->dev, "%s failed: MCP_CONFIG_UPDATE_BIT is not cleared\n", string);
drivers/soundwire/cadence_master.c
1143
dev_err(cdns->dev, "%s failed: MCP_CONTROL_HW_RST is not cleared\n", string);
drivers/soundwire/cadence_master.c
1147
dev_dbg(cdns->dev, "%s: MCP_CONTROL_HW_RST is not cleared at iteration %d\n", string, i);
drivers/soundwire/cadence_master.c
1151
mcp_control = cdns_readl(cdns, CDNS_MCP_CONTROL);
drivers/soundwire/cadence_master.c
1165
int sdw_cdns_exit_reset(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
1170
cdns_updatel(cdns, CDNS_MCP_CONTROL,
drivers/soundwire/cadence_master.c
1175
return cdns_config_update(cdns);
drivers/soundwire/cadence_master.c
1184
static void cdns_enable_slave_interrupts(struct sdw_cdns *cdns, bool state)
drivers/soundwire/cadence_master.c
1188
mask = cdns_readl(cdns, CDNS_MCP_INTMASK);
drivers/soundwire/cadence_master.c
1194
cdns_writel(cdns, CDNS_MCP_INTMASK, mask);
drivers/soundwire/cadence_master.c
1202
int sdw_cdns_enable_interrupt(struct sdw_cdns *cdns, bool state)
drivers/soundwire/cadence_master.c
1222
if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL)
drivers/soundwire/cadence_master.c
1242
slave_state = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT0);
drivers/soundwire/cadence_master.c
1243
cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT0, slave_state);
drivers/soundwire/cadence_master.c
1244
slave_state = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT1);
drivers/soundwire/cadence_master.c
1245
cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT1, slave_state);
drivers/soundwire/cadence_master.c
1247
cdns->interrupt_enabled = state;
drivers/soundwire/cadence_master.c
1259
cancel_work_sync(&cdns->work);
drivers/soundwire/cadence_master.c
1261
cdns_writel(cdns, CDNS_MCP_SLAVE_INTMASK0, slave_intmask0);
drivers/soundwire/cadence_master.c
1262
cdns_writel(cdns, CDNS_MCP_SLAVE_INTMASK1, slave_intmask1);
drivers/soundwire/cadence_master.c
1263
cdns_writel(cdns, CDNS_MCP_INTMASK, mask);
drivers/soundwire/cadence_master.c
1269
static int cdns_allocate_pdi(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
1279
pdi = devm_kcalloc(cdns->dev, num, sizeof(*pdi), GFP_KERNEL);
drivers/soundwire/cadence_master.c
1297
int sdw_cdns_pdi_init(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
1303
cdns->pcm.num_bd = config.pcm_bd;
drivers/soundwire/cadence_master.c
1304
cdns->pcm.num_in = config.pcm_in;
drivers/soundwire/cadence_master.c
1305
cdns->pcm.num_out = config.pcm_out;
drivers/soundwire/cadence_master.c
1308
stream = &cdns->pcm;
drivers/soundwire/cadence_master.c
1311
ret = cdns_allocate_pdi(cdns, &stream->bd, stream->num_bd);
drivers/soundwire/cadence_master.c
1315
ret = cdns_allocate_pdi(cdns, &stream->in, stream->num_in);
drivers/soundwire/cadence_master.c
1319
ret = cdns_allocate_pdi(cdns, &stream->out, stream->num_out);
drivers/soundwire/cadence_master.c
1325
cdns->num_ports = stream->num_pdi;
drivers/soundwire/cadence_master.c
1346
static int cdns_init_clock_ctrl(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
1348
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/cadence_master.c
1354
dev_dbg(cdns->dev, "mclk %d max %d row %d col %d\n",
drivers/soundwire/cadence_master.c
1361
dev_err(cdns->dev, "Default frame_rate %d or row %d is invalid\n",
drivers/soundwire/cadence_master.c
1370
cdns_updatel(cdns, CDNS_MCP_CLK_CTRL0,
drivers/soundwire/cadence_master.c
1372
cdns_updatel(cdns, CDNS_MCP_CLK_CTRL1,
drivers/soundwire/cadence_master.c
1385
cdns_writel(cdns, CDNS_MCP_FRAME_SHAPE_INIT, val);
drivers/soundwire/cadence_master.c
1389
cdns_writel(cdns, CDNS_MCP_SSP_CTRL0, ssp_interval);
drivers/soundwire/cadence_master.c
1390
cdns_writel(cdns, CDNS_MCP_SSP_CTRL1, ssp_interval);
drivers/soundwire/cadence_master.c
1399
int sdw_cdns_soft_reset(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
1403
cdns_updatel(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_SOFT_RST,
drivers/soundwire/cadence_master.c
1406
ret = cdns_config_update(cdns);
drivers/soundwire/cadence_master.c
1408
dev_err(cdns->dev, "%s: config update failed\n", __func__);
drivers/soundwire/cadence_master.c
1412
ret = cdns_set_wait(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_SOFT_RST, 0);
drivers/soundwire/cadence_master.c
1414
dev_err(cdns->dev, "%s: Soft Reset timed out\n", __func__);
drivers/soundwire/cadence_master.c
1424
int sdw_cdns_init(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
1429
ret = cdns_init_clock_ctrl(cdns);
drivers/soundwire/cadence_master.c
1433
sdw_cdns_check_self_clearing_bits(cdns, __func__, false, 0);
drivers/soundwire/cadence_master.c
1436
cdns->msg_count = cdns_readl(cdns, CDNS_MCP_FIFOLEVEL);
drivers/soundwire/cadence_master.c
1439
cdns_updatel(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_CMD_RST,
drivers/soundwire/cadence_master.c
1443
cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL, CDNS_IP_MCP_CONTROL_CMD_ACCEPT,
drivers/soundwire/cadence_master.c
1447
cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL,
drivers/soundwire/cadence_master.c
1452
val = cdns_readl(cdns, CDNS_MCP_CONFIG);
drivers/soundwire/cadence_master.c
1457
cdns_writel(cdns, CDNS_MCP_CONFIG, val);
drivers/soundwire/cadence_master.c
1460
val = cdns_ip_readl(cdns, CDNS_IP_MCP_CONFIG);
drivers/soundwire/cadence_master.c
1472
if (cdns->bus.multi_link)
drivers/soundwire/cadence_master.c
1480
cdns_ip_writel(cdns, CDNS_IP_MCP_CONFIG, val);
drivers/soundwire/cadence_master.c
1490
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/cadence_master.c
1495
dev_err(cdns->dev, "NULL curr_dr_freq\n");
drivers/soundwire/cadence_master.c
1508
cdns_updatel(cdns, mcp_clkctrl_off, CDNS_MCP_CLK_MCLKD_MASK, divider);
drivers/soundwire/cadence_master.c
1517
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/cadence_master.c
1525
if (target_num == cdns->pdi_loopback_target &&
drivers/soundwire/cadence_master.c
1526
cdns->pdi_loopback_source != -1) {
drivers/soundwire/cadence_master.c
1527
source_num = cdns->pdi_loopback_source;
drivers/soundwire/cadence_master.c
1539
dpn_config = cdns_readl(cdns, dpn_config_off_source);
drivers/soundwire/cadence_master.c
1548
cdns_writel(cdns, dpn_config_off_target, dpn_config);
drivers/soundwire/cadence_master.c
1557
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/cadence_master.c
1574
if (target_num == cdns->pdi_loopback_target &&
drivers/soundwire/cadence_master.c
1575
cdns->pdi_loopback_source != -1) {
drivers/soundwire/cadence_master.c
1576
source_num = cdns->pdi_loopback_source;
drivers/soundwire/cadence_master.c
1608
dpn_config = cdns_readl(cdns, dpn_config_off_source);
drivers/soundwire/cadence_master.c
1613
cdns_writel(cdns, dpn_config_off_target, dpn_config);
drivers/soundwire/cadence_master.c
1620
dpn_offsetctrl = cdns_readl(cdns, dpn_offsetctrl_off_source);
drivers/soundwire/cadence_master.c
1622
cdns_writel(cdns, dpn_offsetctrl_off_target, dpn_offsetctrl);
drivers/soundwire/cadence_master.c
1630
dpn_hctrl = cdns_readl(cdns, dpn_hctrl_off_source);
drivers/soundwire/cadence_master.c
1632
cdns_writel(cdns, dpn_hctrl_off_target, dpn_hctrl);
drivers/soundwire/cadence_master.c
1637
dpn_samplectrl = cdns_readl(cdns, dpn_samplectrl_off_source);
drivers/soundwire/cadence_master.c
1638
cdns_writel(cdns, dpn_samplectrl_off_target, dpn_samplectrl);
drivers/soundwire/cadence_master.c
1646
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/cadence_master.c
1655
cdns_writel(cdns, dpn_chnen_off, ch_mask);
drivers/soundwire/cadence_master.c
1671
bool sdw_cdns_is_clock_stop(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
1673
return !!(cdns_readl(cdns, CDNS_MCP_STAT) & CDNS_MCP_STAT_CLK_STOP);
drivers/soundwire/cadence_master.c
1683
int sdw_cdns_clock_stop(struct sdw_cdns *cdns, bool block_wake)
drivers/soundwire/cadence_master.c
1689
sdw_cdns_check_self_clearing_bits(cdns, __func__, false, 0);
drivers/soundwire/cadence_master.c
1692
if (sdw_cdns_is_clock_stop(cdns)) {
drivers/soundwire/cadence_master.c
1693
dev_dbg(cdns->dev, "Clock is already stopped\n");
drivers/soundwire/cadence_master.c
1702
cdns_enable_slave_interrupts(cdns, false);
drivers/soundwire/cadence_master.c
1710
cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL,
drivers/soundwire/cadence_master.c
1714
list_for_each_entry(slave, &cdns->bus.slaves, node) {
drivers/soundwire/cadence_master.c
1723
ret = cdns_config_update(cdns);
drivers/soundwire/cadence_master.c
1725
dev_err(cdns->dev, "%s: config_update failed\n", __func__);
drivers/soundwire/cadence_master.c
1731
ret = sdw_bus_prep_clk_stop(&cdns->bus);
drivers/soundwire/cadence_master.c
1733
dev_err(cdns->dev, "prepare clock stop failed %d\n", ret);
drivers/soundwire/cadence_master.c
1742
ret = sdw_bus_clk_stop(&cdns->bus);
drivers/soundwire/cadence_master.c
1744
dev_err(cdns->dev, "bus clock stop failed %d\n", ret);
drivers/soundwire/cadence_master.c
1748
ret = cdns_set_wait(cdns, CDNS_MCP_STAT,
drivers/soundwire/cadence_master.c
1752
dev_err(cdns->dev, "Clock stop failed %d\n", ret);
drivers/soundwire/cadence_master.c
1765
int sdw_cdns_clock_restart(struct sdw_cdns *cdns, bool bus_reset)
drivers/soundwire/cadence_master.c
1770
cdns_enable_slave_interrupts(cdns, true);
drivers/soundwire/cadence_master.c
1772
ret = cdns_clear_bit(cdns, CDNS_MCP_CONTROL,
drivers/soundwire/cadence_master.c
1775
dev_err(cdns->dev, "Couldn't exit from clock stop\n");
drivers/soundwire/cadence_master.c
1779
ret = cdns_set_wait(cdns, CDNS_MCP_STAT, CDNS_MCP_STAT_CLK_STOP, 0);
drivers/soundwire/cadence_master.c
1781
dev_err(cdns->dev, "clock stop exit failed %d\n", ret);
drivers/soundwire/cadence_master.c
1785
cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL,
drivers/soundwire/cadence_master.c
1788
cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL, CDNS_IP_MCP_CONTROL_CMD_ACCEPT,
drivers/soundwire/cadence_master.c
1794
cdns_ip_updatel(cdns, CDNS_IP_MCP_CONFIG,
drivers/soundwire/cadence_master.c
1798
ret = cdns_config_update(cdns);
drivers/soundwire/cadence_master.c
1800
dev_err(cdns->dev, "%s: config_update failed\n", __func__);
drivers/soundwire/cadence_master.c
1804
ret = sdw_bus_exit_clk_stop(&cdns->bus);
drivers/soundwire/cadence_master.c
1806
dev_err(cdns->dev, "bus failed to exit clock stop %d\n", ret);
drivers/soundwire/cadence_master.c
1817
int sdw_cdns_probe(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
1819
init_completion(&cdns->tx_complete);
drivers/soundwire/cadence_master.c
1820
cdns->bus.port_ops = &cdns_port_ops;
drivers/soundwire/cadence_master.c
1822
mutex_init(&cdns->status_update_lock);
drivers/soundwire/cadence_master.c
1824
INIT_WORK(&cdns->work, cdns_update_slave_status_work);
drivers/soundwire/cadence_master.c
1825
INIT_DELAYED_WORK(&cdns->attach_dwork, cdns_check_attached_status_dwork);
drivers/soundwire/cadence_master.c
1834
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/cadence_master.c
1837
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/cadence_master.c
1855
dai_runtime->bus = &cdns->bus;
drivers/soundwire/cadence_master.c
1856
dai_runtime->link_id = cdns->instance;
drivers/soundwire/cadence_master.c
1861
cdns->dai_runtime_array[dai->id] = dai_runtime;
drivers/soundwire/cadence_master.c
1873
cdns->dai_runtime_array[dai->id] = NULL;
drivers/soundwire/cadence_master.c
1890
static struct sdw_cdns_pdi *cdns_find_pdi(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
1912
void sdw_cdns_config_stream(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
1920
if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL)
drivers/soundwire/cadence_master.c
1926
cdns_updatel(cdns, offset,
drivers/soundwire/cadence_master.c
1938
cdns_writel(cdns, CDNS_PDI_CONFIG(pdi->num), val);
drivers/soundwire/cadence_master.c
1951
struct sdw_cdns_pdi *sdw_cdns_alloc_pdi(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
1958
pdi = cdns_find_pdi(cdns, stream->num_in, stream->in,
drivers/soundwire/cadence_master.c
1961
pdi = cdns_find_pdi(cdns, stream->num_out, stream->out,
drivers/soundwire/cadence_master.c
1966
pdi = cdns_find_pdi(cdns, stream->num_bd, stream->bd,
drivers/soundwire/cadence_master.c
206
static inline u32 cdns_readl(struct sdw_cdns *cdns, int offset)
drivers/soundwire/cadence_master.c
208
return readl(cdns->registers + offset);
drivers/soundwire/cadence_master.c
211
static inline void cdns_writel(struct sdw_cdns *cdns, int offset, u32 value)
drivers/soundwire/cadence_master.c
213
writel(value, cdns->registers + offset);
drivers/soundwire/cadence_master.c
216
static inline u32 cdns_ip_readl(struct sdw_cdns *cdns, int offset)
drivers/soundwire/cadence_master.c
218
return cdns_readl(cdns, cdns->ip_offset + offset);
drivers/soundwire/cadence_master.c
221
static inline void cdns_ip_writel(struct sdw_cdns *cdns, int offset, u32 value)
drivers/soundwire/cadence_master.c
223
return cdns_writel(cdns, cdns->ip_offset + offset, value);
drivers/soundwire/cadence_master.c
226
static inline void cdns_updatel(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
231
tmp = cdns_readl(cdns, offset);
drivers/soundwire/cadence_master.c
233
cdns_writel(cdns, offset, tmp);
drivers/soundwire/cadence_master.c
236
static inline void cdns_ip_updatel(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
239
cdns_updatel(cdns, cdns->ip_offset + offset, mask, val);
drivers/soundwire/cadence_master.c
242
static int cdns_set_wait(struct sdw_cdns *cdns, int offset, u32 mask, u32 value)
drivers/soundwire/cadence_master.c
249
reg_read = readl(cdns->registers + offset);
drivers/soundwire/cadence_master.c
260
static int cdns_clear_bit(struct sdw_cdns *cdns, int offset, u32 value)
drivers/soundwire/cadence_master.c
262
writel(value, cdns->registers + offset);
drivers/soundwire/cadence_master.c
265
return cdns_set_wait(cdns, offset, value, 0);
drivers/soundwire/cadence_master.c
272
static int cdns_config_update(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
276
if (sdw_cdns_is_clock_stop(cdns)) {
drivers/soundwire/cadence_master.c
277
dev_err(cdns->dev, "Cannot program MCP_CONFIG_UPDATE in ClockStopMode\n");
drivers/soundwire/cadence_master.c
281
ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE,
drivers/soundwire/cadence_master.c
284
dev_err(cdns->dev, "Config update timedout\n");
drivers/soundwire/cadence_master.c
293
void sdw_cdns_config_update(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
296
cdns_writel(cdns, CDNS_MCP_CONFIG_UPDATE, CDNS_MCP_CONFIG_UPDATE_BIT);
drivers/soundwire/cadence_master.c
304
int sdw_cdns_config_update_set_wait(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
307
return cdns_set_wait(cdns, CDNS_MCP_CONFIG_UPDATE,
drivers/soundwire/cadence_master.c
319
static ssize_t cdns_sprintf(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
323
"%4x\t%8x\n", reg, cdns_readl(cdns, reg));
drivers/soundwire/cadence_master.c
328
struct sdw_cdns *cdns = s->private;
drivers/soundwire/cadence_master.c
341
ret += cdns_sprintf(cdns, buf, ret, i);
drivers/soundwire/cadence_master.c
347
ret += cdns_sprintf(cdns, buf, ret, i);
drivers/soundwire/cadence_master.c
351
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL0);
drivers/soundwire/cadence_master.c
352
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL1);
drivers/soundwire/cadence_master.c
353
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL0);
drivers/soundwire/cadence_master.c
354
ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL1);
drivers/soundwire/cadence_master.c
359
num_ports = cdns->num_ports;
drivers/soundwire/cadence_master.c
366
ret += cdns_sprintf(cdns, buf, ret, j);
drivers/soundwire/cadence_master.c
377
ret += cdns_sprintf(cdns, buf, ret, j);
drivers/soundwire/cadence_master.c
383
ret += cdns_sprintf(cdns, buf, ret,
drivers/soundwire/cadence_master.c
391
ret += cdns_sprintf(cdns, buf, ret, CDNS_PDI_CONFIG(i));
drivers/soundwire/cadence_master.c
401
struct sdw_cdns *cdns = data;
drivers/soundwire/cadence_master.c
410
ret = sdw_cdns_exit_reset(cdns);
drivers/soundwire/cadence_master.c
412
dev_dbg(cdns->dev, "link hw_reset done: %d\n", ret);
drivers/soundwire/cadence_master.c
421
struct sdw_cdns *cdns = data;
drivers/soundwire/cadence_master.c
428
bus = &cdns->bus;
drivers/soundwire/cadence_master.c
436
dev_err_ratelimited(cdns->dev,
drivers/soundwire/cadence_master.c
455
cdns_ip_updatel(cdns, CDNS_IP_MCP_CMDCTRL,
drivers/soundwire/cadence_master.c
460
ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE, CDNS_MCP_CONFIG_UPDATE_BIT);
drivers/soundwire/cadence_master.c
465
ret = sdw_bread_no_pm_unlocked(&cdns->bus, 0xf, SDW_SCP_DEVID_0);
drivers/soundwire/cadence_master.c
466
dev_info(cdns->dev, "parity error injection, read: %d\n", ret);
drivers/soundwire/cadence_master.c
469
cdns_ip_updatel(cdns, CDNS_IP_MCP_CMDCTRL,
drivers/soundwire/cadence_master.c
474
ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE, CDNS_MCP_CONFIG_UPDATE_BIT);
drivers/soundwire/cadence_master.c
500
struct sdw_cdns *cdns = data;
drivers/soundwire/cadence_master.c
501
unsigned int pdi_out_num = cdns->pcm.num_bd + cdns->pcm.num_out;
drivers/soundwire/cadence_master.c
509
cdns->pdi_loopback_source = value;
drivers/soundwire/cadence_master.c
517
struct sdw_cdns *cdns = data;
drivers/soundwire/cadence_master.c
518
unsigned int pdi_in_num = cdns->pcm.num_bd + cdns->pcm.num_in;
drivers/soundwire/cadence_master.c
526
cdns->pdi_loopback_target = value;
drivers/soundwire/cadence_master.c
537
void sdw_cdns_debugfs_init(struct sdw_cdns *cdns, struct dentry *root)
drivers/soundwire/cadence_master.c
539
debugfs_create_file("cdns-registers", 0400, root, cdns, &cdns_reg_fops);
drivers/soundwire/cadence_master.c
541
debugfs_create_file("cdns-hw-reset", 0200, root, cdns,
drivers/soundwire/cadence_master.c
544
debugfs_create_file("cdns-parity-error-injection", 0200, root, cdns,
drivers/soundwire/cadence_master.c
547
cdns->pdi_loopback_source = -1;
drivers/soundwire/cadence_master.c
548
cdns->pdi_loopback_target = -1;
drivers/soundwire/cadence_master.c
550
debugfs_create_file("cdns-pdi-loopback-source", 0200, root, cdns,
drivers/soundwire/cadence_master.c
553
debugfs_create_file("cdns-pdi-loopback-target", 0200, root, cdns,
drivers/soundwire/cadence_master.c
565
cdns_fill_msg_resp(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
573
if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) {
drivers/soundwire/cadence_master.c
575
dev_vdbg(cdns->dev, "Msg Ack not received, cmd %d\n", i);
drivers/soundwire/cadence_master.c
577
if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) {
drivers/soundwire/cadence_master.c
579
dev_err_ratelimited(cdns->dev, "Msg NACK received, cmd %d\n", i);
drivers/soundwire/cadence_master.c
584
dev_err_ratelimited(cdns->dev, "Msg NACKed for Slave %d\n", msg->dev_num);
drivers/soundwire/cadence_master.c
589
dev_dbg_ratelimited(cdns->dev, "Msg ignored for Slave %d\n", msg->dev_num);
drivers/soundwire/cadence_master.c
597
cdns->response_buf[i]);
drivers/soundwire/cadence_master.c
603
static void cdns_read_response(struct sdw_cdns *cdns)
drivers/soundwire/cadence_master.c
609
BUILD_BUG_ON(ARRAY_SIZE(cdns->response_buf) < CDNS_MCP_CMD_LEN + 2);
drivers/soundwire/cadence_master.c
611
num_resp = cdns_readl(cdns, CDNS_MCP_FIFOSTAT);
drivers/soundwire/cadence_master.c
613
if (num_resp > ARRAY_SIZE(cdns->response_buf)) {
drivers/soundwire/cadence_master.c
614
dev_warn(cdns->dev, "RX AVAIL %d too long\n", num_resp);
drivers/soundwire/cadence_master.c
615
num_resp = ARRAY_SIZE(cdns->response_buf);
drivers/soundwire/cadence_master.c
621
cdns->response_buf[i] = cdns_ip_readl(cdns, cmd_base);
drivers/soundwire/cadence_master.c
627
_cdns_xfer_msg(struct sdw_cdns *cdns, struct sdw_msg *msg, int cmd,
drivers/soundwire/cadence_master.c
635
if (cdns->msg_count != count) {
drivers/soundwire/cadence_master.c
636
cdns_writel(cdns, CDNS_MCP_FIFOLEVEL, count);
drivers/soundwire/cadence_master.c
637
cdns->msg_count = count;
drivers/soundwire/cadence_master.c
653
cdns_ip_writel(cdns, base, data);
drivers/soundwire/cadence_master.c
661
time = wait_for_completion_timeout(&cdns->tx_complete,
drivers/soundwire/cadence_master.c
664
dev_err(cdns->dev, "IO transfer timed out, cmd %d device %d addr %x len %d\n",
drivers/soundwire/cadence_master.c
669
cdns_read_response(cdns);
drivers/soundwire/cadence_master.c
674
return cdns_fill_msg_resp(cdns, msg, count, offset);
drivers/soundwire/cadence_master.c
678
cdns_program_scp_addr(struct sdw_cdns *cdns, struct sdw_msg *msg)
drivers/soundwire/cadence_master.c
686
if (cdns->msg_count != CDNS_SCP_RX_FIFOLEVEL) {
drivers/soundwire/cadence_master.c
687
cdns_writel(cdns, CDNS_MCP_FIFOLEVEL, CDNS_SCP_RX_FIFOLEVEL);
drivers/soundwire/cadence_master.c
688
cdns->msg_count = CDNS_SCP_RX_FIFOLEVEL;
drivers/soundwire/cadence_master.c
702
cdns_ip_writel(cdns, base, data[0]);
drivers/soundwire/cadence_master.c
704
cdns_ip_writel(cdns, base, data[1]);
drivers/soundwire/cadence_master.c
706
time = wait_for_completion_timeout(&cdns->tx_complete,
drivers/soundwire/cadence_master.c
709
dev_err(cdns->dev, "SCP Msg trf timed out\n");
drivers/soundwire/cadence_master.c
716
if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) {
drivers/soundwire/cadence_master.c
718
dev_err(cdns->dev, "Program SCP Ack not received\n");
drivers/soundwire/cadence_master.c
719
if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) {
drivers/soundwire/cadence_master.c
721
dev_err(cdns->dev, "Program SCP NACK received\n");
drivers/soundwire/cadence_master.c
728
dev_err_ratelimited(cdns->dev,
drivers/soundwire/cadence_master.c
734
dev_dbg_ratelimited(cdns->dev,
drivers/soundwire/cadence_master.c
742
static int cdns_prep_msg(struct sdw_cdns *cdns, struct sdw_msg *msg, int *cmd)
drivers/soundwire/cadence_master.c
747
ret = cdns_program_scp_addr(cdns, msg);
drivers/soundwire/cadence_master.c
764
dev_err(cdns->dev, "Invalid msg cmd: %d\n", msg->flags);
drivers/soundwire/cadence_master.c
774
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/cadence_master.c
777
ret = cdns_prep_msg(cdns, msg, &cmd);
drivers/soundwire/cadence_master.c
782
ret = _cdns_xfer_msg(cdns, msg, cmd, i * CDNS_MCP_CMD_LEN,
drivers/soundwire/cadence_master.c
791
return _cdns_xfer_msg(cdns, msg, cmd, i * CDNS_MCP_CMD_LEN,
drivers/soundwire/cadence_master.c
799
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/cadence_master.c
808
ret = cdns_prep_msg(cdns, msg, &cmd);
drivers/soundwire/cadence_master.c
812
return _cdns_xfer_msg(cdns, msg, cmd, 0, msg->len, true);
drivers/soundwire/cadence_master.c
818
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/cadence_master.c
820
return cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
drivers/soundwire/cadence_master.c
828
static int cdns_update_slave_status(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.c
874
val = cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
drivers/soundwire/cadence_master.c
898
mutex_lock(&cdns->status_update_lock);
drivers/soundwire/cadence_master.c
899
ret = sdw_handle_slave_status(&cdns->bus, status);
drivers/soundwire/cadence_master.c
900
mutex_unlock(&cdns->status_update_lock);
drivers/soundwire/cadence_master.c
914
struct sdw_cdns *cdns = dev_id;
drivers/soundwire/cadence_master.c
918
if (!cdns->link_up)
drivers/soundwire/cadence_master.c
921
int_status = cdns_readl(cdns, CDNS_MCP_INTSTAT);
drivers/soundwire/cadence_master.c
931
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/cadence_master.c
934
cdns_read_response(cdns);
drivers/soundwire/cadence_master.c
937
cdns_fill_msg_resp(cdns, defer->msg,
drivers/soundwire/cadence_master.c
941
complete(&cdns->tx_complete);
drivers/soundwire/cadence_master.c
947
dev_err_ratelimited(cdns->dev, "Parity error\n");
drivers/soundwire/cadence_master.c
952
dev_err_ratelimited(cdns->dev, "Bus clash for control word\n");
drivers/soundwire/cadence_master.c
960
dev_err_ratelimited(cdns->dev, "Bus clash for data word\n");
drivers/soundwire/cadence_master.c
963
if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL &&
drivers/soundwire/cadence_master.c
968
port_intstat = cdns_readl(cdns, CDNS_MCP_PORT_INTSTAT);
drivers/soundwire/cadence_master.c
969
dev_err_ratelimited(cdns->dev, "DP interrupt: PortIntStat %8x\n",
drivers/soundwire/cadence_master.c
973
cdns_writel(cdns, CDNS_MCP_PORT_INTSTAT, port_intstat);
drivers/soundwire/cadence_master.c
978
cdns_updatel(cdns, CDNS_MCP_INTMASK,
drivers/soundwire/cadence_master.c
990
if (cdns->interrupt_enabled)
drivers/soundwire/cadence_master.c
991
schedule_work(&cdns->work);
drivers/soundwire/cadence_master.c
994
cdns_writel(cdns, CDNS_MCP_INTSTAT, int_status);
drivers/soundwire/cadence_master.h
167
int sdw_cdns_probe(struct sdw_cdns *cdns);
drivers/soundwire/cadence_master.h
172
int sdw_cdns_soft_reset(struct sdw_cdns *cdns);
drivers/soundwire/cadence_master.h
173
int sdw_cdns_init(struct sdw_cdns *cdns);
drivers/soundwire/cadence_master.h
174
int sdw_cdns_pdi_init(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.h
176
int sdw_cdns_exit_reset(struct sdw_cdns *cdns);
drivers/soundwire/cadence_master.h
177
int sdw_cdns_enable_interrupt(struct sdw_cdns *cdns, bool state);
drivers/soundwire/cadence_master.h
179
bool sdw_cdns_is_clock_stop(struct sdw_cdns *cdns);
drivers/soundwire/cadence_master.h
180
int sdw_cdns_clock_stop(struct sdw_cdns *cdns, bool block_wake);
drivers/soundwire/cadence_master.h
181
int sdw_cdns_clock_restart(struct sdw_cdns *cdns, bool bus_reset);
drivers/soundwire/cadence_master.h
184
void sdw_cdns_debugfs_init(struct sdw_cdns *cdns, struct dentry *root);
drivers/soundwire/cadence_master.h
187
struct sdw_cdns_pdi *sdw_cdns_alloc_pdi(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.h
190
void sdw_cdns_config_stream(struct sdw_cdns *cdns,
drivers/soundwire/cadence_master.h
206
void sdw_cdns_check_self_clearing_bits(struct sdw_cdns *cdns, const char *string,
drivers/soundwire/cadence_master.h
209
void sdw_cdns_config_update(struct sdw_cdns *cdns);
drivers/soundwire/cadence_master.h
210
int sdw_cdns_config_update_set_wait(struct sdw_cdns *cdns);
drivers/soundwire/intel.c
1009
dais[i].name = devm_kasprintf(cdns->dev, GFP_KERNEL,
drivers/soundwire/intel.c
1011
cdns->instance, i);
drivers/soundwire/intel.c
1035
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel.c
1042
ret = sdw_cdns_pdi_init(cdns, config);
drivers/soundwire/intel.c
1046
intel_pdi_stream_ch_update(sdw, &sdw->cdns.pcm);
drivers/soundwire/intel.c
1049
num_dai = cdns->pcm.num_pdi;
drivers/soundwire/intel.c
1051
dai_runtime_array = devm_kcalloc(cdns->dev, num_dai,
drivers/soundwire/intel.c
1056
cdns->dai_runtime_array = dai_runtime_array;
drivers/soundwire/intel.c
1058
dais = devm_kcalloc(cdns->dev, num_dai, sizeof(*dais), GFP_KERNEL);
drivers/soundwire/intel.c
1063
stream = &cdns->pcm;
drivers/soundwire/intel.c
1065
ret = intel_create_dai(cdns, dais, INTEL_PDI_IN, cdns->pcm.num_in,
drivers/soundwire/intel.c
1070
off += cdns->pcm.num_in;
drivers/soundwire/intel.c
1071
ret = intel_create_dai(cdns, dais, INTEL_PDI_OUT, cdns->pcm.num_out,
drivers/soundwire/intel.c
1076
off += cdns->pcm.num_out;
drivers/soundwire/intel.c
1077
ret = intel_create_dai(cdns, dais, INTEL_PDI_BD, cdns->pcm.num_bd,
drivers/soundwire/intel.c
1082
return devm_snd_soc_register_component(cdns->dev, &dai_component,
drivers/soundwire/intel.c
140
struct sdw_bus *bus = &sdw->cdns.bus;
drivers/soundwire/intel.c
158
struct sdw_bus *bus = &sdw->cdns.bus;
drivers/soundwire/intel.c
175
struct dentry *root = sdw->cdns.bus.debugfs;
drivers/soundwire/intel.c
191
sdw_cdns_debugfs_init(&sdw->cdns, sdw->debugfs);
drivers/soundwire/intel.c
342
struct sdw_bus *bus = &sdw->cdns.bus;
drivers/soundwire/intel.c
373
dev_err(sdw->cdns.dev, "%s: invalid clock configuration, mclk %d lcap_mlcs %d\n",
drivers/soundwire/intel.c
393
dev_dbg(sdw->cdns.dev, "powering up all links\n");
drivers/soundwire/intel.c
396
dev_dbg(sdw->cdns.dev,
drivers/soundwire/intel.c
418
dev_err(sdw->cdns.dev, "Failed to power up link: %d\n", ret);
drivers/soundwire/intel.c
426
dev_err(sdw->cdns.dev,
drivers/soundwire/intel.c
441
sdw->cdns.link_up = true;
drivers/soundwire/intel.c
462
dev_err(sdw->cdns.dev,
drivers/soundwire/intel.c
465
sdw->cdns.link_up = false;
drivers/soundwire/intel.c
473
dev_dbg(sdw->cdns.dev, "powering down all links\n");
drivers/soundwire/intel.c
486
dev_err(sdw->cdns.dev, "%s: could not power down link\n", __func__);
drivers/soundwire/intel.c
565
dev_dbg(sdw->cdns.dev, "PCM cap bd:%d in:%d out:%d\n",
drivers/soundwire/intel.c
724
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel.c
725
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel.c
732
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel.c
742
pdi = sdw_cdns_alloc_pdi(cdns, &cdns->pcm, ch, dir, dai->id);
drivers/soundwire/intel.c
750
sdw_cdns_config_stream(cdns, ch, dir, pdi);
drivers/soundwire/intel.c
779
ret = sdw_stream_add_master(&cdns->bus, &sconfig,
drivers/soundwire/intel.c
782
dev_err(cdns->dev, "add master to stream failed:%d\n", ret);
drivers/soundwire/intel.c
790
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel.c
791
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel.c
796
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel.c
828
sdw_cdns_config_stream(cdns, ch, dir, dai_runtime->pdi);
drivers/soundwire/intel.c
843
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel.c
844
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel.c
848
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel.c
858
ret = sdw_stream_remove_master(&cdns->bus, dai_runtime->stream);
drivers/soundwire/intel.c
885
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel.c
888
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel.c
897
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel.c
901
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel.c
964
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel.c
967
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel.c
998
static int intel_create_dai(struct sdw_cdns *cdns,
drivers/soundwire/intel.h
127
#define cdns_to_intel(_cdns) container_of(_cdns, struct sdw_intel, cdns)
drivers/soundwire/intel.h
48
struct sdw_cdns *cdns;
drivers/soundwire/intel.h
76
struct sdw_cdns cdns;
drivers/soundwire/intel_ace2x.c
100
dev_err(cdns->dev, "%s: sdw_cdns_alloc_pdi0 failed\n", __func__);
drivers/soundwire/intel_ace2x.c
1002
dais[i].name = devm_kasprintf(cdns->dev, GFP_KERNEL,
drivers/soundwire/intel_ace2x.c
1004
cdns->instance, i);
drivers/soundwire/intel_ace2x.c
1028
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_ace2x.c
1037
ret = sdw_cdns_pdi_init(cdns, config);
drivers/soundwire/intel_ace2x.c
1041
intel_pdi_stream_ch_update(sdw, &sdw->cdns.pcm);
drivers/soundwire/intel_ace2x.c
1044
num_dai = cdns->pcm.num_pdi;
drivers/soundwire/intel_ace2x.c
1046
dai_runtime_array = devm_kcalloc(cdns->dev, num_dai,
drivers/soundwire/intel_ace2x.c
105
sdw_cdns_config_stream(cdns, 1, dir, pdi0);
drivers/soundwire/intel_ace2x.c
1051
cdns->dai_runtime_array = dai_runtime_array;
drivers/soundwire/intel_ace2x.c
1053
dais = devm_kcalloc(cdns->dev, num_dai, sizeof(*dais), GFP_KERNEL);
drivers/soundwire/intel_ace2x.c
1058
stream = &cdns->pcm;
drivers/soundwire/intel_ace2x.c
1060
ret = intel_create_dai(cdns, dais, INTEL_PDI_IN, cdns->pcm.num_in,
drivers/soundwire/intel_ace2x.c
1065
off += cdns->pcm.num_in;
drivers/soundwire/intel_ace2x.c
1066
ret = intel_create_dai(cdns, dais, INTEL_PDI_OUT, cdns->pcm.num_out,
drivers/soundwire/intel_ace2x.c
1071
off += cdns->pcm.num_out;
drivers/soundwire/intel_ace2x.c
1072
ret = intel_create_dai(cdns, dais, INTEL_PDI_BD, cdns->pcm.num_bd,
drivers/soundwire/intel_ace2x.c
1077
return devm_snd_soc_register_component(cdns->dev, &dai_component,
drivers/soundwire/intel_ace2x.c
1087
dev_err(sdw->cdns.dev, "%s: could not set lsdiid for link %d %d\n",
drivers/soundwire/intel_ace2x.c
1097
dev_err(sdw->cdns.dev, "%s: could not retrieve link count\n", __func__);
drivers/soundwire/intel_ace2x.c
110
pdi1 = sdw_cdns_alloc_pdi(cdns, &cdns->pcm, 1, dir, 1);
drivers/soundwire/intel_ace2x.c
1102
dev_err(sdw->cdns.dev, "%s: link count %d exceed max %d\n", __func__, ret, SDW_INTEL_MAX_LINKS);
drivers/soundwire/intel_ace2x.c
112
dev_err(cdns->dev, "%s: sdw_cdns_alloc_pdi1 failed\n", __func__);
drivers/soundwire/intel_ace2x.c
117
sdw_cdns_config_stream(cdns, 1, dir, pdi1);
drivers/soundwire/intel_ace2x.c
141
ret = sdw_stream_add_master(&cdns->bus, &sconfig, pconfig, 2, stream);
drivers/soundwire/intel_ace2x.c
145
dev_err(cdns->dev, "add master to stream failed:%d\n", ret);
drivers/soundwire/intel_ace2x.c
149
ret = sdw_prepare_stream(cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
155
ret = sdw_cdns_bpt_find_bandwidth(command, cdns->bus.params.row,
drivers/soundwire/intel_ace2x.c
156
cdns->bus.params.col,
drivers/soundwire/intel_ace2x.c
168
ret = sdw_cdns_bpt_find_buffer_sizes(command, cdns->bus.params.row,
drivers/soundwire/intel_ace2x.c
169
cdns->bus.params.col,
drivers/soundwire/intel_ace2x.c
192
ret = sdw_cdns_bpt_find_buffer_sizes(command, cdns->bus.params.row,
drivers/soundwire/intel_ace2x.c
193
cdns->bus.params.col,
drivers/soundwire/intel_ace2x.c
224
dev_dbg(cdns->dev, "Message len %d transferred in %d frames (%d per frame)\n",
drivers/soundwire/intel_ace2x.c
226
dev_dbg(cdns->dev, "sizes pdi0 %d pdi1 %d tx_bandwidth %d rx_bandwidth %d\n",
drivers/soundwire/intel_ace2x.c
229
ret = hda_sdw_bpt_open(cdns->dev->parent, /* PCI device */
drivers/soundwire/intel_ace2x.c
235
dev_err(cdns->dev, "%s: hda_sdw_bpt_open failed %d\n", __func__, ret);
drivers/soundwire/intel_ace2x.c
255
dev_err(cdns->dev, "%s: sdw_prepare_%s_dma_buffer failed %d\n",
drivers/soundwire/intel_ace2x.c
258
ret1 = hda_sdw_bpt_close(cdns->dev->parent, /* PCI device */
drivers/soundwire/intel_ace2x.c
262
dev_err(cdns->dev, "%s: hda_sdw_bpt_close failed: ret %d\n",
drivers/soundwire/intel_ace2x.c
266
sdw_deprepare_stream(cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
269
ret1 = sdw_stream_remove_master(&cdns->bus, cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
271
dev_err(cdns->dev, "%s: remove master failed: %d\n",
drivers/soundwire/intel_ace2x.c
275
ret1 = sdw_stream_remove_slave(slave, cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
277
dev_err(cdns->dev, "%s: remove slave failed: %d\n",
drivers/soundwire/intel_ace2x.c
281
sdw_release_stream(cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
282
cdns->bus.bpt_stream = NULL;
drivers/soundwire/intel_ace2x.c
290
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_ace2x.c
293
ret = hda_sdw_bpt_close(cdns->dev->parent /* PCI device */, sdw->bpt_ctx.bpt_tx_stream,
drivers/soundwire/intel_ace2x.c
297
dev_err(cdns->dev, "%s: hda_sdw_bpt_close failed: ret %d\n",
drivers/soundwire/intel_ace2x.c
300
ret = sdw_deprepare_stream(cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
302
dev_err(cdns->dev, "%s: sdw_deprepare_stream failed: ret %d\n",
drivers/soundwire/intel_ace2x.c
305
ret = sdw_stream_remove_master(&cdns->bus, cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
307
dev_err(cdns->dev, "%s: remove master failed: %d\n",
drivers/soundwire/intel_ace2x.c
310
ret = sdw_stream_remove_slave(slave, cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
312
dev_err(cdns->dev, "%s: remove slave failed: %d\n",
drivers/soundwire/intel_ace2x.c
315
cdns->bus.bpt_stream = NULL;
drivers/soundwire/intel_ace2x.c
323
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_ace2x.c
332
dev_err(cdns->dev, "BPT message length %d is less than the minimum bytes %d\n",
drivers/soundwire/intel_ace2x.c
337
dev_dbg(cdns->dev, "BPT Transfer start\n");
drivers/soundwire/intel_ace2x.c
343
ret = hda_sdw_bpt_send_async(cdns->dev->parent, /* PCI device */
drivers/soundwire/intel_ace2x.c
346
dev_err(cdns->dev, "%s: hda_sdw_bpt_send_async failed: %d\n",
drivers/soundwire/intel_ace2x.c
354
ret = sdw_enable_stream(cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
356
dev_err(cdns->dev, "%s: sdw_stream_enable failed: %d\n",
drivers/soundwire/intel_ace2x.c
367
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_ace2x.c
370
dev_dbg(cdns->dev, "BPT Transfer wait\n");
drivers/soundwire/intel_ace2x.c
372
ret = hda_sdw_bpt_wait(cdns->dev->parent, /* PCI device */
drivers/soundwire/intel_ace2x.c
375
dev_err(cdns->dev, "%s: hda_sdw_bpt_wait failed: %d\n", __func__, ret);
drivers/soundwire/intel_ace2x.c
377
ret = sdw_disable_stream(cdns->bus.bpt_stream);
drivers/soundwire/intel_ace2x.c
379
dev_err(cdns->dev, "%s: sdw_stream_enable failed: %d\n",
drivers/soundwire/intel_ace2x.c
385
ret = sdw_cdns_check_write_response(cdns->dev, sdw->bpt_ctx.dmab_rx_bdl.area,
drivers/soundwire/intel_ace2x.c
389
dev_err(cdns->dev, "%s: BPT Write failed %d\n", __func__, ret);
drivers/soundwire/intel_ace2x.c
391
ret = sdw_cdns_check_read_response(cdns->dev, sdw->bpt_ctx.dmab_rx_bdl.area,
drivers/soundwire/intel_ace2x.c
396
dev_err(cdns->dev, "%s: BPT Read failed %d\n", __func__, ret);
drivers/soundwire/intel_ace2x.c
412
struct sdw_bus *bus = &sdw->cdns.bus;
drivers/soundwire/intel_ace2x.c
462
dev_dbg(sdw->cdns.dev, "clock source %d LVSCTL %#x\n", source, val);
drivers/soundwire/intel_ace2x.c
511
struct sdw_bus *bus = &sdw->cdns.bus;
drivers/soundwire/intel_ace2x.c
52
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_ace2x.c
53
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_ace2x.c
536
dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_power_up failed: %d\n",
drivers/soundwire/intel_ace2x.c
545
dev_dbg(sdw->cdns.dev, "first link up, programming SYNCPRD\n");
drivers/soundwire/intel_ace2x.c
549
dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_set_syncprd failed: %d\n",
drivers/soundwire/intel_ace2x.c
557
dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_wait_syncpu failed: %d\n",
drivers/soundwire/intel_ace2x.c
568
sdw->cdns.link_up = true;
drivers/soundwire/intel_ace2x.c
586
sdw->cdns.link_up = false;
drivers/soundwire/intel_ace2x.c
596
dev_err(sdw->cdns.dev, "%s: hdac_bus_eml_sdw_power_down failed: %d\n",
drivers/soundwire/intel_ace2x.c
627
dev_err(sdw->cdns.dev, "%s: SyncGO clear failed: %d\n", __func__, ret);
drivers/soundwire/intel_ace2x.c
699
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel_ace2x.c
700
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_ace2x.c
707
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel_ace2x.c
717
pdi = sdw_cdns_alloc_pdi(cdns, &cdns->pcm, ch, dir, dai->id);
drivers/soundwire/intel_ace2x.c
728
sdw_cdns_config_stream(cdns, ch, dir, pdi);
drivers/soundwire/intel_ace2x.c
757
ret = sdw_stream_add_master(&cdns->bus, &sconfig,
drivers/soundwire/intel_ace2x.c
760
dev_err(cdns->dev, "add master to stream failed:%d\n", ret);
drivers/soundwire/intel_ace2x.c
769
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel_ace2x.c
770
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_ace2x.c
775
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel_ace2x.c
803
sdw_cdns_config_stream(cdns, ch, dir, dai_runtime->pdi);
drivers/soundwire/intel_ace2x.c
814
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel_ace2x.c
815
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_ace2x.c
819
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel_ace2x.c
829
ret = sdw_stream_remove_master(&cdns->bus, dai_runtime->stream);
drivers/soundwire/intel_ace2x.c
856
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel_ace2x.c
859
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel_ace2x.c
868
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
drivers/soundwire/intel_ace2x.c
869
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_ace2x.c
884
dai_runtime = cdns->dai_runtime_array[dai->id];
drivers/soundwire/intel_ace2x.c
89
cdns->bus.bpt_stream = stream;
drivers/soundwire/intel_ace2x.c
948
dev_dbg(sdw->cdns.dev, "PCM cap bd:%d in:%d out:%d\n",
drivers/soundwire/intel_ace2x.c
98
pdi0 = sdw_cdns_alloc_pdi(cdns, &cdns->pcm, 1, dir, 0);
drivers/soundwire/intel_ace2x.c
991
static int intel_create_dai(struct sdw_cdns *cdns,
drivers/soundwire/intel_ace2x_debugfs.c
113
struct sdw_bus *bus = &sdw->cdns.bus;
drivers/soundwire/intel_ace2x_debugfs.c
130
struct dentry *root = sdw->cdns.bus.debugfs;
drivers/soundwire/intel_ace2x_debugfs.c
146
sdw_cdns_debugfs_init(&sdw->cdns, sdw->debugfs);
drivers/soundwire/intel_ace2x_debugfs.c
95
struct sdw_bus *bus = &sdw->cdns.bus;
drivers/soundwire/intel_auxdevice.c
107
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/intel_auxdevice.c
108
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
115
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/intel_auxdevice.c
116
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
125
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/intel_auxdevice.c
126
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
308
struct sdw_cdns *cdns;
drivers/soundwire/intel_auxdevice.c
316
cdns = &sdw->cdns;
drivers/soundwire/intel_auxdevice.c
317
bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
321
cdns->dev = dev;
drivers/soundwire/intel_auxdevice.c
322
cdns->registers = sdw->link_res->registers;
drivers/soundwire/intel_auxdevice.c
323
cdns->ip_offset = sdw->link_res->ip_offset;
drivers/soundwire/intel_auxdevice.c
324
cdns->instance = sdw->instance;
drivers/soundwire/intel_auxdevice.c
325
cdns->msg_count = 0;
drivers/soundwire/intel_auxdevice.c
347
sdw_cdns_probe(cdns);
drivers/soundwire/intel_auxdevice.c
353
auxiliary_set_drvdata(auxdev, cdns);
drivers/soundwire/intel_auxdevice.c
356
sdw->cdns.bus.compute_params = sdw_compute_params;
drivers/soundwire/intel_auxdevice.c
380
struct sdw_cdns *cdns = auxiliary_get_drvdata(auxdev);
drivers/soundwire/intel_auxdevice.c
381
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
382
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
491
struct sdw_cdns *cdns = auxiliary_get_drvdata(auxdev);
drivers/soundwire/intel_auxdevice.c
492
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
493
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
502
cancel_delayed_work_sync(&cdns->attach_dwork);
drivers/soundwire/intel_auxdevice.c
503
sdw_cdns_enable_interrupt(cdns, false);
drivers/soundwire/intel_auxdevice.c
515
bus = &sdw->cdns.bus;
drivers/soundwire/intel_auxdevice.c
570
struct sdw_cdns *cdns = dev_get_drvdata(dev);
drivers/soundwire/intel_auxdevice.c
571
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
572
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
630
struct sdw_cdns *cdns = dev_get_drvdata(dev);
drivers/soundwire/intel_auxdevice.c
631
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
632
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
678
struct sdw_cdns *cdns = dev_get_drvdata(dev);
drivers/soundwire/intel_auxdevice.c
679
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
680
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
717
struct sdw_cdns *cdns = dev_get_drvdata(dev);
drivers/soundwire/intel_auxdevice.c
718
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
719
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
773
struct sdw_cdns *cdns = dev_get_drvdata(dev);
drivers/soundwire/intel_auxdevice.c
774
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
775
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_auxdevice.c
87
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/intel_auxdevice.c
88
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_auxdevice.c
97
struct sdw_cdns *cdns = bus_to_cdns(bus);
drivers/soundwire/intel_auxdevice.c
98
struct sdw_intel *sdw = cdns_to_intel(cdns);
drivers/soundwire/intel_bus_common.c
113
sdw_cdns_init(&sdw->cdns);
drivers/soundwire/intel_bus_common.c
116
ret = sdw_cdns_enable_interrupt(cdns, true);
drivers/soundwire/intel_bus_common.c
123
ret = sdw_cdns_clock_restart(cdns, !clock_stop0);
drivers/soundwire/intel_bus_common.c
127
sdw_cdns_enable_interrupt(cdns, false);
drivers/soundwire/intel_bus_common.c
132
sdw_cdns_config_update(cdns);
drivers/soundwire/intel_bus_common.c
137
dev_err(sdw->cdns.dev, "sync go failed during resume\n");
drivers/soundwire/intel_bus_common.c
14
struct device *dev = sdw->cdns.dev;
drivers/soundwire/intel_bus_common.c
142
ret = sdw_cdns_config_update_set_wait(cdns);
drivers/soundwire/intel_bus_common.c
148
ret = sdw_cdns_enable_interrupt(cdns, true);
drivers/soundwire/intel_bus_common.c
15
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_bus_common.c
154
ret = sdw_cdns_exit_reset(cdns);
drivers/soundwire/intel_bus_common.c
16
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_bus_common.c
161
sdw_cdns_check_self_clearing_bits(cdns, __func__, true, INTEL_MASTER_RESET_ITERATIONS);
drivers/soundwire/intel_bus_common.c
163
schedule_delayed_work(&cdns->attach_dwork,
drivers/soundwire/intel_bus_common.c
171
struct device *dev = sdw->cdns.dev;
drivers/soundwire/intel_bus_common.c
174
clock_stop0 = sdw_cdns_is_clock_stop(&sdw->cdns);
drivers/soundwire/intel_bus_common.c
181
struct device *dev = sdw->cdns.dev;
drivers/soundwire/intel_bus_common.c
182
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_bus_common.c
185
ret = sdw_cdns_clock_restart(cdns, false);
drivers/soundwire/intel_bus_common.c
19
ret = sdw_cdns_soft_reset(cdns);
drivers/soundwire/intel_bus_common.c
191
ret = sdw_cdns_enable_interrupt(cdns, true);
drivers/soundwire/intel_bus_common.c
197
sdw_cdns_check_self_clearing_bits(cdns, __func__, true, INTEL_MASTER_RESET_ITERATIONS);
drivers/soundwire/intel_bus_common.c
199
schedule_delayed_work(&cdns->attach_dwork,
drivers/soundwire/intel_bus_common.c
207
struct device *dev = sdw->cdns.dev;
drivers/soundwire/intel_bus_common.c
208
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_bus_common.c
212
cancel_delayed_work_sync(&cdns->attach_dwork);
drivers/soundwire/intel_bus_common.c
215
ret = sdw_cdns_clock_stop(cdns, true);
drivers/soundwire/intel_bus_common.c
222
ret = sdw_cdns_enable_interrupt(cdns, false);
drivers/soundwire/intel_bus_common.c
245
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_bus_common.c
246
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_bus_common.c
259
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_bus_common.c
260
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_bus_common.c
283
dev_err(sdw->cdns.dev, "Post bank switch failed: %d\n", ret);
drivers/soundwire/intel_bus_common.c
32
ret = sdw_cdns_init(cdns);
drivers/soundwire/intel_bus_common.c
38
sdw_cdns_config_update(cdns);
drivers/soundwire/intel_bus_common.c
48
ret = sdw_cdns_config_update_set_wait(cdns);
drivers/soundwire/intel_bus_common.c
54
ret = sdw_cdns_enable_interrupt(cdns, true);
drivers/soundwire/intel_bus_common.c
60
ret = sdw_cdns_exit_reset(cdns);
drivers/soundwire/intel_bus_common.c
66
sdw_cdns_check_self_clearing_bits(cdns, __func__,
drivers/soundwire/intel_bus_common.c
69
schedule_delayed_work(&cdns->attach_dwork,
drivers/soundwire/intel_bus_common.c
77
struct device *dev = sdw->cdns.dev;
drivers/soundwire/intel_bus_common.c
78
struct sdw_cdns *cdns = &sdw->cdns;
drivers/soundwire/intel_bus_common.c
79
struct sdw_bus *bus = &cdns->bus;
drivers/soundwire/intel_bus_common.c
91
clock_stop0 = sdw_cdns_is_clock_stop(&sdw->cdns);
drivers/soundwire/intel_init.c
149
sdw_cdns_irq(irq, link->cdns);
drivers/soundwire/intel_init.c
238
link->cdns = auxiliary_get_drvdata(&ldev->auxdev);
drivers/soundwire/intel_init.c
240
if (!link->cdns) {
drivers/soundwire/intel_init.c
250
bus = &link->cdns->bus;
drivers/soundwire/intel_init.c
262
bus = &link->cdns->bus;
drivers/soundwire/intel_init.c
363
struct sdw_bus *bus = &link->cdns->bus;
drivers/tty/serial/xilinx_uartps.c
1357
OF_EARLYCON_DECLARE(cdns, "xlnx,xuartps", cdns_early_console_setup);
drivers/tty/serial/xilinx_uartps.c
1358
OF_EARLYCON_DECLARE(cdns, "cdns,uart-r1p8", cdns_early_console_setup);
drivers/tty/serial/xilinx_uartps.c
1359
OF_EARLYCON_DECLARE(cdns, "cdns,uart-r1p12", cdns_early_console_setup);
drivers/tty/serial/xilinx_uartps.c
1360
OF_EARLYCON_DECLARE(cdns, "xlnx,zynqmp-uart", cdns_early_console_setup);
drivers/usb/cdns3/cdns3-gadget.c
1916
struct cdns *cdns = dev_get_drvdata(priv_dev->dev);
drivers/usb/cdns3/cdns3-gadget.c
1920
if (cdns->in_lpm)
drivers/usb/cdns3/cdns3-gadget.c
3250
static void cdns3_gadget_exit(struct cdns *cdns)
drivers/usb/cdns3/cdns3-gadget.c
3254
priv_dev = cdns->gadget_dev;
drivers/usb/cdns3/cdns3-gadget.c
3257
pm_runtime_put_autosuspend(cdns->dev);
drivers/usb/cdns3/cdns3-gadget.c
3260
devm_free_irq(cdns->dev, cdns->dev_irq, priv_dev);
drivers/usb/cdns3/cdns3-gadget.c
3283
cdns->gadget_dev = NULL;
drivers/usb/cdns3/cdns3-gadget.c
3284
cdns_drd_gadget_off(cdns);
drivers/usb/cdns3/cdns3-gadget.c
3287
static int cdns3_gadget_start(struct cdns *cdns)
drivers/usb/cdns3/cdns3-gadget.c
3297
usb_initialize_gadget(cdns->dev, &priv_dev->gadget,
drivers/usb/cdns3/cdns3-gadget.c
3299
cdns->gadget_dev = priv_dev;
drivers/usb/cdns3/cdns3-gadget.c
3300
priv_dev->sysdev = cdns->dev;
drivers/usb/cdns3/cdns3-gadget.c
3301
priv_dev->dev = cdns->dev;
drivers/usb/cdns3/cdns3-gadget.c
3302
priv_dev->regs = cdns->dev_regs;
drivers/usb/cdns3/cdns3-gadget.c
3316
max_speed = usb_get_maximum_speed(cdns->dev);
drivers/usb/cdns3/cdns3-gadget.c
3325
dev_err(cdns->dev, "invalid maximum_speed parameter %d\n",
drivers/usb/cdns3/cdns3-gadget.c
3340
priv_dev->gadget.irq = cdns->dev_irq;
drivers/usb/cdns3/cdns3-gadget.c
3413
cdns->gadget_dev = NULL;
drivers/usb/cdns3/cdns3-gadget.c
3417
static int __cdns3_gadget_init(struct cdns *cdns)
drivers/usb/cdns3/cdns3-gadget.c
3422
ret = dma_set_mask_and_coherent(cdns->dev, DMA_BIT_MASK(32));
drivers/usb/cdns3/cdns3-gadget.c
3424
dev_err(cdns->dev, "Failed to set dma mask: %d\n", ret);
drivers/usb/cdns3/cdns3-gadget.c
3428
cdns_drd_gadget_on(cdns);
drivers/usb/cdns3/cdns3-gadget.c
3429
pm_runtime_get_sync(cdns->dev);
drivers/usb/cdns3/cdns3-gadget.c
3431
ret = cdns3_gadget_start(cdns);
drivers/usb/cdns3/cdns3-gadget.c
3433
pm_runtime_put_sync(cdns->dev);
drivers/usb/cdns3/cdns3-gadget.c
3434
cdns_drd_gadget_off(cdns);
drivers/usb/cdns3/cdns3-gadget.c
3442
ret = devm_request_threaded_irq(cdns->dev, cdns->dev_irq,
drivers/usb/cdns3/cdns3-gadget.c
3445
IRQF_SHARED, dev_name(cdns->dev),
drivers/usb/cdns3/cdns3-gadget.c
3446
cdns->gadget_dev);
drivers/usb/cdns3/cdns3-gadget.c
3453
cdns3_gadget_exit(cdns);
drivers/usb/cdns3/cdns3-gadget.c
3457
static int cdns3_gadget_suspend(struct cdns *cdns, bool do_wakeup)
drivers/usb/cdns3/cdns3-gadget.c
3458
__must_hold(&cdns->lock)
drivers/usb/cdns3/cdns3-gadget.c
3460
struct cdns3_device *priv_dev = cdns->gadget_dev;
drivers/usb/cdns3/cdns3-gadget.c
3462
spin_unlock(&cdns->lock);
drivers/usb/cdns3/cdns3-gadget.c
3464
spin_lock(&cdns->lock);
drivers/usb/cdns3/cdns3-gadget.c
3476
static int cdns3_gadget_resume(struct cdns *cdns, bool lost_power)
drivers/usb/cdns3/cdns3-gadget.c
3478
struct cdns3_device *priv_dev = cdns->gadget_dev;
drivers/usb/cdns3/cdns3-gadget.c
3497
int cdns3_gadget_init(struct cdns *cdns)
drivers/usb/cdns3/cdns3-gadget.c
3501
rdrv = devm_kzalloc(cdns->dev, sizeof(*rdrv), GFP_KERNEL);
drivers/usb/cdns3/cdns3-gadget.c
3511
cdns->roles[USB_ROLE_DEVICE] = rdrv;
drivers/usb/cdns3/cdns3-imx.c
251
struct cdns *cdns = dev_get_drvdata(dev);
drivers/usb/cdns3/cdns3-imx.c
254
void __iomem *otg_regs = (void __iomem *)(cdns->otg_regs);
drivers/usb/cdns3/cdns3-imx.c
255
void __iomem *xhci_regs = cdns->xhci_regs;
drivers/usb/cdns3/cdns3-imx.c
259
if (cdns->role != USB_ROLE_HOST)
drivers/usb/cdns3/cdns3-plat.c
100
cdns->otg_irq = platform_get_irq_byname(pdev, "otg");
drivers/usb/cdns3/cdns3-plat.c
101
if (cdns->otg_irq < 0)
drivers/usb/cdns3/cdns3-plat.c
102
return dev_err_probe(dev, cdns->otg_irq,
drivers/usb/cdns3/cdns3-plat.c
111
cdns->phyrst_a_enable = device_property_read_bool(dev, "cdns,phyrst-a-enable");
drivers/usb/cdns3/cdns3-plat.c
113
cdns->otg_res = *res;
drivers/usb/cdns3/cdns3-plat.c
115
cdns->wakeup_irq = platform_get_irq_byname_optional(pdev, "wakeup");
drivers/usb/cdns3/cdns3-plat.c
116
if (cdns->wakeup_irq == -EPROBE_DEFER)
drivers/usb/cdns3/cdns3-plat.c
117
return cdns->wakeup_irq;
drivers/usb/cdns3/cdns3-plat.c
119
if (cdns->wakeup_irq < 0) {
drivers/usb/cdns3/cdns3-plat.c
121
cdns->wakeup_irq = 0x0;
drivers/usb/cdns3/cdns3-plat.c
124
cdns->usb2_phy = devm_phy_optional_get(dev, "cdns3,usb2-phy");
drivers/usb/cdns3/cdns3-plat.c
125
if (IS_ERR(cdns->usb2_phy))
drivers/usb/cdns3/cdns3-plat.c
126
return dev_err_probe(dev, PTR_ERR(cdns->usb2_phy),
drivers/usb/cdns3/cdns3-plat.c
129
ret = phy_init(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
133
cdns->usb3_phy = devm_phy_optional_get(dev, "cdns3,usb3-phy");
drivers/usb/cdns3/cdns3-plat.c
134
if (IS_ERR(cdns->usb3_phy))
drivers/usb/cdns3/cdns3-plat.c
135
return dev_err_probe(dev, PTR_ERR(cdns->usb3_phy),
drivers/usb/cdns3/cdns3-plat.c
138
ret = phy_init(cdns->usb3_phy);
drivers/usb/cdns3/cdns3-plat.c
142
ret = set_phy_power_on(cdns);
drivers/usb/cdns3/cdns3-plat.c
146
cdns->gadget_init = cdns3_gadget_init;
drivers/usb/cdns3/cdns3-plat.c
148
ret = cdns_init(cdns);
drivers/usb/cdns3/cdns3-plat.c
155
if (!(cdns->pdata && (cdns->pdata->quirks & CDNS3_DEFAULT_PM_RUNTIME_ALLOW)))
drivers/usb/cdns3/cdns3-plat.c
170
set_phy_power_off(cdns);
drivers/usb/cdns3/cdns3-plat.c
172
phy_exit(cdns->usb3_phy);
drivers/usb/cdns3/cdns3-plat.c
174
phy_exit(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
185
struct cdns *cdns = platform_get_drvdata(pdev);
drivers/usb/cdns3/cdns3-plat.c
186
struct device *dev = cdns->dev;
drivers/usb/cdns3/cdns3-plat.c
191
cdns_remove(cdns);
drivers/usb/cdns3/cdns3-plat.c
192
set_phy_power_off(cdns);
drivers/usb/cdns3/cdns3-plat.c
193
phy_exit(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
194
phy_exit(cdns->usb3_phy);
drivers/usb/cdns3/cdns3-plat.c
202
struct cdns *cdns = dev_get_drvdata(dev);
drivers/usb/cdns3/cdns3-plat.c
205
if (cdns->pdata && cdns->pdata->platform_suspend)
drivers/usb/cdns3/cdns3-plat.c
206
ret = cdns->pdata->platform_suspend(dev, suspend, wakeup);
drivers/usb/cdns3/cdns3-plat.c
213
struct cdns *cdns = dev_get_drvdata(dev);
drivers/usb/cdns3/cdns3-plat.c
217
if (cdns->in_lpm)
drivers/usb/cdns3/cdns3-plat.c
225
cdns3_set_platform_suspend(cdns->dev, true, wakeup);
drivers/usb/cdns3/cdns3-plat.c
226
set_phy_power_off(cdns);
drivers/usb/cdns3/cdns3-plat.c
227
spin_lock_irqsave(&cdns->lock, flags);
drivers/usb/cdns3/cdns3-plat.c
228
cdns->in_lpm = true;
drivers/usb/cdns3/cdns3-plat.c
229
spin_unlock_irqrestore(&cdns->lock, flags);
drivers/usb/cdns3/cdns3-plat.c
230
dev_dbg(cdns->dev, "%s ends\n", __func__);
drivers/usb/cdns3/cdns3-plat.c
237
struct cdns *cdns = dev_get_drvdata(dev);
drivers/usb/cdns3/cdns3-plat.c
241
if (!cdns->in_lpm)
drivers/usb/cdns3/cdns3-plat.c
244
if (cdns_power_is_lost(cdns)) {
drivers/usb/cdns3/cdns3-plat.c
245
phy_exit(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
246
ret = phy_init(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
250
phy_exit(cdns->usb3_phy);
drivers/usb/cdns3/cdns3-plat.c
251
ret = phy_init(cdns->usb3_phy);
drivers/usb/cdns3/cdns3-plat.c
256
ret = set_phy_power_on(cdns);
drivers/usb/cdns3/cdns3-plat.c
26
static int set_phy_power_on(struct cdns *cdns)
drivers/usb/cdns3/cdns3-plat.c
260
cdns3_set_platform_suspend(cdns->dev, false, false);
drivers/usb/cdns3/cdns3-plat.c
262
spin_lock_irqsave(&cdns->lock, flags);
drivers/usb/cdns3/cdns3-plat.c
263
cdns_resume(cdns);
drivers/usb/cdns3/cdns3-plat.c
264
cdns->in_lpm = false;
drivers/usb/cdns3/cdns3-plat.c
265
spin_unlock_irqrestore(&cdns->lock, flags);
drivers/usb/cdns3/cdns3-plat.c
266
cdns_set_active(cdns, !PMSG_IS_AUTO(msg));
drivers/usb/cdns3/cdns3-plat.c
267
if (cdns->wakeup_pending) {
drivers/usb/cdns3/cdns3-plat.c
268
cdns->wakeup_pending = false;
drivers/usb/cdns3/cdns3-plat.c
269
enable_irq(cdns->wakeup_irq);
drivers/usb/cdns3/cdns3-plat.c
271
dev_dbg(cdns->dev, "%s ends\n", __func__);
drivers/usb/cdns3/cdns3-plat.c
290
struct cdns *cdns = dev_get_drvdata(dev);
drivers/usb/cdns3/cdns3-plat.c
293
cdns_suspend(cdns);
drivers/usb/cdns3/cdns3-plat.c
299
if (device_may_wakeup(dev) && cdns->wakeup_irq)
drivers/usb/cdns3/cdns3-plat.c
30
ret = phy_power_on(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
300
enable_irq_wake(cdns->wakeup_irq);
drivers/usb/cdns3/cdns3-plat.c
34
ret = phy_power_on(cdns->usb3_phy);
drivers/usb/cdns3/cdns3-plat.c
36
phy_power_off(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
41
static void set_phy_power_off(struct cdns *cdns)
drivers/usb/cdns3/cdns3-plat.c
43
phy_power_off(cdns->usb3_phy);
drivers/usb/cdns3/cdns3-plat.c
44
phy_power_off(cdns->usb2_phy);
drivers/usb/cdns3/cdns3-plat.c
57
struct cdns *cdns;
drivers/usb/cdns3/cdns3-plat.c
61
cdns = devm_kzalloc(dev, sizeof(*cdns), GFP_KERNEL);
drivers/usb/cdns3/cdns3-plat.c
62
if (!cdns)
drivers/usb/cdns3/cdns3-plat.c
65
cdns->dev = dev;
drivers/usb/cdns3/cdns3-plat.c
66
cdns->pdata = dev_get_platdata(dev);
drivers/usb/cdns3/cdns3-plat.c
68
platform_set_drvdata(pdev, cdns);
drivers/usb/cdns3/cdns3-plat.c
74
cdns->xhci_res[0].start = ret;
drivers/usb/cdns3/cdns3-plat.c
75
cdns->xhci_res[0].end = ret;
drivers/usb/cdns3/cdns3-plat.c
76
cdns->xhci_res[0].flags = IORESOURCE_IRQ | irq_get_trigger_type(ret);
drivers/usb/cdns3/cdns3-plat.c
77
cdns->xhci_res[0].name = "host";
drivers/usb/cdns3/cdns3-plat.c
85
cdns->xhci_res[1] = *res;
drivers/usb/cdns3/cdns3-plat.c
87
cdns->dev_irq = platform_get_irq_byname(pdev, "peripheral");
drivers/usb/cdns3/cdns3-plat.c
89
if (cdns->dev_irq < 0)
drivers/usb/cdns3/cdns3-plat.c
90
return dev_err_probe(dev, cdns->dev_irq,
drivers/usb/cdns3/cdns3-plat.c
98
cdns->dev_regs = regs;
drivers/usb/cdns3/cdnsp-gadget.c
145
struct cdns *cdns = dev_get_drvdata(pdev->dev);
drivers/usb/cdns3/cdnsp-gadget.c
151
if (!cdns->override_apb_timeout)
drivers/usb/cdns3/cdnsp-gadget.c
1573
struct cdns *cdns = dev_get_drvdata(pdev->dev);
drivers/usb/cdns3/cdnsp-gadget.c
1582
disable_irq(cdns->dev_irq);
drivers/usb/cdns3/cdnsp-gadget.c
1587
cdns_clear_vbus(cdns);
drivers/usb/cdns3/cdnsp-gadget.c
1589
cdns_set_vbus(cdns);
drivers/usb/cdns3/cdnsp-gadget.c
159
val = CHICKEN_APB_TIMEOUT_SET(val, cdns->override_apb_timeout);
drivers/usb/cdns3/cdnsp-gadget.c
1593
enable_irq(cdns->dev_irq);
drivers/usb/cdns3/cdnsp-gadget.c
1900
static int __cdnsp_gadget_init(struct cdns *cdns)
drivers/usb/cdns3/cdnsp-gadget.c
1906
cdns_drd_gadget_on(cdns);
drivers/usb/cdns3/cdnsp-gadget.c
1912
pm_runtime_get_sync(cdns->dev);
drivers/usb/cdns3/cdnsp-gadget.c
1914
cdns->gadget_dev = pdev;
drivers/usb/cdns3/cdnsp-gadget.c
1915
pdev->dev = cdns->dev;
drivers/usb/cdns3/cdnsp-gadget.c
1916
pdev->regs = cdns->dev_regs;
drivers/usb/cdns3/cdnsp-gadget.c
1917
max_speed = usb_get_maximum_speed(cdns->dev);
drivers/usb/cdns3/cdnsp-gadget.c
1926
dev_err(cdns->dev, "invalid speed parameter %d\n", max_speed);
drivers/usb/cdns3/cdnsp-gadget.c
1969
ret = devm_request_threaded_irq(pdev->dev, cdns->dev_irq,
drivers/usb/cdns3/cdnsp-gadget.c
1997
static void cdnsp_gadget_exit(struct cdns *cdns)
drivers/usb/cdns3/cdnsp-gadget.c
1999
struct cdnsp_device *pdev = cdns->gadget_dev;
drivers/usb/cdns3/cdnsp-gadget.c
2001
devm_free_irq(pdev->dev, cdns->dev_irq, pdev);
drivers/usb/cdns3/cdnsp-gadget.c
2002
pm_runtime_put_autosuspend(cdns->dev);
drivers/usb/cdns3/cdnsp-gadget.c
2008
cdns->gadget_dev = NULL;
drivers/usb/cdns3/cdnsp-gadget.c
2009
cdns_drd_gadget_off(cdns);
drivers/usb/cdns3/cdnsp-gadget.c
2012
static int cdnsp_gadget_suspend(struct cdns *cdns, bool do_wakeup)
drivers/usb/cdns3/cdnsp-gadget.c
2014
struct cdnsp_device *pdev = cdns->gadget_dev;
drivers/usb/cdns3/cdnsp-gadget.c
2028
static int cdnsp_gadget_resume(struct cdns *cdns, bool lost_power)
drivers/usb/cdns3/cdnsp-gadget.c
2030
struct cdnsp_device *pdev = cdns->gadget_dev;
drivers/usb/cdns3/cdnsp-gadget.c
2060
int cdnsp_gadget_init(struct cdns *cdns)
drivers/usb/cdns3/cdnsp-gadget.c
2064
rdrv = devm_kzalloc(cdns->dev, sizeof(*rdrv), GFP_KERNEL);
drivers/usb/cdns3/cdnsp-gadget.c
2074
cdns->roles[USB_ROLE_DEVICE] = rdrv;
drivers/usb/cdns3/cdnsp-pci.c
179
struct cdns *cdnsp;
drivers/usb/cdns3/cdnsp-pci.c
183
cdnsp = (struct cdns *)pci_get_drvdata(pdev);
drivers/usb/cdns3/cdnsp-pci.c
199
struct cdns *cdns = dev_get_drvdata(dev);
drivers/usb/cdns3/cdnsp-pci.c
201
return cdns_suspend(cdns);
drivers/usb/cdns3/cdnsp-pci.c
206
struct cdns *cdns = dev_get_drvdata(dev);
drivers/usb/cdns3/cdnsp-pci.c
210
spin_lock_irqsave(&cdns->lock, flags);
drivers/usb/cdns3/cdnsp-pci.c
211
ret = cdns_resume(cdns);
drivers/usb/cdns3/cdnsp-pci.c
212
spin_unlock_irqrestore(&cdns->lock, flags);
drivers/usb/cdns3/cdnsp-pci.c
213
cdns_set_active(cdns, 1);
drivers/usb/cdns3/cdnsp-pci.c
54
struct cdns *cdnsp;
drivers/usb/cdns3/core.c
122
best_dr_mode = cdns->dr_mode;
drivers/usb/cdns3/core.c
124
ret = cdns_idle_init(cdns);
drivers/usb/cdns3/core.c
129
best_dr_mode = cdns->dr_mode;
drivers/usb/cdns3/core.c
130
} else if (cdns->dr_mode == USB_DR_MODE_OTG) {
drivers/usb/cdns3/core.c
132
} else if (cdns->dr_mode != dr_mode) {
drivers/usb/cdns3/core.c
140
if ((cdns->version == CDNSP_CONTROLLER_V2 &&
drivers/usb/cdns3/core.c
142
(cdns->version < CDNSP_CONTROLLER_V2 &&
drivers/usb/cdns3/core.c
144
ret = cdns_host_init(cdns);
drivers/usb/cdns3/core.c
156
if (cdns->gadget_init)
drivers/usb/cdns3/core.c
157
ret = cdns->gadget_init(cdns);
drivers/usb/cdns3/core.c
168
cdns->dr_mode = dr_mode;
drivers/usb/cdns3/core.c
170
ret = cdns_drd_update_mode(cdns);
drivers/usb/cdns3/core.c
175
ret = cdns_role_start(cdns, USB_ROLE_NONE);
drivers/usb/cdns3/core.c
179
switch (cdns->dr_mode) {
drivers/usb/cdns3/core.c
181
ret = cdns_hw_role_switch(cdns);
drivers/usb/cdns3/core.c
186
ret = cdns_role_start(cdns, USB_ROLE_DEVICE);
drivers/usb/cdns3/core.c
191
ret = cdns_role_start(cdns, USB_ROLE_HOST);
drivers/usb/cdns3/core.c
202
cdns_exit_roles(cdns);
drivers/usb/cdns3/core.c
212
static enum usb_role cdns_hw_role_state_machine(struct cdns *cdns)
drivers/usb/cdns3/core.c
217
if (cdns->dr_mode != USB_DR_MODE_OTG) {
drivers/usb/cdns3/core.c
218
if (cdns_is_host(cdns))
drivers/usb/cdns3/core.c
220
if (cdns_is_device(cdns))
drivers/usb/cdns3/core.c
226
id = cdns_get_id(cdns);
drivers/usb/cdns3/core.c
227
vbus = cdns_get_vbus(cdns);
drivers/usb/cdns3/core.c
235
role = cdns->role;
drivers/usb/cdns3/core.c
258
dev_dbg(cdns->dev, "role %d -> %d\n", cdns->role, role);
drivers/usb/cdns3/core.c
263
static int cdns_idle_role_start(struct cdns *cdns)
drivers/usb/cdns3/core.c
268
static void cdns_idle_role_stop(struct cdns *cdns)
drivers/usb/cdns3/core.c
27
static int cdns_idle_init(struct cdns *cdns);
drivers/usb/cdns3/core.c
271
phy_reset(cdns->usb3_phy);
drivers/usb/cdns3/core.c
274
static int cdns_idle_init(struct cdns *cdns)
drivers/usb/cdns3/core.c
278
rdrv = devm_kzalloc(cdns->dev, sizeof(*rdrv), GFP_KERNEL);
drivers/usb/cdns3/core.c
289
cdns->roles[USB_ROLE_NONE] = rdrv;
drivers/usb/cdns3/core.c
29
static int cdns_role_start(struct cdns *cdns, enum usb_role role)
drivers/usb/cdns3/core.c
298
int cdns_hw_role_switch(struct cdns *cdns)
drivers/usb/cdns3/core.c
304
if (cdns->role_sw)
drivers/usb/cdns3/core.c
307
pm_runtime_get_sync(cdns->dev);
drivers/usb/cdns3/core.c
309
current_role = cdns->role;
drivers/usb/cdns3/core.c
310
real_role = cdns_hw_role_state_machine(cdns);
drivers/usb/cdns3/core.c
316
cdns_role_stop(cdns);
drivers/usb/cdns3/core.c
318
dev_dbg(cdns->dev, "Switching role %d -> %d", current_role, real_role);
drivers/usb/cdns3/core.c
320
ret = cdns_role_start(cdns, real_role);
drivers/usb/cdns3/core.c
323
dev_err(cdns->dev, "set %d has failed, back to %d\n",
drivers/usb/cdns3/core.c
325
ret = cdns_role_start(cdns, current_role);
drivers/usb/cdns3/core.c
327
dev_err(cdns->dev, "back to %d failed too\n",
drivers/usb/cdns3/core.c
331
pm_runtime_put_sync(cdns->dev);
drivers/usb/cdns3/core.c
344
struct cdns *cdns = usb_role_switch_get_drvdata(sw);
drivers/usb/cdns3/core.c
346
return cdns->role;
drivers/usb/cdns3/core.c
36
mutex_lock(&cdns->mutex);
drivers/usb/cdns3/core.c
360
struct cdns *cdns = usb_role_switch_get_drvdata(sw);
drivers/usb/cdns3/core.c
363
pm_runtime_get_sync(cdns->dev);
drivers/usb/cdns3/core.c
365
if (cdns->role == role)
drivers/usb/cdns3/core.c
368
if (cdns->dr_mode == USB_DR_MODE_HOST) {
drivers/usb/cdns3/core.c
37
cdns->role = role;
drivers/usb/cdns3/core.c
378
if (cdns->dr_mode == USB_DR_MODE_PERIPHERAL) {
drivers/usb/cdns3/core.c
38
mutex_unlock(&cdns->mutex);
drivers/usb/cdns3/core.c
388
cdns_role_stop(cdns);
drivers/usb/cdns3/core.c
389
ret = cdns_role_start(cdns, role);
drivers/usb/cdns3/core.c
391
dev_err(cdns->dev, "set role %d has failed\n", role);
drivers/usb/cdns3/core.c
394
pm_runtime_put_sync(cdns->dev);
drivers/usb/cdns3/core.c
40
if (!cdns->roles[role])
drivers/usb/cdns3/core.c
407
struct cdns *cdns = data;
drivers/usb/cdns3/core.c
409
if (cdns->in_lpm) {
drivers/usb/cdns3/core.c
411
cdns->wakeup_pending = true;
drivers/usb/cdns3/core.c
412
if ((cdns->role == USB_ROLE_HOST) && cdns->host_dev)
drivers/usb/cdns3/core.c
413
pm_request_resume(&cdns->host_dev->dev);
drivers/usb/cdns3/core.c
427
int cdns_init(struct cdns *cdns)
drivers/usb/cdns3/core.c
429
struct device *dev = cdns->dev;
drivers/usb/cdns3/core.c
43
if (cdns->roles[role]->state == CDNS_ROLE_STATE_ACTIVE)
drivers/usb/cdns3/core.c
438
mutex_init(&cdns->mutex);
drivers/usb/cdns3/core.c
446
sw_desc.driver_data = cdns;
drivers/usb/cdns3/core.c
449
cdns->role_sw = usb_role_switch_register(dev, &sw_desc);
drivers/usb/cdns3/core.c
450
if (IS_ERR(cdns->role_sw)) {
drivers/usb/cdns3/core.c
452
return PTR_ERR(cdns->role_sw);
drivers/usb/cdns3/core.c
456
if (cdns->wakeup_irq) {
drivers/usb/cdns3/core.c
457
ret = devm_request_irq(cdns->dev, cdns->wakeup_irq,
drivers/usb/cdns3/core.c
46
mutex_lock(&cdns->mutex);
drivers/usb/cdns3/core.c
460
dev_name(cdns->dev), cdns);
drivers/usb/cdns3/core.c
463
dev_err(cdns->dev, "couldn't register wakeup irq handler\n");
drivers/usb/cdns3/core.c
468
ret = cdns_drd_init(cdns);
drivers/usb/cdns3/core.c
47
ret = cdns->roles[role]->start(cdns);
drivers/usb/cdns3/core.c
472
ret = cdns_core_init_role(cdns);
drivers/usb/cdns3/core.c
476
spin_lock_init(&cdns->lock);
drivers/usb/cdns3/core.c
482
cdns_drd_exit(cdns);
drivers/usb/cdns3/core.c
484
if (cdns->role_sw)
drivers/usb/cdns3/core.c
485
usb_role_switch_unregister(cdns->role_sw);
drivers/usb/cdns3/core.c
49
cdns->roles[role]->state = CDNS_ROLE_STATE_ACTIVE;
drivers/usb/cdns3/core.c
497
int cdns_remove(struct cdns *cdns)
drivers/usb/cdns3/core.c
499
cdns_exit_roles(cdns);
drivers/usb/cdns3/core.c
50
mutex_unlock(&cdns->mutex);
drivers/usb/cdns3/core.c
500
usb_role_switch_unregister(cdns->role_sw);
drivers/usb/cdns3/core.c
507
int cdns_suspend(struct cdns *cdns)
drivers/usb/cdns3/core.c
509
struct device *dev = cdns->dev;
drivers/usb/cdns3/core.c
515
if (cdns->roles[cdns->role]->suspend) {
drivers/usb/cdns3/core.c
516
spin_lock_irqsave(&cdns->lock, flags);
drivers/usb/cdns3/core.c
517
cdns->roles[cdns->role]->suspend(cdns, false);
drivers/usb/cdns3/core.c
518
spin_unlock_irqrestore(&cdns->lock, flags);
drivers/usb/cdns3/core.c
525
int cdns_resume(struct cdns *cdns)
drivers/usb/cdns3/core.c
527
bool power_lost = cdns_power_is_lost(cdns);
drivers/usb/cdns3/core.c
533
if (!cdns->role_sw) {
drivers/usb/cdns3/core.c
534
real_role = cdns_hw_role_state_machine(cdns);
drivers/usb/cdns3/core.c
535
if (real_role != cdns->role) {
drivers/usb/cdns3/core.c
536
ret = cdns_hw_role_switch(cdns);
drivers/usb/cdns3/core.c
544
if (cdns->role == USB_ROLE_HOST)
drivers/usb/cdns3/core.c
545
ret = cdns_drd_host_on(cdns);
drivers/usb/cdns3/core.c
546
else if (cdns->role == USB_ROLE_DEVICE)
drivers/usb/cdns3/core.c
547
ret = cdns_drd_gadget_on(cdns);
drivers/usb/cdns3/core.c
55
static void cdns_role_stop(struct cdns *cdns)
drivers/usb/cdns3/core.c
554
if (!role_changed && cdns->roles[cdns->role]->resume)
drivers/usb/cdns3/core.c
555
cdns->roles[cdns->role]->resume(cdns, power_lost);
drivers/usb/cdns3/core.c
561
void cdns_set_active(struct cdns *cdns, u8 set_active)
drivers/usb/cdns3/core.c
563
struct device *dev = cdns->dev;
drivers/usb/cdns3/core.c
57
enum usb_role role = cdns->role;
drivers/usb/cdns3/core.c
62
if (cdns->roles[role]->state == CDNS_ROLE_STATE_INACTIVE)
drivers/usb/cdns3/core.c
65
mutex_lock(&cdns->mutex);
drivers/usb/cdns3/core.c
66
cdns->roles[role]->stop(cdns);
drivers/usb/cdns3/core.c
67
cdns->roles[role]->state = CDNS_ROLE_STATE_INACTIVE;
drivers/usb/cdns3/core.c
68
mutex_unlock(&cdns->mutex);
drivers/usb/cdns3/core.c
71
static void cdns_exit_roles(struct cdns *cdns)
drivers/usb/cdns3/core.c
73
cdns_role_stop(cdns);
drivers/usb/cdns3/core.c
74
cdns_drd_exit(cdns);
drivers/usb/cdns3/core.c
83
static int cdns_core_init_role(struct cdns *cdns)
drivers/usb/cdns3/core.c
85
struct device *dev = cdns->dev;
drivers/usb/cdns3/core.c
91
cdns->role = USB_ROLE_NONE;
drivers/usb/cdns3/core.c
99
if (cdns->version == CDNSP_CONTROLLER_V2) {
drivers/usb/cdns3/core.h
124
int (*gadget_init)(struct cdns *cdns);
drivers/usb/cdns3/core.h
127
int cdns_hw_role_switch(struct cdns *cdns);
drivers/usb/cdns3/core.h
128
int cdns_init(struct cdns *cdns);
drivers/usb/cdns3/core.h
129
int cdns_remove(struct cdns *cdns);
drivers/usb/cdns3/core.h
132
int cdns_resume(struct cdns *cdns);
drivers/usb/cdns3/core.h
133
int cdns_suspend(struct cdns *cdns);
drivers/usb/cdns3/core.h
134
void cdns_set_active(struct cdns *cdns, u8 set_active);
drivers/usb/cdns3/core.h
136
static inline int cdns_resume(struct cdns *cdns)
drivers/usb/cdns3/core.h
138
static inline void cdns_set_active(struct cdns *cdns, u8 set_active) { }
drivers/usb/cdns3/core.h
139
static inline int cdns_suspend(struct cdns *cdns)
drivers/usb/cdns3/core.h
17
struct cdns;
drivers/usb/cdns3/core.h
30
int (*start)(struct cdns *cdns);
drivers/usb/cdns3/core.h
31
void (*stop)(struct cdns *cdns);
drivers/usb/cdns3/core.h
32
int (*suspend)(struct cdns *cdns, bool do_wakeup);
drivers/usb/cdns3/core.h
33
int (*resume)(struct cdns *cdns, bool lost_power);
drivers/usb/cdns3/drd.c
100
vbus = !!(readl(&cdns->otg_regs->sts) & OTGSTS_VBUS_VALID);
drivers/usb/cdns3/drd.c
101
dev_dbg(cdns->dev, "OTG VBUS: %d", vbus);
drivers/usb/cdns3/drd.c
106
void cdns_clear_vbus(struct cdns *cdns)
drivers/usb/cdns3/drd.c
110
if (cdns->version != CDNSP_CONTROLLER_V2)
drivers/usb/cdns3/drd.c
113
reg = readl(&cdns->otg_cdnsp_regs->override);
drivers/usb/cdns3/drd.c
115
writel(reg, &cdns->otg_cdnsp_regs->override);
drivers/usb/cdns3/drd.c
119
void cdns_set_vbus(struct cdns *cdns)
drivers/usb/cdns3/drd.c
123
if (cdns->version != CDNSP_CONTROLLER_V2)
drivers/usb/cdns3/drd.c
126
reg = readl(&cdns->otg_cdnsp_regs->override);
drivers/usb/cdns3/drd.c
128
writel(reg, &cdns->otg_cdnsp_regs->override);
drivers/usb/cdns3/drd.c
132
bool cdns_is_host(struct cdns *cdns)
drivers/usb/cdns3/drd.c
134
if (cdns->dr_mode == USB_DR_MODE_HOST)
drivers/usb/cdns3/drd.c
136
else if (cdns_get_id(cdns) == CDNS3_ID_HOST)
drivers/usb/cdns3/drd.c
142
bool cdns_is_device(struct cdns *cdns)
drivers/usb/cdns3/drd.c
144
if (cdns->dr_mode == USB_DR_MODE_PERIPHERAL)
drivers/usb/cdns3/drd.c
146
else if (cdns->dr_mode == USB_DR_MODE_OTG)
drivers/usb/cdns3/drd.c
147
if (cdns_get_id(cdns) == CDNS3_ID_PERIPHERAL)
drivers/usb/cdns3/drd.c
157
static void cdns_otg_disable_irq(struct cdns *cdns)
drivers/usb/cdns3/drd.c
159
if (cdns->version)
drivers/usb/cdns3/drd.c
160
writel(0, &cdns->otg_irq_regs->ien);
drivers/usb/cdns3/drd.c
167
static void cdns_otg_enable_irq(struct cdns *cdns)
drivers/usb/cdns3/drd.c
170
OTGIEN_VBUSVALID_FALL_INT, &cdns->otg_irq_regs->ien);
drivers/usb/cdns3/drd.c
179
int cdns_drd_host_on(struct cdns *cdns)
drivers/usb/cdns3/drd.c
186
&cdns->otg_regs->cmd);
drivers/usb/cdns3/drd.c
188
if (cdns->version == CDNSP_CONTROLLER_V2)
drivers/usb/cdns3/drd.c
193
dev_dbg(cdns->dev, "Waiting till Host mode is turned on\n");
drivers/usb/cdns3/drd.c
194
ret = readl_poll_timeout_atomic(&cdns->otg_regs->sts, val,
drivers/usb/cdns3/drd.c
198
dev_err(cdns->dev, "timeout waiting for xhci_ready\n");
drivers/usb/cdns3/drd.c
200
phy_set_mode(cdns->usb2_phy, PHY_MODE_USB_HOST);
drivers/usb/cdns3/drd.c
201
phy_set_mode(cdns->usb3_phy, PHY_MODE_USB_HOST);
drivers/usb/cdns3/drd.c
209
void cdns_drd_host_off(struct cdns *cdns)
drivers/usb/cdns3/drd.c
215
&cdns->otg_regs->cmd);
drivers/usb/cdns3/drd.c
218
readl_poll_timeout_atomic(&cdns->otg_regs->state, val,
drivers/usb/cdns3/drd.c
221
phy_set_mode(cdns->usb2_phy, PHY_MODE_INVALID);
drivers/usb/cdns3/drd.c
222
phy_set_mode(cdns->usb3_phy, PHY_MODE_INVALID);
drivers/usb/cdns3/drd.c
231
int cdns_drd_gadget_on(struct cdns *cdns)
drivers/usb/cdns3/drd.c
238
writel(OTGCMD_DEV_BUS_REQ | reg, &cdns->otg_regs->cmd);
drivers/usb/cdns3/drd.c
240
dev_dbg(cdns->dev, "Waiting till Device mode is turned on\n");
drivers/usb/cdns3/drd.c
242
if (cdns->version == CDNSP_CONTROLLER_V2)
drivers/usb/cdns3/drd.c
247
ret = readl_poll_timeout_atomic(&cdns->otg_regs->sts, val,
drivers/usb/cdns3/drd.c
250
dev_err(cdns->dev, "timeout waiting for dev_ready\n");
drivers/usb/cdns3/drd.c
254
phy_set_mode(cdns->usb2_phy, PHY_MODE_USB_DEVICE);
drivers/usb/cdns3/drd.c
255
phy_set_mode(cdns->usb3_phy, PHY_MODE_USB_DEVICE);
drivers/usb/cdns3/drd.c
264
void cdns_drd_gadget_off(struct cdns *cdns)
drivers/usb/cdns3/drd.c
275
&cdns->otg_regs->cmd);
drivers/usb/cdns3/drd.c
277
readl_poll_timeout_atomic(&cdns->otg_regs->state, val,
drivers/usb/cdns3/drd.c
28
static int cdns_set_mode(struct cdns *cdns, enum usb_dr_mode mode)
drivers/usb/cdns3/drd.c
280
phy_set_mode(cdns->usb2_phy, PHY_MODE_INVALID);
drivers/usb/cdns3/drd.c
281
phy_set_mode(cdns->usb3_phy, PHY_MODE_INVALID);
drivers/usb/cdns3/drd.c
291
static int cdns_init_otg_mode(struct cdns *cdns)
drivers/usb/cdns3/drd.c
295
cdns_otg_disable_irq(cdns);
drivers/usb/cdns3/drd.c
297
writel(~0, &cdns->otg_irq_regs->ivect);
drivers/usb/cdns3/drd.c
299
ret = cdns_set_mode(cdns, USB_DR_MODE_OTG);
drivers/usb/cdns3/drd.c
303
cdns_otg_enable_irq(cdns);
drivers/usb/cdns3/drd.c
314
int cdns_drd_update_mode(struct cdns *cdns)
drivers/usb/cdns3/drd.c
318
switch (cdns->dr_mode) {
drivers/usb/cdns3/drd.c
320
ret = cdns_set_mode(cdns, USB_DR_MODE_PERIPHERAL);
drivers/usb/cdns3/drd.c
323
ret = cdns_set_mode(cdns, USB_DR_MODE_HOST);
drivers/usb/cdns3/drd.c
326
ret = cdns_init_otg_mode(cdns);
drivers/usb/cdns3/drd.c
329
dev_err(cdns->dev, "Unsupported mode of operation %d\n",
drivers/usb/cdns3/drd.c
330
cdns->dr_mode);
drivers/usb/cdns3/drd.c
339
struct cdns *cdns = data;
drivers/usb/cdns3/drd.c
341
cdns_hw_role_switch(cdns);
drivers/usb/cdns3/drd.c
357
struct cdns *cdns = data;
drivers/usb/cdns3/drd.c
360
if (cdns->dr_mode != USB_DR_MODE_OTG)
drivers/usb/cdns3/drd.c
363
if (cdns->in_lpm)
drivers/usb/cdns3/drd.c
366
reg = readl(&cdns->otg_irq_regs->ivect);
drivers/usb/cdns3/drd.c
372
dev_dbg(cdns->dev, "OTG IRQ: new ID: %d\n",
drivers/usb/cdns3/drd.c
373
cdns_get_id(cdns));
drivers/usb/cdns3/drd.c
379
dev_dbg(cdns->dev, "OTG IRQ: new VBUS: %d\n",
drivers/usb/cdns3/drd.c
380
cdns_get_vbus(cdns));
drivers/usb/cdns3/drd.c
385
writel(~0, &cdns->otg_irq_regs->ivect);
drivers/usb/cdns3/drd.c
389
int cdns_drd_init(struct cdns *cdns)
drivers/usb/cdns3/drd.c
39
dev_dbg(cdns->dev, "Set controller to OTG mode\n");
drivers/usb/cdns3/drd.c
395
regs = devm_ioremap_resource(cdns->dev, &cdns->otg_res);
drivers/usb/cdns3/drd.c
408
cdns->otg_v0_regs = regs;
drivers/usb/cdns3/drd.c
409
if (!readl(&cdns->otg_v0_regs->cmd)) {
drivers/usb/cdns3/drd.c
41
if (cdns->version == CDNSP_CONTROLLER_V2)
drivers/usb/cdns3/drd.c
410
cdns->version = CDNS3_CONTROLLER_V0;
drivers/usb/cdns3/drd.c
411
cdns->otg_v1_regs = NULL;
drivers/usb/cdns3/drd.c
412
cdns->otg_cdnsp_regs = NULL;
drivers/usb/cdns3/drd.c
413
cdns->otg_regs = regs;
drivers/usb/cdns3/drd.c
414
cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
drivers/usb/cdns3/drd.c
415
&cdns->otg_v0_regs->ien;
drivers/usb/cdns3/drd.c
416
writel(1, &cdns->otg_v0_regs->simulate);
drivers/usb/cdns3/drd.c
417
dev_dbg(cdns->dev, "DRD version v0 (%08x)\n",
drivers/usb/cdns3/drd.c
418
readl(&cdns->otg_v0_regs->version));
drivers/usb/cdns3/drd.c
42
override_reg = &cdns->otg_cdnsp_regs->override;
drivers/usb/cdns3/drd.c
420
cdns->otg_v0_regs = NULL;
drivers/usb/cdns3/drd.c
421
cdns->otg_v1_regs = regs;
drivers/usb/cdns3/drd.c
422
cdns->otg_cdnsp_regs = regs;
drivers/usb/cdns3/drd.c
424
cdns->otg_regs = (void __iomem *)&cdns->otg_v1_regs->cmd;
drivers/usb/cdns3/drd.c
426
state = readl(&cdns->otg_cdnsp_regs->did);
drivers/usb/cdns3/drd.c
429
cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
drivers/usb/cdns3/drd.c
43
else if (cdns->version == CDNS3_CONTROLLER_V1)
drivers/usb/cdns3/drd.c
430
&cdns->otg_cdnsp_regs->ien;
drivers/usb/cdns3/drd.c
431
cdns->version = CDNSP_CONTROLLER_V2;
drivers/usb/cdns3/drd.c
433
cdns->otg_irq_regs = (struct cdns_otg_irq_regs __iomem *)
drivers/usb/cdns3/drd.c
434
&cdns->otg_v1_regs->ien;
drivers/usb/cdns3/drd.c
435
writel(1, &cdns->otg_v1_regs->simulate);
drivers/usb/cdns3/drd.c
437
if (cdns->pdata &&
drivers/usb/cdns3/drd.c
438
(cdns->pdata->quirks & CDNS3_DRD_SUSPEND_RESIDENCY_ENABLE)) {
drivers/usb/cdns3/drd.c
439
reg = readl(&cdns->otg_v1_regs->susp_ctrl);
drivers/usb/cdns3/drd.c
44
override_reg = &cdns->otg_v1_regs->override;
drivers/usb/cdns3/drd.c
441
writel(reg, &cdns->otg_v1_regs->susp_ctrl);
drivers/usb/cdns3/drd.c
444
cdns->version = CDNS3_CONTROLLER_V1;
drivers/usb/cdns3/drd.c
446
dev_err(cdns->dev, "not supported DID=0x%08x\n", state);
drivers/usb/cdns3/drd.c
450
dev_dbg(cdns->dev, "DRD version v1 (ID: %08x, rev: %08x)\n",
drivers/usb/cdns3/drd.c
451
readl(&cdns->otg_v1_regs->did),
drivers/usb/cdns3/drd.c
452
readl(&cdns->otg_v1_regs->rid));
drivers/usb/cdns3/drd.c
455
state = OTGSTS_STRAP(readl(&cdns->otg_regs->sts));
drivers/usb/cdns3/drd.c
458
cdns->dr_mode = USB_DR_MODE_OTG;
drivers/usb/cdns3/drd.c
46
override_reg = &cdns->otg_v0_regs->ctrl1;
drivers/usb/cdns3/drd.c
460
if ((cdns->version == CDNSP_CONTROLLER_V2 &&
drivers/usb/cdns3/drd.c
462
(cdns->version != CDNSP_CONTROLLER_V2 &&
drivers/usb/cdns3/drd.c
464
dev_dbg(cdns->dev, "Controller strapped to HOST\n");
drivers/usb/cdns3/drd.c
465
cdns->dr_mode = USB_DR_MODE_HOST;
drivers/usb/cdns3/drd.c
466
} else if ((cdns->version == CDNSP_CONTROLLER_V2 &&
drivers/usb/cdns3/drd.c
468
(cdns->version != CDNSP_CONTROLLER_V2 &&
drivers/usb/cdns3/drd.c
470
dev_dbg(cdns->dev, "Controller strapped to PERIPHERAL\n");
drivers/usb/cdns3/drd.c
471
cdns->dr_mode = USB_DR_MODE_PERIPHERAL;
drivers/usb/cdns3/drd.c
474
ret = devm_request_threaded_irq(cdns->dev, cdns->otg_irq,
drivers/usb/cdns3/drd.c
478
dev_name(cdns->dev), cdns);
drivers/usb/cdns3/drd.c
480
dev_err(cdns->dev, "couldn't get otg_irq\n");
drivers/usb/cdns3/drd.c
484
state = readl(&cdns->otg_regs->sts);
drivers/usb/cdns3/drd.c
486
dev_err(cdns->dev, "Cadence USB3 OTG device not ready\n");
drivers/usb/cdns3/drd.c
493
int cdns_drd_exit(struct cdns *cdns)
drivers/usb/cdns3/drd.c
495
cdns_otg_disable_irq(cdns);
drivers/usb/cdns3/drd.c
50
if (cdns->version != CDNS3_CONTROLLER_V0)
drivers/usb/cdns3/drd.c
501
bool cdns_power_is_lost(struct cdns *cdns)
drivers/usb/cdns3/drd.c
503
if (cdns->version == CDNS3_CONTROLLER_V0) {
drivers/usb/cdns3/drd.c
504
if (!(readl(&cdns->otg_v0_regs->simulate) & BIT(0)))
drivers/usb/cdns3/drd.c
507
if (!(readl(&cdns->otg_v1_regs->simulate) & BIT(0)))
drivers/usb/cdns3/drd.c
57
if (cdns->version == CDNS3_CONTROLLER_V1) {
drivers/usb/cdns3/drd.c
64
if (cdns->phyrst_a_enable) {
drivers/usb/cdns3/drd.c
65
reg = readl(&cdns->otg_v1_regs->phyrst_cfg);
drivers/usb/cdns3/drd.c
67
writel(reg, &cdns->otg_v1_regs->phyrst_cfg);
drivers/usb/cdns3/drd.c
79
dev_err(cdns->dev, "Unsupported mode of operation %d\n", mode);
drivers/usb/cdns3/drd.c
86
int cdns_get_id(struct cdns *cdns)
drivers/usb/cdns3/drd.c
90
id = readl(&cdns->otg_regs->sts) & OTGSTS_ID_VALUE;
drivers/usb/cdns3/drd.c
91
dev_dbg(cdns->dev, "OTG ID: %d", id);
drivers/usb/cdns3/drd.c
96
int cdns_get_vbus(struct cdns *cdns)
drivers/usb/cdns3/drd.h
212
bool cdns_is_host(struct cdns *cdns);
drivers/usb/cdns3/drd.h
213
bool cdns_is_device(struct cdns *cdns);
drivers/usb/cdns3/drd.h
214
int cdns_get_id(struct cdns *cdns);
drivers/usb/cdns3/drd.h
215
int cdns_get_vbus(struct cdns *cdns);
drivers/usb/cdns3/drd.h
216
void cdns_clear_vbus(struct cdns *cdns);
drivers/usb/cdns3/drd.h
217
void cdns_set_vbus(struct cdns *cdns);
drivers/usb/cdns3/drd.h
218
int cdns_drd_init(struct cdns *cdns);
drivers/usb/cdns3/drd.h
219
int cdns_drd_exit(struct cdns *cdns);
drivers/usb/cdns3/drd.h
220
int cdns_drd_update_mode(struct cdns *cdns);
drivers/usb/cdns3/drd.h
221
int cdns_drd_gadget_on(struct cdns *cdns);
drivers/usb/cdns3/drd.h
222
void cdns_drd_gadget_off(struct cdns *cdns);
drivers/usb/cdns3/drd.h
223
int cdns_drd_host_on(struct cdns *cdns);
drivers/usb/cdns3/drd.h
224
void cdns_drd_host_off(struct cdns *cdns);
drivers/usb/cdns3/drd.h
225
bool cdns_power_is_lost(struct cdns *cdns);
drivers/usb/cdns3/gadget-export.h
15
int cdnsp_gadget_init(struct cdns *cdns);
drivers/usb/cdns3/gadget-export.h
18
static inline int cdnsp_gadget_init(struct cdns *cdns)
drivers/usb/cdns3/gadget-export.h
27
int cdns3_gadget_init(struct cdns *cdns);
drivers/usb/cdns3/gadget-export.h
30
static inline int cdns3_gadget_init(struct cdns *cdns)
drivers/usb/cdns3/host-export.h
14
int cdns_host_init(struct cdns *cdns);
drivers/usb/cdns3/host-export.h
18
static inline int cdns_host_init(struct cdns *cdns)
drivers/usb/cdns3/host-export.h
23
static inline void cdns_host_exit(struct cdns *cdns) { }
drivers/usb/cdns3/host.c
100
if (!cdns->xhci_plat_data) {
drivers/usb/cdns3/host.c
105
if (cdns->pdata && (cdns->pdata->quirks & CDNS3_DEFAULT_PM_RUNTIME_ALLOW))
drivers/usb/cdns3/host.c
106
cdns->xhci_plat_data->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;
drivers/usb/cdns3/host.c
108
ret = platform_device_add_data(xhci, cdns->xhci_plat_data,
drivers/usb/cdns3/host.c
115
dev_err(cdns->dev, "failed to register xHCI device\n");
drivers/usb/cdns3/host.c
122
cdns->xhci_regs = hcd->regs;
drivers/usb/cdns3/host.c
127
kfree(cdns->xhci_plat_data);
drivers/usb/cdns3/host.c
133
static void cdns_host_exit(struct cdns *cdns)
drivers/usb/cdns3/host.c
135
kfree(cdns->xhci_plat_data);
drivers/usb/cdns3/host.c
136
platform_device_unregister(cdns->host_dev);
drivers/usb/cdns3/host.c
137
cdns->host_dev = NULL;
drivers/usb/cdns3/host.c
138
cdns_drd_host_off(cdns);
drivers/usb/cdns3/host.c
141
static int cdns_host_resume(struct cdns *cdns, bool power_lost)
drivers/usb/cdns3/host.c
143
struct usb_hcd *hcd = platform_get_drvdata(cdns->host_dev);
drivers/usb/cdns3/host.c
151
int cdns_host_init(struct cdns *cdns)
drivers/usb/cdns3/host.c
155
rdrv = devm_kzalloc(cdns->dev, sizeof(*rdrv), GFP_KERNEL);
drivers/usb/cdns3/host.c
165
cdns->roles[USB_ROLE_HOST] = rdrv;
drivers/usb/cdns3/host.c
69
static int __cdns_host_init(struct cdns *cdns)
drivers/usb/cdns3/host.c
75
cdns_drd_host_on(cdns);
drivers/usb/cdns3/host.c
79
dev_err(cdns->dev, "couldn't allocate xHCI device\n");
drivers/usb/cdns3/host.c
83
xhci->dev.parent = cdns->dev;
drivers/usb/cdns3/host.c
84
cdns->host_dev = xhci;
drivers/usb/cdns3/host.c
86
ret = platform_device_add_resources(xhci, cdns->xhci_res,
drivers/usb/cdns3/host.c
89
dev_err(cdns->dev, "couldn't add resources to xHCI device\n");
drivers/usb/cdns3/host.c
93
if (cdns->version < CDNSP_CONTROLLER_V2)
drivers/usb/cdns3/host.c
94
cdns->xhci_plat_data = kmemdup(&xhci_plat_cdns3_xhci,
drivers/usb/cdns3/host.c
97
cdns->xhci_plat_data = kmemdup(&xhci_plat_cdnsp_xhci,