static int nintendo_otp_probe()

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);
}