1 /* 2 * nvmem framework provider. 3 * 4 * Copyright (C) 2015 Srinivas Kandagatla <srinivas.kandagatla@linaro.org> 5 * Copyright (C) 2013 Maxime Ripard <maxime.ripard@free-electrons.com> 6 * 7 * This file is licensed under the terms of the GNU General Public 8 * License version 2. This program is licensed "as is" without any 9 * warranty of any kind, whether express or implied. 10 */ 11 12 #ifndef _LINUX_NVMEM_PROVIDER_H 13 #define _LINUX_NVMEM_PROVIDER_H 14 15 struct nvmem_device; 16 struct nvmem_cell_info; 17 typedef int (*nvmem_reg_read_t)(void *priv, unsigned int offset, 18 void *val, size_t bytes); 19 typedef int (*nvmem_reg_write_t)(void *priv, unsigned int offset, 20 void *val, size_t bytes); 21 22 struct nvmem_config { 23 struct device *dev; 24 const char *name; 25 int id; 26 struct module *owner; 27 const struct nvmem_cell_info *cells; 28 int ncells; 29 bool read_only; 30 bool root_only; 31 nvmem_reg_read_t reg_read; 32 nvmem_reg_write_t reg_write; 33 int size; 34 int word_size; 35 int stride; 36 void *priv; 37 /* To be only used by old driver/misc/eeprom drivers */ 38 bool compat; 39 struct device *base_dev; 40 }; 41 42 #if IS_ENABLED(CONFIG_NVMEM) 43 44 struct nvmem_device *nvmem_register(const struct nvmem_config *cfg); 45 int nvmem_unregister(struct nvmem_device *nvmem); 46 47 #else 48 nvmem_register(const struct nvmem_config * c)49static inline struct nvmem_device *nvmem_register(const struct nvmem_config *c) 50 { 51 return ERR_PTR(-ENOSYS); 52 } 53 nvmem_unregister(struct nvmem_device * nvmem)54static inline int nvmem_unregister(struct nvmem_device *nvmem) 55 { 56 return -ENOSYS; 57 } 58 59 #endif /* CONFIG_NVMEM */ 60 #endif /* ifndef _LINUX_NVMEM_PROVIDER_H */ 61