| .. | .. |
|---|
| 1 | | -// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) |
|---|
| 2 | | -// Copyright(c) 2015-17 Intel Corporation. |
|---|
| 1 | +/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ |
|---|
| 2 | +/* Copyright(c) 2015-17 Intel Corporation. */ |
|---|
| 3 | 3 | |
|---|
| 4 | 4 | #ifndef __SDW_INTEL_LOCAL_H |
|---|
| 5 | 5 | #define __SDW_INTEL_LOCAL_H |
|---|
| 6 | 6 | |
|---|
| 7 | 7 | /** |
|---|
| 8 | | - * struct sdw_intel_res - Soundwire link resources |
|---|
| 8 | + * struct sdw_intel_link_res - Soundwire Intel link resource structure, |
|---|
| 9 | + * typically populated by the controller driver. |
|---|
| 10 | + * @pdev: platform_device |
|---|
| 11 | + * @mmio_base: mmio base of SoundWire registers |
|---|
| 9 | 12 | * @registers: Link IO registers base |
|---|
| 10 | 13 | * @shim: Audio shim pointer |
|---|
| 11 | 14 | * @alh: ALH (Audio Link Hub) pointer |
|---|
| 12 | 15 | * @irq: Interrupt line |
|---|
| 13 | 16 | * @ops: Shim callback ops |
|---|
| 14 | | - * @arg: Shim callback ops argument |
|---|
| 15 | | - * |
|---|
| 16 | | - * This is set as pdata for each link instance. |
|---|
| 17 | + * @dev: device implementing hw_params and free callbacks |
|---|
| 18 | + * @shim_lock: mutex to handle access to shared SHIM registers |
|---|
| 19 | + * @shim_mask: global pointer to check SHIM register initialization |
|---|
| 20 | + * @clock_stop_quirks: mask defining requested behavior on pm_suspend |
|---|
| 21 | + * @link_mask: global mask needed for power-up/down sequences |
|---|
| 22 | + * @cdns: Cadence master descriptor |
|---|
| 23 | + * @list: used to walk-through all masters exposed by the same controller |
|---|
| 17 | 24 | */ |
|---|
| 18 | 25 | struct sdw_intel_link_res { |
|---|
| 26 | + struct platform_device *pdev; |
|---|
| 27 | + void __iomem *mmio_base; /* not strictly needed, useful for debug */ |
|---|
| 19 | 28 | void __iomem *registers; |
|---|
| 20 | 29 | void __iomem *shim; |
|---|
| 21 | 30 | void __iomem *alh; |
|---|
| 22 | 31 | int irq; |
|---|
| 23 | 32 | const struct sdw_intel_ops *ops; |
|---|
| 24 | | - void *arg; |
|---|
| 33 | + struct device *dev; |
|---|
| 34 | + struct mutex *shim_lock; /* protect shared registers */ |
|---|
| 35 | + u32 *shim_mask; |
|---|
| 36 | + u32 clock_stop_quirks; |
|---|
| 37 | + u32 link_mask; |
|---|
| 38 | + struct sdw_cdns *cdns; |
|---|
| 39 | + struct list_head list; |
|---|
| 25 | 40 | }; |
|---|
| 26 | 41 | |
|---|
| 42 | +struct sdw_intel { |
|---|
| 43 | + struct sdw_cdns cdns; |
|---|
| 44 | + int instance; |
|---|
| 45 | + struct sdw_intel_link_res *link_res; |
|---|
| 46 | +#ifdef CONFIG_DEBUG_FS |
|---|
| 47 | + struct dentry *debugfs; |
|---|
| 48 | +#endif |
|---|
| 49 | +}; |
|---|
| 50 | + |
|---|
| 51 | +#define SDW_INTEL_QUIRK_MASK_BUS_DISABLE BIT(1) |
|---|
| 52 | + |
|---|
| 53 | +int intel_master_startup(struct platform_device *pdev); |
|---|
| 54 | +int intel_master_process_wakeen_event(struct platform_device *pdev); |
|---|
| 55 | + |
|---|
| 27 | 56 | #endif /* __SDW_INTEL_LOCAL_H */ |
|---|