linux/include/linux/nvmem-consumer.h
<<
>>
Prefs
   1/*
   2 * nvmem framework consumer.
   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_CONSUMER_H
  13#define _LINUX_NVMEM_CONSUMER_H
  14
  15#include <linux/err.h>
  16#include <linux/errno.h>
  17
  18struct device;
  19struct device_node;
  20/* consumer cookie */
  21struct nvmem_cell;
  22struct nvmem_device;
  23
  24struct nvmem_cell_info {
  25        const char              *name;
  26        unsigned int            offset;
  27        unsigned int            bytes;
  28        unsigned int            bit_offset;
  29        unsigned int            nbits;
  30};
  31
  32#if IS_ENABLED(CONFIG_NVMEM)
  33
  34/* Cell based interface */
  35struct nvmem_cell *nvmem_cell_get(struct device *dev, const char *name);
  36struct nvmem_cell *devm_nvmem_cell_get(struct device *dev, const char *name);
  37void nvmem_cell_put(struct nvmem_cell *cell);
  38void devm_nvmem_cell_put(struct device *dev, struct nvmem_cell *cell);
  39void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len);
  40int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len);
  41int nvmem_cell_read_u32(struct device *dev, const char *cell_id, u32 *val);
  42
  43/* direct nvmem device read/write interface */
  44struct nvmem_device *nvmem_device_get(struct device *dev, const char *name);
  45struct nvmem_device *devm_nvmem_device_get(struct device *dev,
  46                                           const char *name);
  47void nvmem_device_put(struct nvmem_device *nvmem);
  48void devm_nvmem_device_put(struct device *dev, struct nvmem_device *nvmem);
  49int nvmem_device_read(struct nvmem_device *nvmem, unsigned int offset,
  50                      size_t bytes, void *buf);
  51int nvmem_device_write(struct nvmem_device *nvmem, unsigned int offset,
  52                       size_t bytes, void *buf);
  53ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem,
  54                           struct nvmem_cell_info *info, void *buf);
  55int nvmem_device_cell_write(struct nvmem_device *nvmem,
  56                            struct nvmem_cell_info *info, void *buf);
  57
  58#else
  59
  60static inline struct nvmem_cell *nvmem_cell_get(struct device *dev,
  61                                                const char *name)
  62{
  63        return ERR_PTR(-ENOSYS);
  64}
  65
  66static inline struct nvmem_cell *devm_nvmem_cell_get(struct device *dev,
  67                                       const char *name)
  68{
  69        return ERR_PTR(-ENOSYS);
  70}
  71
  72static inline void devm_nvmem_cell_put(struct device *dev,
  73                                       struct nvmem_cell *cell)
  74{
  75
  76}
  77static inline void nvmem_cell_put(struct nvmem_cell *cell)
  78{
  79}
  80
  81static inline void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len)
  82{
  83        return ERR_PTR(-ENOSYS);
  84}
  85
  86static inline int nvmem_cell_write(struct nvmem_cell *cell,
  87                                    const char *buf, size_t len)
  88{
  89        return -ENOSYS;
  90}
  91
  92static inline int nvmem_cell_read_u32(struct device *dev,
  93                                      const char *cell_id, u32 *val)
  94{
  95        return -ENOSYS;
  96}
  97
  98static inline struct nvmem_device *nvmem_device_get(struct device *dev,
  99                                                    const char *name)
 100{
 101        return ERR_PTR(-ENOSYS);
 102}
 103
 104static inline struct nvmem_device *devm_nvmem_device_get(struct device *dev,
 105                                                         const char *name)
 106{
 107        return ERR_PTR(-ENOSYS);
 108}
 109
 110static inline void nvmem_device_put(struct nvmem_device *nvmem)
 111{
 112}
 113
 114static inline void devm_nvmem_device_put(struct device *dev,
 115                                         struct nvmem_device *nvmem)
 116{
 117}
 118
 119static inline ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem,
 120                                         struct nvmem_cell_info *info,
 121                                         void *buf)
 122{
 123        return -ENOSYS;
 124}
 125
 126static inline int nvmem_device_cell_write(struct nvmem_device *nvmem,
 127                                          struct nvmem_cell_info *info,
 128                                          void *buf)
 129{
 130        return -ENOSYS;
 131}
 132
 133static inline int nvmem_device_read(struct nvmem_device *nvmem,
 134                                    unsigned int offset, size_t bytes,
 135                                    void *buf)
 136{
 137        return -ENOSYS;
 138}
 139
 140static inline int nvmem_device_write(struct nvmem_device *nvmem,
 141                                     unsigned int offset, size_t bytes,
 142                                     void *buf)
 143{
 144        return -ENOSYS;
 145}
 146#endif /* CONFIG_NVMEM */
 147
 148#if IS_ENABLED(CONFIG_NVMEM) && IS_ENABLED(CONFIG_OF)
 149struct nvmem_cell *of_nvmem_cell_get(struct device_node *np,
 150                                     const char *name);
 151struct nvmem_device *of_nvmem_device_get(struct device_node *np,
 152                                         const char *name);
 153#else
 154static inline struct nvmem_cell *of_nvmem_cell_get(struct device_node *np,
 155                                     const char *name)
 156{
 157        return ERR_PTR(-ENOSYS);
 158}
 159
 160static inline struct nvmem_device *of_nvmem_device_get(struct device_node *np,
 161                                                       const char *name)
 162{
 163        return ERR_PTR(-ENOSYS);
 164}
 165#endif /* CONFIG_NVMEM && CONFIG_OF */
 166
 167#endif  /* ifndef _LINUX_NVMEM_CONSUMER_H */
 168