Lines Matching defs:otp

47 static int lan9662_otp_power(struct lan9662_otp *otp, bool up)
49 void __iomem *pwrdn = OTP_OTP_PWR_DN(otp->base);
53 if (lan9662_otp_wait_flag_clear(OTP_OTP_STATUS(otp->base),
63 static int lan9662_otp_execute(struct lan9662_otp *otp)
65 if (lan9662_otp_wait_flag_clear(OTP_OTP_CMD_GO(otp->base),
69 if (lan9662_otp_wait_flag_clear(OTP_OTP_STATUS(otp->base),
76 static void lan9662_otp_set_address(struct lan9662_otp *otp, u32 offset)
78 writel(0xff & (offset >> 8), OTP_OTP_ADDR_HI(otp->base));
79 writel(0xff & offset, OTP_OTP_ADDR_LO(otp->base));
82 static int lan9662_otp_read_byte(struct lan9662_otp *otp, u32 offset, u8 *dst)
87 lan9662_otp_set_address(otp, offset);
88 writel(OTP_OTP_FUNC_CMD_OTP_READ, OTP_OTP_FUNC_CMD(otp->base));
89 writel(OTP_OTP_CMD_GO_OTP_GO, OTP_OTP_CMD_GO(otp->base));
90 rc = lan9662_otp_execute(otp);
92 pass = readl(OTP_OTP_PASS_FAIL(otp->base));
95 *dst = (u8) readl(OTP_OTP_RD_DATA(otp->base));
100 static int lan9662_otp_write_byte(struct lan9662_otp *otp, u32 offset, u8 data)
105 lan9662_otp_set_address(otp, offset);
106 writel(OTP_OTP_PRGM_MODE_OTP_PGM_MODE_BYTE, OTP_OTP_PRGM_MODE(otp->base));
107 writel(data, OTP_OTP_PRGM_DATA(otp->base));
108 writel(OTP_OTP_FUNC_CMD_OTP_PROGRAM, OTP_OTP_FUNC_CMD(otp->base));
109 writel(OTP_OTP_CMD_GO_OTP_GO, OTP_OTP_CMD_GO(otp->base));
111 rc = lan9662_otp_execute(otp);
113 pass = readl(OTP_OTP_PASS_FAIL(otp->base));
125 struct lan9662_otp *otp = context;
130 lan9662_otp_power(otp, true);
132 rc = lan9662_otp_read_byte(otp, offset + i, &data);
137 lan9662_otp_power(otp, false);
145 struct lan9662_otp *otp = context;
150 lan9662_otp_power(otp, true);
154 rc = lan9662_otp_read_byte(otp, offset + i, &data);
162 rc = lan9662_otp_write_byte(otp, offset + i,
168 lan9662_otp_power(otp, false);
174 .name = "lan9662-otp",
186 struct lan9662_otp *otp;
188 otp = devm_kzalloc(&pdev->dev, sizeof(*otp), GFP_KERNEL);
189 if (!otp)
192 otp->dev = dev;
193 otp->base = devm_platform_ioremap_resource(pdev, 0);
194 if (IS_ERR(otp->base))
195 return PTR_ERR(otp->base);
197 otp_config.priv = otp;
214 .name = "lan9662-otp",