diff options
author | Sanyog Kale <sanyog.r.kale@intel.com> | 2018-04-26 15:08:23 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2018-05-11 18:17:05 +0200 |
commit | 79df15b7d37c80aee5dff361841500c79e62b1e0 (patch) | |
tree | 538e5e52d27fe34a578d992a2be83be0fd93b14e /drivers/soundwire/bus.c | |
parent | soundwire: Add Master and Slave port programming (diff) | |
download | linux-79df15b7d37c80aee5dff361841500c79e62b1e0.tar.xz linux-79df15b7d37c80aee5dff361841500c79e62b1e0.zip |
soundwire: Add helpers for ports operations
Add helpers to configure, prepare, enable, disable and
de-prepare ports.
Signed-off-by: Sanyog Kale <sanyog.r.kale@intel.com>
Signed-off-by: Shreyas NC <shreyas.nc@intel.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/soundwire/bus.c')
-rw-r--r-- | drivers/soundwire/bus.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index abf046f6b188..b8c93f0ac0a0 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -577,6 +577,32 @@ static void sdw_modify_slave_status(struct sdw_slave *slave, mutex_unlock(&slave->bus->bus_lock); } +int sdw_configure_dpn_intr(struct sdw_slave *slave, + int port, bool enable, int mask) +{ + u32 addr; + int ret; + u8 val = 0; + + addr = SDW_DPN_INTMASK(port); + + /* Set/Clear port ready interrupt mask */ + if (enable) { + val |= mask; + val |= SDW_DPN_INT_PORT_READY; + } else { + val &= ~(mask); + val &= ~SDW_DPN_INT_PORT_READY; + } + + ret = sdw_update(slave, addr, (mask | SDW_DPN_INT_PORT_READY), val); + if (ret < 0) + dev_err(slave->bus->dev, + "SDW_DPN_INTMASK write failed:%d", val); + + return ret; +} + static int sdw_initialize_slave(struct sdw_slave *slave) { struct sdw_slave_prop *prop = &slave->prop; |