18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ 28c2ecf20Sopenharmony_ci/* Copyright(c) 2015-17 Intel Corporation. */ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#ifndef __SDW_INTEL_LOCAL_H 58c2ecf20Sopenharmony_ci#define __SDW_INTEL_LOCAL_H 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci/** 88c2ecf20Sopenharmony_ci * struct sdw_intel_link_res - Soundwire Intel link resource structure, 98c2ecf20Sopenharmony_ci * typically populated by the controller driver. 108c2ecf20Sopenharmony_ci * @pdev: platform_device 118c2ecf20Sopenharmony_ci * @mmio_base: mmio base of SoundWire registers 128c2ecf20Sopenharmony_ci * @registers: Link IO registers base 138c2ecf20Sopenharmony_ci * @shim: Audio shim pointer 148c2ecf20Sopenharmony_ci * @alh: ALH (Audio Link Hub) pointer 158c2ecf20Sopenharmony_ci * @irq: Interrupt line 168c2ecf20Sopenharmony_ci * @ops: Shim callback ops 178c2ecf20Sopenharmony_ci * @dev: device implementing hw_params and free callbacks 188c2ecf20Sopenharmony_ci * @shim_lock: mutex to handle access to shared SHIM registers 198c2ecf20Sopenharmony_ci * @shim_mask: global pointer to check SHIM register initialization 208c2ecf20Sopenharmony_ci * @clock_stop_quirks: mask defining requested behavior on pm_suspend 218c2ecf20Sopenharmony_ci * @link_mask: global mask needed for power-up/down sequences 228c2ecf20Sopenharmony_ci * @cdns: Cadence master descriptor 238c2ecf20Sopenharmony_ci * @list: used to walk-through all masters exposed by the same controller 248c2ecf20Sopenharmony_ci */ 258c2ecf20Sopenharmony_cistruct sdw_intel_link_res { 268c2ecf20Sopenharmony_ci struct platform_device *pdev; 278c2ecf20Sopenharmony_ci void __iomem *mmio_base; /* not strictly needed, useful for debug */ 288c2ecf20Sopenharmony_ci void __iomem *registers; 298c2ecf20Sopenharmony_ci void __iomem *shim; 308c2ecf20Sopenharmony_ci void __iomem *alh; 318c2ecf20Sopenharmony_ci int irq; 328c2ecf20Sopenharmony_ci const struct sdw_intel_ops *ops; 338c2ecf20Sopenharmony_ci struct device *dev; 348c2ecf20Sopenharmony_ci struct mutex *shim_lock; /* protect shared registers */ 358c2ecf20Sopenharmony_ci u32 *shim_mask; 368c2ecf20Sopenharmony_ci u32 clock_stop_quirks; 378c2ecf20Sopenharmony_ci u32 link_mask; 388c2ecf20Sopenharmony_ci struct sdw_cdns *cdns; 398c2ecf20Sopenharmony_ci struct list_head list; 408c2ecf20Sopenharmony_ci}; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistruct sdw_intel { 438c2ecf20Sopenharmony_ci struct sdw_cdns cdns; 448c2ecf20Sopenharmony_ci int instance; 458c2ecf20Sopenharmony_ci struct sdw_intel_link_res *link_res; 468c2ecf20Sopenharmony_ci#ifdef CONFIG_DEBUG_FS 478c2ecf20Sopenharmony_ci struct dentry *debugfs; 488c2ecf20Sopenharmony_ci#endif 498c2ecf20Sopenharmony_ci}; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci#define SDW_INTEL_QUIRK_MASK_BUS_DISABLE BIT(1) 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ciint intel_master_startup(struct platform_device *pdev); 548c2ecf20Sopenharmony_ciint intel_master_process_wakeen_event(struct platform_device *pdev); 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci#endif /* __SDW_INTEL_LOCAL_H */ 57