linux/include/linux/nvmem-provider.h
<<
>>
Prefs
   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
  15struct nvmem_device;
  16struct nvmem_cell_info;
  17typedef int (*nvmem_reg_read_t)(void *priv, unsigned int offset,
  18                                void *val, size_t bytes);
  19typedef int (*nvmem_reg_write_t)(void *priv, unsigned int offset,
  20                                 void *val, size_t bytes);
  21
  22struct 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
  44struct nvmem_device *nvmem_register(const struct nvmem_config *cfg);
  45int nvmem_unregister(struct nvmem_device *nvmem);
  46
  47#else
  48
  49static inline struct nvmem_device *nvmem_register(const struct nvmem_config *c)
  50{
  51        return ERR_PTR(-ENOSYS);
  52}
  53
  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