Skip to content

Commit

Permalink
nvmem: layouts: add fixed cells layout
Browse files Browse the repository at this point in the history
This adds a driver for the "fixed-layout" NVMEM layout binding. It
allows defining NVMEM cells in a layout DT node named "nvmem-layout".

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  • Loading branch information
Rafał Miłecki authored and intel-lab-lkp committed Mar 17, 2023
1 parent 70d21b7 commit 7ffae9a
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/nvmem/layouts/Kconfig
Expand Up @@ -2,6 +2,14 @@

menu "Layout Types"

config NVMEM_LAYOUT_FIXED
tristate "Fixed cells layout support"
help
Say Y here if you want to support layout with fixed cells (hardcoded
offsets and sizes).

If unsure, say N.

config NVMEM_LAYOUT_SL28_VPD
tristate "Kontron sl28 VPD layout support"
select CRC8
Expand Down
1 change: 1 addition & 0 deletions drivers/nvmem/layouts/Makefile
Expand Up @@ -3,5 +3,6 @@
# Makefile for nvmem layouts.
#

obj-$(CONFIG_NVMEM_LAYOUT_FIXED) += fixed.o
obj-$(CONFIG_NVMEM_LAYOUT_SL28_VPD) += sl28vpd.o
obj-$(CONFIG_NVMEM_LAYOUT_ONIE_TLV) += onie-tlv.o
41 changes: 41 additions & 0 deletions drivers/nvmem/layouts/fixed.c
@@ -0,0 +1,41 @@
// SPDX-License-Identifier: GPL-2.0

#include <linux/module.h>
#include <linux/nvmem-consumer.h>
#include <linux/nvmem-provider.h>
#include <linux/of.h>

static int fixed_add_cells(struct device *dev, struct nvmem_device *nvmem,
struct nvmem_layout *layout)
{
struct device_node *layout_np;
int err;

layout_np = of_nvmem_layout_get_container(nvmem);
if (!layout_np)
return -ENOENT;

err = nvmem_add_cells_from_of(nvmem, layout_np);

of_node_put(layout_np);

return err;
}

static const struct of_device_id fixed_of_match_table[] = {
{ .compatible = "fixed-layout" },
{},
};
MODULE_DEVICE_TABLE(of, fixed_of_match_table);

struct nvmem_layout fixed_nvmem_layout = {
.name = "fixed-layout",
.of_match_table = fixed_of_match_table,
.add_cells = fixed_add_cells,
};

module_nvmem_layout_driver(fixed_nvmem_layout);

MODULE_AUTHOR("Rafał Miłecki");
MODULE_LICENSE("GPL");
MODULE_DEVICE_TABLE(of, fixed_of_match_table);

0 comments on commit 7ffae9a

Please sign in to comment.