1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Core MFD defines for ATC260x PMICs 4 * 5 * Copyright (C) 2019 Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 6 * Copyright (C) 2020 Cristian Ciocaltea <cristian.ciocaltea@gmail.com> 7 */ 8 9 #ifndef __LINUX_MFD_ATC260X_CORE_H 10 #define __LINUX_MFD_ATC260X_CORE_H 11 12 #include <linux/mfd/atc260x/atc2603c.h> 13 #include <linux/mfd/atc260x/atc2609a.h> 14 15 enum atc260x_type { 16 ATC2603A = 0, 17 ATC2603C, 18 ATC2609A, 19 }; 20 21 enum atc260x_ver { 22 ATC260X_A = 0, 23 ATC260X_B, 24 ATC260X_C, 25 ATC260X_D, 26 ATC260X_E, 27 ATC260X_F, 28 ATC260X_G, 29 ATC260X_H, 30 }; 31 32 struct atc260x { 33 struct device *dev; 34 35 struct regmap *regmap; 36 const struct regmap_irq_chip *regmap_irq_chip; 37 struct regmap_irq_chip_data *irq_data; 38 39 struct mutex *regmap_mutex; /* mutex for custom regmap locking */ 40 41 const struct mfd_cell *cells; 42 int nr_cells; 43 int irq; 44 45 enum atc260x_type ic_type; 46 enum atc260x_ver ic_ver; 47 const char *type_name; 48 unsigned int rev_reg; 49 50 const struct atc260x_init_regs *init_regs; /* regs for device init */ 51 }; 52 53 struct regmap_config; 54 55 int atc260x_match_device(struct atc260x *atc260x, struct regmap_config *regmap_cfg); 56 int atc260x_device_probe(struct atc260x *atc260x); 57 58 #endif /* __LINUX_MFD_ATC260X_CORE_H */ 59