mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
nvmem: add support for cell lookups from machine code
Add a way for machine code users to associate devices with nvmem cells. This restores the support for non-DT systems but following a different approach. Cells must now be associated with devices using provided routines and data structures before they can be retrieved using nvmem_cell_get(). It's still possible to define cells statically in nvmem_config but cells created this way still need to be associated with consumers using lookup entries. Note that nvmem_find() must be moved higher in the source file as we want to call it from __nvmem_device_get() for devices that don't have a device node. The signature of __nvmem_device_get() is also changed as it's no longer used to retrieve cells. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e888d445ac
commit
506157be06
@@ -29,6 +29,24 @@ struct nvmem_cell_info {
|
||||
unsigned int nbits;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct nvmem_cell_lookup - cell lookup entry
|
||||
*
|
||||
* @nvmem_name: Name of the provider.
|
||||
* @cell_name: Name of the nvmem cell as defined in the name field of
|
||||
* struct nvmem_cell_info.
|
||||
* @dev_id: Name of the consumer device that will be associated with
|
||||
* this cell.
|
||||
* @con_id: Connector id for this cell lookup.
|
||||
*/
|
||||
struct nvmem_cell_lookup {
|
||||
const char *nvmem_name;
|
||||
const char *cell_name;
|
||||
const char *dev_id;
|
||||
const char *con_id;
|
||||
struct list_head node;
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_NVMEM)
|
||||
|
||||
/* Cell based interface */
|
||||
@@ -57,6 +75,11 @@ int nvmem_device_cell_write(struct nvmem_device *nvmem,
|
||||
|
||||
const char *nvmem_dev_name(struct nvmem_device *nvmem);
|
||||
|
||||
void nvmem_add_cell_lookups(struct nvmem_cell_lookup *entries,
|
||||
size_t nentries);
|
||||
void nvmem_del_cell_lookups(struct nvmem_cell_lookup *entries,
|
||||
size_t nentries);
|
||||
|
||||
#else
|
||||
|
||||
static inline struct nvmem_cell *nvmem_cell_get(struct device *dev,
|
||||
@@ -151,6 +174,11 @@ static inline const char *nvmem_dev_name(struct nvmem_device *nvmem)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
nvmem_add_cell_lookups(struct nvmem_cell_lookup *entries, size_t nentries) {}
|
||||
static inline void
|
||||
nvmem_del_cell_lookups(struct nvmem_cell_lookup *entries, size_t nentries) {}
|
||||
|
||||
#endif /* CONFIG_NVMEM */
|
||||
|
||||
#if IS_ENABLED(CONFIG_NVMEM) && IS_ENABLED(CONFIG_OF)
|
||||
|
||||
Reference in New Issue
Block a user