Lines Matching refs:fuse

61 static struct tegra_fuse *fuse = &(struct tegra_fuse) {  variable
101 struct tegra_fuse *fuse = priv; in tegra_fuse_read() local
105 buffer[i] = fuse->read(fuse, offset + i * 4); in tegra_fuse_read()
112 fuse->base = (void __iomem *)base; in tegra_fuse_restore()
113 fuse->clk = NULL; in tegra_fuse_restore()
118 void __iomem *base = fuse->base; in tegra_fuse_probe()
129 fuse->phys = res->start; in tegra_fuse_probe()
130 fuse->base = devm_ioremap_resource(&pdev->dev, res); in tegra_fuse_probe()
131 if (IS_ERR(fuse->base)) { in tegra_fuse_probe()
132 err = PTR_ERR(fuse->base); in tegra_fuse_probe()
136 fuse->clk = devm_clk_get(&pdev->dev, "fuse"); in tegra_fuse_probe()
137 if (IS_ERR(fuse->clk)) { in tegra_fuse_probe()
138 if (PTR_ERR(fuse->clk) != -EPROBE_DEFER) in tegra_fuse_probe()
140 PTR_ERR(fuse->clk)); in tegra_fuse_probe()
142 return PTR_ERR(fuse->clk); in tegra_fuse_probe()
145 platform_set_drvdata(pdev, fuse); in tegra_fuse_probe()
146 fuse->dev = &pdev->dev; in tegra_fuse_probe()
152 if (fuse->soc->probe) { in tegra_fuse_probe()
153 err = fuse->soc->probe(fuse); in tegra_fuse_probe()
163 nvmem.cells = fuse->soc->cells; in tegra_fuse_probe()
164 nvmem.ncells = fuse->soc->num_cells; in tegra_fuse_probe()
165 nvmem.keepout = fuse->soc->keepouts; in tegra_fuse_probe()
166 nvmem.nkeepout = fuse->soc->num_keepouts; in tegra_fuse_probe()
171 nvmem.size = fuse->soc->info->size; in tegra_fuse_probe()
174 nvmem.priv = fuse; in tegra_fuse_probe()
176 fuse->nvmem = devm_nvmem_register(&pdev->dev, &nvmem); in tegra_fuse_probe()
177 if (IS_ERR(fuse->nvmem)) { in tegra_fuse_probe()
178 err = PTR_ERR(fuse->nvmem); in tegra_fuse_probe()
184 fuse->rst = devm_reset_control_get_optional(&pdev->dev, "fuse"); in tegra_fuse_probe()
185 if (IS_ERR(fuse->rst)) { in tegra_fuse_probe()
186 err = PTR_ERR(fuse->rst); in tegra_fuse_probe()
188 fuse->rst); in tegra_fuse_probe()
200 err = reset_control_reset(fuse->rst); in tegra_fuse_probe()
218 err = clk_prepare_enable(fuse->clk); in tegra_fuse_runtime_resume()
229 clk_disable_unprepare(fuse->clk); in tegra_fuse_runtime_suspend()
242 if (fuse->soc->clk_suspend_on) in tegra_fuse_suspend()
254 if (fuse->soc->clk_suspend_on) in tegra_fuse_resume()
281 unsigned int offset = fuse->soc->info->spare + spare * 4; in tegra_fuse_read_spare()
283 return fuse->read_early(fuse, offset) & 1; in tegra_fuse_read_spare()
288 return fuse->read_early(fuse, offset); in tegra_fuse_read_early()
293 if (!fuse->read || !fuse->clk) in tegra_fuse_readl()
296 if (IS_ERR(fuse->clk)) in tegra_fuse_readl()
297 return PTR_ERR(fuse->clk); in tegra_fuse_readl()
299 *value = fuse->read(fuse, offset); in tegra_fuse_readl()
394 attr->custom_attr_group = fuse->soc->soc_attr_group; in tegra_soc_device_register()
436 fuse->soc = &tegra20_fuse_soc; in tegra_init_fuse()
442 fuse->soc = &tegra30_fuse_soc; in tegra_init_fuse()
448 fuse->soc = &tegra114_fuse_soc; in tegra_init_fuse()
454 fuse->soc = &tegra124_fuse_soc; in tegra_init_fuse()
479 fuse->soc = match->data; in tegra_init_fuse()
495 fuse->base = ioremap(regs.start, resource_size(&regs)); in tegra_init_fuse()
496 if (!fuse->base) { in tegra_init_fuse()
501 fuse->soc->init(fuse); in tegra_init_fuse()
510 if (fuse->soc->lookups) { in tegra_init_fuse()
511 size_t size = sizeof(*fuse->lookups) * fuse->soc->num_lookups; in tegra_init_fuse()
513 fuse->lookups = kmemdup(fuse->soc->lookups, size, GFP_KERNEL); in tegra_init_fuse()
514 if (fuse->lookups) in tegra_init_fuse()
515 nvmem_add_cell_lookups(fuse->lookups, fuse->soc->num_lookups); in tegra_init_fuse()