static ssize_t fsl_otp_show(struct kobject *kobj, struct kobj_attribute *attr,
			    char *buf)
{
	unsigned int index = attr - otp_kattr;
	u32 value = 0;
	int ret;

	ret = clk_prepare_enable(otp_clk);
	if (ret)
		return 0;

	mutex_lock(&otp_mutex);

	set_otp_timing();
	ret = otp_wait_busy(0);
	if (ret)
		goto out;

	value = __raw_readl(otp_base + HW_OCOTP_CUST_N(index));

out:
	mutex_unlock(&otp_mutex);
	clk_disable_unprepare(otp_clk);
	return ret ? 0 : sprintf(buf, "0x%x\n", value);
}
Beispiel #2
0
static ssize_t fsl_otp_show(struct kobject *kobj, struct kobj_attribute *attr,
			    char *buf)
{
	unsigned int index = attr - otp_kattr;
	u32 value = 0;
	int ret;

	ret = fsl_otp_readl(HW_OCOTP_CUST_N(index), &value);

	return ret ? 0 : sprintf(buf, "0x%x\n", value);
}