diff options
Diffstat (limited to 'drivers/nvmem/snvs_lpgpr.c')
-rw-r--r-- | drivers/nvmem/snvs_lpgpr.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/drivers/nvmem/snvs_lpgpr.c b/drivers/nvmem/snvs_lpgpr.c index 1890af135d..9bbee6d587 100644 --- a/drivers/nvmem/snvs_lpgpr.c +++ b/drivers/nvmem/snvs_lpgpr.c @@ -1,10 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2015 Pengutronix, Steffen Trumtrar <kernel@pengutronix.de> * Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 - * as published by the Free Software Foundation. */ #include <common.h> #include <driver.h> @@ -13,7 +10,7 @@ #include <of.h> #include <of_device.h> #include <malloc.h> -#include <regmap.h> +#include <linux/regmap.h> #include <mfd/syscon.h> #include <linux/nvmem-provider.h> @@ -30,7 +27,7 @@ struct snvs_lpgpr_cfg { }; struct snvs_lpgpr_priv { - struct device_d *dev; + struct device *dev; struct regmap *regmap; struct nvmem_config cfg; const struct snvs_lpgpr_cfg *dcfg; @@ -64,7 +61,7 @@ static int snvs_lpgpr_write(void *ctx, unsigned offset, const void *val, size_t return -EPERM; return regmap_bulk_write(priv->regmap, dcfg->offset + offset, val, - bytes); + bytes / 4); } static int snvs_lpgpr_read(void *ctx, unsigned offset, void *val, size_t bytes) @@ -73,17 +70,12 @@ static int snvs_lpgpr_read(void *ctx, unsigned offset, void *val, size_t bytes) const struct snvs_lpgpr_cfg *dcfg = priv->dcfg; return regmap_bulk_read(priv->regmap, dcfg->offset + offset, - val, bytes); + val, bytes / 4); } -static const struct nvmem_bus snvs_lpgpr_nvmem_bus = { - .write = snvs_lpgpr_write, - .read = snvs_lpgpr_read, -}; - -static int snvs_lpgpr_probe(struct device_d *dev) +static int snvs_lpgpr_probe(struct device *dev) { - struct device_node *node = dev->device_node; + struct device_node *node = dev->of_node; struct device_node *syscon_node; struct snvs_lpgpr_priv *priv; struct nvmem_config *cfg; @@ -115,7 +107,8 @@ static int snvs_lpgpr_probe(struct device_d *dev) cfg->stride = 4; cfg->word_size = 4; cfg->size = 4; - cfg->bus = &snvs_lpgpr_nvmem_bus; + cfg->reg_write = snvs_lpgpr_write; + cfg->reg_read = snvs_lpgpr_read; nvmem = nvmem_register(cfg); if (IS_ERR(nvmem)) { @@ -131,8 +124,9 @@ static __maybe_unused struct of_device_id snvs_lpgpr_dt_ids[] = { { .compatible = "fsl,imx6ul-snvs-lpgpr", .data = &snvs_lpgpr_cfg_imx6q }, { }, }; +MODULE_DEVICE_TABLE(of, snvs_lpgpr_dt_ids); -static struct driver_d snvs_lpgpr_driver = { +static struct driver snvs_lpgpr_driver = { .name = "snvs_lpgpr", .probe = snvs_lpgpr_probe, .of_compatible = DRV_OF_COMPAT(snvs_lpgpr_dt_ids), |