xref: /linux/include/linux/soc/cirrus/ep93xx.h (revision 3fd6c59042dbba50391e30862beac979491145fe)
167e38f57SArnd Bergmann /* SPDX-License-Identifier: GPL-2.0 */
267e38f57SArnd Bergmann #ifndef _SOC_EP93XX_H
367e38f57SArnd Bergmann #define _SOC_EP93XX_H
467e38f57SArnd Bergmann 
5*ede5bbe4SNikita Shubin struct regmap;
6*ede5bbe4SNikita Shubin struct spinlock_t;
7*ede5bbe4SNikita Shubin 
8*ede5bbe4SNikita Shubin enum ep93xx_soc_model {
9*ede5bbe4SNikita Shubin 	EP93XX_9301_SOC,
10*ede5bbe4SNikita Shubin 	EP93XX_9307_SOC,
11*ede5bbe4SNikita Shubin 	EP93XX_9312_SOC,
12*ede5bbe4SNikita Shubin };
13*ede5bbe4SNikita Shubin 
14*ede5bbe4SNikita Shubin #include <linux/auxiliary_bus.h>
15*ede5bbe4SNikita Shubin #include <linux/compiler_types.h>
16*ede5bbe4SNikita Shubin #include <linux/container_of.h>
1767e38f57SArnd Bergmann 
1867e38f57SArnd Bergmann #define EP93XX_CHIP_REV_D0	3
1967e38f57SArnd Bergmann #define EP93XX_CHIP_REV_D1	4
2067e38f57SArnd Bergmann #define EP93XX_CHIP_REV_E0	5
2167e38f57SArnd Bergmann #define EP93XX_CHIP_REV_E1	6
2267e38f57SArnd Bergmann #define EP93XX_CHIP_REV_E2	7
2367e38f57SArnd Bergmann 
24*ede5bbe4SNikita Shubin struct ep93xx_regmap_adev {
25*ede5bbe4SNikita Shubin 	struct auxiliary_device adev;
26*ede5bbe4SNikita Shubin 	struct regmap *map;
27*ede5bbe4SNikita Shubin 	void __iomem *base;
28*ede5bbe4SNikita Shubin 	spinlock_t *lock;
29*ede5bbe4SNikita Shubin 	void (*write)(struct regmap *map, spinlock_t *lock, unsigned int reg,
30*ede5bbe4SNikita Shubin 		      unsigned int val);
31*ede5bbe4SNikita Shubin 	void (*update_bits)(struct regmap *map, spinlock_t *lock,
32*ede5bbe4SNikita Shubin 			    unsigned int reg, unsigned int mask, unsigned int val);
33*ede5bbe4SNikita Shubin };
34*ede5bbe4SNikita Shubin 
35*ede5bbe4SNikita Shubin #define to_ep93xx_regmap_adev(_adev) \
36*ede5bbe4SNikita Shubin 	container_of((_adev), struct ep93xx_regmap_adev, adev)
37*ede5bbe4SNikita Shubin 
3867e38f57SArnd Bergmann #endif
39