Lines Matching +full:nvmem +full:- +full:layout
1 // SPDX-License-Identifier: GPL-2.0
5 #include <linux/nvmem-consumer.h>
6 #include <linux/nvmem-provider.h>
29 return -EINVAL; in sl28vpd_mac_address_pp()
32 return -EINVAL; in sl28vpd_mac_address_pp()
35 return -EINVAL; in sl28vpd_mac_address_pp()
44 .name = "serial-number",
49 .name = "base-mac-address",
56 static int sl28vpd_v1_check_crc(struct device *dev, struct nvmem_device *nvmem) in sl28vpd_v1_check_crc() argument
65 ret = nvmem_device_read(nvmem, 0, sizeof(data_v1), &data_v1); in sl28vpd_v1_check_crc()
69 return -EIO; in sl28vpd_v1_check_crc()
71 crc = crc8(table, (void *)&data_v1, sizeof(data_v1) - 1, 0); in sl28vpd_v1_check_crc()
77 return -EINVAL; in sl28vpd_v1_check_crc()
83 static int sl28vpd_add_cells(struct device *dev, struct nvmem_device *nvmem) in sl28vpd_add_cells() argument
92 ret = nvmem_device_read(nvmem, 0, sizeof(hdr), &hdr); in sl28vpd_add_cells()
96 return -EIO; in sl28vpd_add_cells()
100 return -EINVAL; in sl28vpd_add_cells()
105 return -EINVAL; in sl28vpd_add_cells()
108 ret = sl28vpd_v1_check_crc(dev, nvmem); in sl28vpd_add_cells()
112 layout_np = of_nvmem_layout_get_container(nvmem); in sl28vpd_add_cells()
114 return -ENOENT; in sl28vpd_add_cells()
119 info.name = pinfo->name; in sl28vpd_add_cells()
120 info.offset = pinfo->offset; in sl28vpd_add_cells()
121 info.bytes = pinfo->bytes; in sl28vpd_add_cells()
122 info.read_post_process = pinfo->read_post_process; in sl28vpd_add_cells()
123 info.np = of_get_child_by_name(layout_np, pinfo->name); in sl28vpd_add_cells()
125 ret = nvmem_add_one_cell(nvmem, &info); in sl28vpd_add_cells()
138 { .compatible = "kontron,sl28-vpd" },
144 .name = "sl28-vpd",
152 MODULE_DESCRIPTION("NVMEM layout driver for the VPD of Kontron sl28 boards");