in nintendo-otp.c [74:112]
static int nintendo_otp_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
const struct of_device_id *of_id =
of_match_device(nintendo_otp_of_table, dev);
struct resource *res;
struct nvmem_device *nvmem;
struct nintendo_otp_priv *priv;
struct nvmem_config config = {
.stride = WORD_SIZE,
.word_size = WORD_SIZE,
.reg_read = nintendo_otp_reg_read,
.read_only = true,
.root_only = true,
};
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
priv->regs = devm_ioremap_resource(dev, res);
if (IS_ERR(priv->regs))
return PTR_ERR(priv->regs);
if (of_id->data) {
const struct nintendo_otp_devtype_data *data = of_id->data;
config.name = data->name;
config.size = data->num_banks * BANK_SIZE;
}
config.dev = dev;
config.priv = priv;
nvmem = devm_nvmem_register(dev, &config);
return PTR_ERR_OR_ZERO(nvmem);
}