1111#define ACP_DEVICE_ID 0x15E2
1212#define ACP63_REG_START 0x1240000
1313#define ACP63_REG_END 0x1250200
14- #define ACP63_DEVS 5
1514
1615#define ACP_SOFT_RESET_SOFTRESET_AUDDONE_MASK 0x00010001
1716#define ACP_PGFSM_CNTL_POWER_ON_MASK 1
5655
5756#define ACP_DMIC_DEV 2
5857
59- /* ACP63_PDM_MODE_DEVS corresponds to platform devices count for ACP PDM configuration */
60- #define ACP63_PDM_MODE_DEVS 3
61-
62- /*
63- * ACP63_SDW0_MODE_DEVS corresponds to platform devices count for
64- * SW0 SoundWire manager instance configuration
65- */
66- #define ACP63_SDW0_MODE_DEVS 2
67-
68- /*
69- * ACP63_SDW0_SDW1_MODE_DEVS corresponds to platform devices count for SW0 + SW1 SoundWire manager
70- * instances configuration
71- */
72- #define ACP63_SDW0_SDW1_MODE_DEVS 3
73-
74- /*
75- * ACP63_SDW0_PDM_MODE_DEVS corresponds to platform devices count for SW0 manager
76- * instance + ACP PDM controller configuration
77- */
78- #define ACP63_SDW0_PDM_MODE_DEVS 4
79-
80- /*
81- * ACP63_SDW0_SDW1_PDM_MODE_DEVS corresponds to platform devices count for
82- * SW0 + SW1 SoundWire manager instances + ACP PDM controller configuration
83- */
84- #define ACP63_SDW0_SDW1_PDM_MODE_DEVS 5
8558#define ACP63_DMIC_ADDR 2
8659#define ACP63_SDW_ADDR 5
8760#define AMD_SDW_MAX_MANAGERS 2
8861
8962/* time in ms for acp timeout */
9063#define ACP_TIMEOUT 500
9164
92- /* ACP63_PDM_DEV_CONFIG corresponds to platform device configuration for ACP PDM controller */
93- #define ACP63_PDM_DEV_CONFIG BIT(0)
94-
95- /* ACP63_SDW_DEV_CONFIG corresponds to platform device configuration for SDW manager instances */
96- #define ACP63_SDW_DEV_CONFIG BIT(1)
97-
98- /*
99- * ACP63_SDW_PDM_DEV_CONFIG corresponds to platform device configuration for ACP PDM + SoundWire
100- * manager instance combination.
101- */
102- #define ACP63_SDW_PDM_DEV_CONFIG GENMASK(1, 0)
10365#define ACP_SDW0_STAT BIT(21)
10466#define ACP_SDW1_STAT BIT(2)
10567#define ACP_ERROR_IRQ BIT(29)
@@ -254,21 +216,18 @@ struct sdw_dma_ring_buf_reg {
254216 * struct acp63_dev_data - acp pci driver context
255217 * @acp63_base: acp mmio base
256218 * @res: resource
257- * @pdev: array of child platform device node structures
219+ * @pdm_dev: ACP PDM controller platform device
220+ * @dmic_codec: platform device for DMIC Codec
221+ * sdw_dma_dev: platform device for SoundWire DMA controller
258222 * @acp_lock: used to protect acp common registers
259- * @sdw_fw_node: SoundWire controller fw node handle
260- * @pdev_config: platform device configuration
261- * @pdev_count: platform devices count
262- * @pdm_dev_index: pdm platform device index
263- * @sdw_manager_count: SoundWire manager instance count
264- * @sdw0_dev_index: SoundWire Manager-0 platform device index
265- * @sdw1_dev_index: SoundWire Manager-1 platform device index
266- * @sdw_dma_dev_index: SoundWire DMA controller platform device index
267223 * @info: SoundWire AMD information found in ACPI tables
224+ * @sdw: SoundWire context for all SoundWire manager instances
268225 * @is_sdw_dev: flag set to true when any SoundWire manager instances are available
269226 * @is_pdm_dev: flag set to true when ACP PDM controller exists
270227 * @is_pdm_config: flat set to true when PDM configuration is selected from BIOS
271228 * @is_sdw_config: flag set to true when SDW configuration is selected from BIOS
229+ * @addr: pci ioremap address
230+ * @reg_range: ACP reigister range
272231 * @sdw0-dma_intr_stat: DMA interrupt status array for SoundWire manager-SW0 instance
273232 * @sdw_dma_intr_stat: DMA interrupt status array for SoundWire manager-SW1 instance
274233 * @acp_reset: flag set to true when bus reset is applied across all
@@ -278,21 +237,19 @@ struct sdw_dma_ring_buf_reg {
278237struct acp63_dev_data {
279238 void __iomem * acp63_base ;
280239 struct resource * res ;
281- struct platform_device * pdev [ACP63_DEVS ];
240+ struct platform_device * pdm_dev ;
241+ struct platform_device * dmic_codec_dev ;
242+ struct platform_device * sdw_dma_dev ;
282243 struct mutex acp_lock ; /* protect shared registers */
283- struct fwnode_handle * sdw_fw_node ;
284- u16 pdev_config ;
285- u16 pdev_count ;
286- u16 pdm_dev_index ;
287- u8 sdw_manager_count ;
288- u16 sdw0_dev_index ;
289- u16 sdw1_dev_index ;
290- u16 sdw_dma_dev_index ;
291244 struct sdw_amd_acpi_info info ;
245+ /* sdw context allocated by SoundWire driver */
246+ struct sdw_amd_ctx * sdw ;
292247 bool is_sdw_dev ;
293248 bool is_pdm_dev ;
294249 bool is_pdm_config ;
295250 bool is_sdw_config ;
251+ u32 addr ;
252+ u32 reg_range ;
296253 u16 sdw0_dma_intr_stat [ACP63_SDW0_DMA_MAX_STREAMS ];
297254 u16 sdw1_dma_intr_stat [ACP63_SDW1_DMA_MAX_STREAMS ];
298255 bool acp_reset ;
0 commit comments