Lines Matching defs:eeprom

54 static inline void lpc18xx_eeprom_writel(struct lpc18xx_eeprom_dev *eeprom,
57 writel(val, eeprom->reg_base + reg);
60 static inline u32 lpc18xx_eeprom_readl(struct lpc18xx_eeprom_dev *eeprom,
63 return readl(eeprom->reg_base + reg);
66 static int lpc18xx_eeprom_busywait_until_prog(struct lpc18xx_eeprom_dev *eeprom)
75 val = lpc18xx_eeprom_readl(eeprom, LPC18XX_EEPROM_INTSTAT);
78 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_INTSTATCLR,
93 struct lpc18xx_eeprom_dev *eeprom = context;
101 if ((reg > eeprom->size - LPC18XX_EEPROM_PAGE_SIZE) ||
102 (reg + bytes > eeprom->size - LPC18XX_EEPROM_PAGE_SIZE))
106 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_PWRDWN,
113 writel(*(u32 *)val, eeprom->mem_base + offset);
114 ret = lpc18xx_eeprom_busywait_until_prog(eeprom);
118 bytes -= eeprom->val_bytes;
119 val += eeprom->val_bytes;
120 offset += eeprom->val_bytes;
123 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_PWRDWN,
132 struct lpc18xx_eeprom_dev *eeprom = context;
134 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_PWRDWN,
141 *(u32 *)val = readl(eeprom->mem_base + offset);
142 bytes -= eeprom->val_bytes;
143 val += eeprom->val_bytes;
144 offset += eeprom->val_bytes;
147 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_PWRDWN,
155 .name = "lpc18xx-eeprom",
164 struct lpc18xx_eeprom_dev *eeprom;
171 eeprom = devm_kzalloc(dev, sizeof(*eeprom), GFP_KERNEL);
172 if (!eeprom)
176 eeprom->reg_base = devm_ioremap_resource(dev, res);
177 if (IS_ERR(eeprom->reg_base))
178 return PTR_ERR(eeprom->reg_base);
181 eeprom->mem_base = devm_ioremap_resource(dev, res);
182 if (IS_ERR(eeprom->mem_base))
183 return PTR_ERR(eeprom->mem_base);
185 eeprom->clk = devm_clk_get(&pdev->dev, "eeprom");
186 if (IS_ERR(eeprom->clk)) {
187 dev_err(&pdev->dev, "failed to get eeprom clock\n");
188 return PTR_ERR(eeprom->clk);
191 ret = clk_prepare_enable(eeprom->clk);
193 dev_err(dev, "failed to prepare/enable eeprom clk: %d\n", ret);
210 eeprom->val_bytes = 4;
211 eeprom->reg_bytes = 4;
217 clk_rate = clk_get_rate(eeprom->clk);
219 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_CLKDIV, clk_rate);
225 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_AUTOPROG,
228 lpc18xx_eeprom_writel(eeprom, LPC18XX_EEPROM_PWRDWN,
231 eeprom->size = resource_size(res);
234 lpc18xx_nvmem_config.priv = eeprom;
236 eeprom->nvmem = devm_nvmem_register(dev, &lpc18xx_nvmem_config);
237 if (IS_ERR(eeprom->nvmem)) {
238 ret = PTR_ERR(eeprom->nvmem);
242 platform_set_drvdata(pdev, eeprom);
247 clk_disable_unprepare(eeprom->clk);
254 struct lpc18xx_eeprom_dev *eeprom = platform_get_drvdata(pdev);
256 clk_disable_unprepare(eeprom->clk);
262 { .compatible = "nxp,lpc1857-eeprom" },
271 .name = "lpc18xx-eeprom",