Lines Matching +full:imx6q +full:- +full:snvs +full:- +full:lpgpr
1 // SPDX-License-Identifier: GPL-2.0-only
9 #include <linux/nvmem-provider.h>
56 const struct snvs_lpgpr_cfg *dcfg = priv->dcfg; in snvs_lpgpr_write()
60 ret = regmap_read(priv->regmap, dcfg->offset_hplr, &lock_reg); in snvs_lpgpr_write()
65 return -EPERM; in snvs_lpgpr_write()
67 ret = regmap_read(priv->regmap, dcfg->offset_lplr, &lock_reg); in snvs_lpgpr_write()
72 return -EPERM; in snvs_lpgpr_write()
74 return regmap_bulk_write(priv->regmap, dcfg->offset + offset, val, in snvs_lpgpr_write()
82 const struct snvs_lpgpr_cfg *dcfg = priv->dcfg; in snvs_lpgpr_read()
84 return regmap_bulk_read(priv->regmap, dcfg->offset + offset, in snvs_lpgpr_read()
90 struct device *dev = &pdev->dev; in snvs_lpgpr_probe()
91 struct device_node *node = dev->of_node; in snvs_lpgpr_probe()
99 return -ENOENT; in snvs_lpgpr_probe()
103 return -ENOMEM; in snvs_lpgpr_probe()
107 return -EINVAL; in snvs_lpgpr_probe()
111 return -ENODEV; in snvs_lpgpr_probe()
113 priv->regmap = syscon_node_to_regmap(syscon_node); in snvs_lpgpr_probe()
115 if (IS_ERR(priv->regmap)) in snvs_lpgpr_probe()
116 return PTR_ERR(priv->regmap); in snvs_lpgpr_probe()
118 priv->dcfg = dcfg; in snvs_lpgpr_probe()
120 cfg = &priv->cfg; in snvs_lpgpr_probe()
121 cfg->priv = priv; in snvs_lpgpr_probe()
122 cfg->name = dev_name(dev); in snvs_lpgpr_probe()
123 cfg->dev = dev; in snvs_lpgpr_probe()
124 cfg->stride = 4; in snvs_lpgpr_probe()
125 cfg->word_size = 4; in snvs_lpgpr_probe()
126 cfg->size = dcfg->size, in snvs_lpgpr_probe()
127 cfg->owner = THIS_MODULE; in snvs_lpgpr_probe()
128 cfg->reg_read = snvs_lpgpr_read; in snvs_lpgpr_probe()
129 cfg->reg_write = snvs_lpgpr_write; in snvs_lpgpr_probe()
137 { .compatible = "fsl,imx6q-snvs-lpgpr", .data = &snvs_lpgpr_cfg_imx6q },
138 { .compatible = "fsl,imx6ul-snvs-lpgpr",
140 { .compatible = "fsl,imx7d-snvs-lpgpr", .data = &snvs_lpgpr_cfg_imx7d },
155 MODULE_DESCRIPTION("Low Power General Purpose Register in i.MX6 and i.MX7 Secure Non-Volatile Stora…