Lines Matching +full:factory +full:- +full:otp
1 // SPDX-License-Identifier: GPL-2.0
12 * spinand_otp_page_size() - Get SPI-NAND OTP page size
15 * Return: the OTP page size.
27 return layout->npages * spinand_otp_page_size(spinand); in spinand_otp_size()
31 * spinand_fact_otp_size() - Get SPI-NAND factory OTP area size
34 * Return: the OTP size.
38 return spinand_otp_size(spinand, &spinand->fact_otp->layout); in spinand_fact_otp_size()
42 * spinand_user_otp_size() - Get SPI-NAND user OTP area size
45 * Return: the OTP size.
49 return spinand_otp_size(spinand, &spinand->user_otp->layout); in spinand_user_otp_size()
57 return -EINVAL; in spinand_otp_check_bounds()
66 &spinand->user_otp->layout); in spinand_user_otp_check_bounds()
92 req.pos.page = page + layout->start_page; in spinand_otp_rw()
99 otp_pagesize - req.dataoffs, in spinand_otp_rw()
100 len - copied); in spinand_otp_rw()
119 dev_warn(&spinand_to_mtd(spinand)->dev, in spinand_otp_rw()
120 "Can not disable OTP mode\n"); in spinand_otp_rw()
121 ret = -EIO; in spinand_otp_rw()
128 * spinand_fact_otp_read() - Read from OTP area
141 &spinand->fact_otp->layout); in spinand_fact_otp_read()
145 * spinand_user_otp_read() - Read from OTP area
158 &spinand->user_otp->layout); in spinand_user_otp_read()
162 * spinand_user_otp_write() - Write to OTP area
175 &spinand->user_otp->layout); in spinand_user_otp_write()
187 mutex_lock(&spinand->lock); in spinand_mtd_otp_info()
190 ret = spinand->fact_otp->ops->info(spinand, len, buf, retlen); in spinand_mtd_otp_info()
192 ret = spinand->user_otp->ops->info(spinand, len, buf, retlen); in spinand_mtd_otp_info()
194 mutex_unlock(&spinand->lock); in spinand_mtd_otp_info()
223 is_fact ? &spinand->fact_otp->layout : in spinand_mtd_otp_read()
224 &spinand->user_otp->layout); in spinand_mtd_otp_read()
228 mutex_lock(&spinand->lock); in spinand_mtd_otp_read()
231 ret = spinand->fact_otp->ops->read(spinand, ofs, len, retlen, in spinand_mtd_otp_read()
234 ret = spinand->user_otp->ops->read(spinand, ofs, len, retlen, in spinand_mtd_otp_read()
237 mutex_unlock(&spinand->lock); in spinand_mtd_otp_read()
258 const struct spinand_user_otp_ops *ops = spinand->user_otp->ops; in spinand_mtd_user_otp_write()
270 mutex_lock(&spinand->lock); in spinand_mtd_user_otp_write()
271 ret = ops->write(spinand, ofs, len, retlen, buf); in spinand_mtd_user_otp_write()
272 mutex_unlock(&spinand->lock); in spinand_mtd_user_otp_write()
281 const struct spinand_user_otp_ops *ops = spinand->user_otp->ops; in spinand_mtd_user_otp_erase()
291 mutex_lock(&spinand->lock); in spinand_mtd_user_otp_erase()
292 ret = ops->erase(spinand, ofs, len); in spinand_mtd_user_otp_erase()
293 mutex_unlock(&spinand->lock); in spinand_mtd_user_otp_erase()
302 const struct spinand_user_otp_ops *ops = spinand->user_otp->ops; in spinand_mtd_user_otp_lock()
312 mutex_lock(&spinand->lock); in spinand_mtd_user_otp_lock()
313 ret = ops->lock(spinand, ofs, len); in spinand_mtd_user_otp_lock()
314 mutex_unlock(&spinand->lock); in spinand_mtd_user_otp_lock()
320 * spinand_set_mtd_otp_ops() - Setup OTP methods
323 * Setup OTP methods.
330 const struct spinand_fact_otp_ops *fact_ops = spinand->fact_otp->ops; in spinand_set_mtd_otp_ops()
331 const struct spinand_user_otp_ops *user_ops = spinand->user_otp->ops; in spinand_set_mtd_otp_ops()
334 return -EINVAL; in spinand_set_mtd_otp_ops()
337 if (user_ops->info) in spinand_set_mtd_otp_ops()
338 mtd->_get_user_prot_info = spinand_mtd_user_otp_info; in spinand_set_mtd_otp_ops()
340 if (user_ops->read) in spinand_set_mtd_otp_ops()
341 mtd->_read_user_prot_reg = spinand_mtd_user_otp_read; in spinand_set_mtd_otp_ops()
343 if (user_ops->write) in spinand_set_mtd_otp_ops()
344 mtd->_write_user_prot_reg = spinand_mtd_user_otp_write; in spinand_set_mtd_otp_ops()
346 if (user_ops->lock) in spinand_set_mtd_otp_ops()
347 mtd->_lock_user_prot_reg = spinand_mtd_user_otp_lock; in spinand_set_mtd_otp_ops()
349 if (user_ops->erase) in spinand_set_mtd_otp_ops()
350 mtd->_erase_user_prot_reg = spinand_mtd_user_otp_erase; in spinand_set_mtd_otp_ops()
354 if (fact_ops->info) in spinand_set_mtd_otp_ops()
355 mtd->_get_fact_prot_info = spinand_mtd_fact_otp_info; in spinand_set_mtd_otp_ops()
357 if (fact_ops->read) in spinand_set_mtd_otp_ops()
358 mtd->_read_fact_prot_reg = spinand_mtd_fact_otp_read; in spinand_set_mtd_otp_ops()