Lines Matching defs:fuse
22 #include <soc/tegra/fuse.h>
24 #include "fuse.h"
61 static struct tegra_fuse *fuse = &(struct tegra_fuse) {
101 struct tegra_fuse *fuse = priv;
105 buffer[i] = fuse->read(fuse, offset + i * 4);
112 fuse->base = (void __iomem *)base;
113 fuse->clk = NULL;
118 void __iomem *base = fuse->base;
128 fuse->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
129 if (IS_ERR(fuse->base))
130 return PTR_ERR(fuse->base);
131 fuse->phys = res->start;
133 fuse->clk = devm_clk_get(&pdev->dev, "fuse");
134 if (IS_ERR(fuse->clk)) {
135 if (PTR_ERR(fuse->clk) != -EPROBE_DEFER)
137 PTR_ERR(fuse->clk));
139 return PTR_ERR(fuse->clk);
142 platform_set_drvdata(pdev, fuse);
143 fuse->dev = &pdev->dev;
149 if (fuse->soc->probe) {
150 err = fuse->soc->probe(fuse);
157 nvmem.name = "fuse";
160 nvmem.cells = fuse->soc->cells;
161 nvmem.ncells = fuse->soc->num_cells;
162 nvmem.keepout = fuse->soc->keepouts;
163 nvmem.nkeepout = fuse->soc->num_keepouts;
168 nvmem.size = fuse->soc->info->size;
171 nvmem.priv = fuse;
173 fuse->nvmem = devm_nvmem_register(&pdev->dev, &nvmem);
174 if (IS_ERR(fuse->nvmem)) {
175 err = PTR_ERR(fuse->nvmem);
181 fuse->rst = devm_reset_control_get_optional(&pdev->dev, "fuse");
182 if (IS_ERR(fuse->rst)) {
183 err = PTR_ERR(fuse->rst);
185 fuse->rst);
197 err = reset_control_reset(fuse->rst);
215 err = clk_prepare_enable(fuse->clk);
226 clk_disable_unprepare(fuse->clk);
239 if (fuse->soc->clk_suspend_on)
251 if (fuse->soc->clk_suspend_on)
267 .name = "tegra-fuse",
278 unsigned int offset = fuse->soc->info->spare + spare * 4;
280 return fuse->read_early(fuse, offset) & 1;
285 return fuse->read_early(fuse, offset);
290 if (!fuse->read || !fuse->clk)
293 if (IS_ERR(fuse->clk))
294 return PTR_ERR(fuse->clk);
296 *value = fuse->read(fuse, offset);
391 attr->custom_attr_group = fuse->soc->soc_attr_group;
433 fuse->soc = &tegra20_fuse_soc;
439 fuse->soc = &tegra30_fuse_soc;
445 fuse->soc = &tegra114_fuse_soc;
451 fuse->soc = &tegra124_fuse_soc;
476 fuse->soc = match->data;
492 fuse->base = ioremap(regs.start, resource_size(®s));
493 if (!fuse->base) {
498 fuse->soc->init(fuse);
507 if (fuse->soc->lookups) {
508 size_t size = sizeof(*fuse->lookups) * fuse->soc->num_lookups;
510 fuse->lookups = kmemdup(fuse->soc->lookups, size, GFP_KERNEL);
511 if (fuse->lookups)
512 nvmem_add_cell_lookups(fuse->lookups, fuse->soc->num_lookups);