diff options
author | Vinod Koul <vkoul@kernel.org> | 2020-02-26 14:18:34 +0530 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-02-26 14:18:34 +0530 |
commit | ed29a0a67267777d78f7505c7044032329e6ee5f (patch) | |
tree | 3b841946fa7da66de46e3c8587ef0d3c32971e34 | |
parent | eb751d9f1fb1cfcd8c2164af8b06ce3180b9efae (diff) | |
parent | 2c6cff682d6681fb1cdb03b3cdbbecd3fb0e4c89 (diff) | |
download | linux-stable-ed29a0a67267777d78f7505c7044032329e6ee5f.tar.gz linux-stable-ed29a0a67267777d78f7505c7044032329e6ee5f.tar.bz2 linux-stable-ed29a0a67267777d78f7505c7044032329e6ee5f.zip |
Merge branch 'topic/asoc' into next
-rw-r--r-- | drivers/soundwire/bus.c | 21 | ||||
-rw-r--r-- | include/linux/soundwire/sdw.h | 23 |
2 files changed, 28 insertions, 16 deletions
diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index 13887713f311..ccaa590df61e 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -589,22 +589,11 @@ void sdw_extract_slave_id(struct sdw_bus *bus, { dev_dbg(bus->dev, "SDW Slave Addr: %llx\n", addr); - /* - * Spec definition - * Register Bit Contents - * DevId_0 [7:4] 47:44 sdw_version - * DevId_0 [3:0] 43:40 unique_id - * DevId_1 39:32 mfg_id [15:8] - * DevId_2 31:24 mfg_id [7:0] - * DevId_3 23:16 part_id [15:8] - * DevId_4 15:08 part_id [7:0] - * DevId_5 07:00 class_id - */ - id->sdw_version = (addr >> 44) & GENMASK(3, 0); - id->unique_id = (addr >> 40) & GENMASK(3, 0); - id->mfg_id = (addr >> 24) & GENMASK(15, 0); - id->part_id = (addr >> 8) & GENMASK(15, 0); - id->class_id = addr & GENMASK(7, 0); + id->sdw_version = SDW_VERSION(addr); + id->unique_id = SDW_UNIQUE_ID(addr); + id->mfg_id = SDW_MFG_ID(addr); + id->part_id = SDW_PART_ID(addr); + id->class_id = SDW_CLASS_ID(addr); dev_dbg(bus->dev, "SDW Slave class_id %x, part_id %x, mfg_id %x, unique_id %x, version %x\n", diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index b8427df034ce..ee349a4c5349 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -439,6 +439,29 @@ struct sdw_slave_id { __u8 sdw_version:4; }; +/* + * Helper macros to extract the MIPI-defined IDs + * + * Spec definition + * Register Bit Contents + * DevId_0 [7:4] 47:44 sdw_version + * DevId_0 [3:0] 43:40 unique_id + * DevId_1 39:32 mfg_id [15:8] + * DevId_2 31:24 mfg_id [7:0] + * DevId_3 23:16 part_id [15:8] + * DevId_4 15:08 part_id [7:0] + * DevId_5 07:00 class_id + * + * The MIPI DisCo for SoundWire defines in addition the link_id as bits 51:48 + */ + +#define SDW_DISCO_LINK_ID(adr) (((adr) >> 48) & GENMASK(3, 0)) +#define SDW_VERSION(adr) (((adr) >> 44) & GENMASK(3, 0)) +#define SDW_UNIQUE_ID(adr) (((adr) >> 40) & GENMASK(3, 0)) +#define SDW_MFG_ID(adr) (((adr) >> 24) & GENMASK(15, 0)) +#define SDW_PART_ID(adr) (((adr) >> 8) & GENMASK(15, 0)) +#define SDW_CLASS_ID(adr) ((adr) & GENMASK(7, 0)) + /** * struct sdw_slave_intr_status - Slave interrupt status * @control_port: control port status |