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
  15#include <linux/err.h>
  16#include <linux/errno.h>
  17
  18struct nvmem_device;
  19struct nvmem_cell_info;
  20typedef int (*nvmem_reg_read_t)(void *priv, unsigned int offset,
  21                                void *val, size_t bytes);
  22typedef int (*nvmem_reg_write_t)(void *priv, unsigned int offset,
  23                                 void *val, size_t bytes);
  24
  25struct nvmem_config {
  26        struct device           *dev;
  27        const char              *name;
  28        int                     id;
  29        struct module           *owner;
  30        const struct nvmem_cell_info    *cells;
  31        int                     ncells;
  32        bool                    read_only;
  33        bool                    root_only;
  34        nvmem_reg_read_t        reg_read;
  35        nvmem_reg_write_t       reg_write;
  36        int     size;
  37        int     word_size;
  38        int     stride;
  39        void    *priv;
  40        /* To be only used by old driver/misc/eeprom drivers */
  41        bool                    compat;
  42        struct device           *base_dev;
  43};
  44
  45#if IS_ENABLED(CONFIG_NVMEM)
  46
  47struct nvmem_device *nvmem_register(const struct nvmem_config *cfg);
  48int nvmem_unregister(struct nvmem_device *nvmem);
  49
  50#else
  51
  52static inline struct nvmem_device *nvmem_register(const struct nvmem_config *c)
  53{
  54        return ERR_PTR(-ENOSYS);
  55}
  56
  57static inline int nvmem_unregister(struct nvmem_device *nvmem)
  58{
  59        return -ENOSYS;
  60}
  61
  62#endif /* CONFIG_NVMEM */
  63#endif  /* ifndef _LINUX_NVMEM_PROVIDER_H */
  64