The 08/30/2022 13:08, Srinivas Kandagatla wrote: > > > +static inline void lan9662_writel(void __iomem *addr, u32 val) > > +{ > > + writel(val, addr); > > +} > > + > > +static inline u32 lan9662_readl(void __iomem *addr) > > +{ > > + return readl(addr); > > +} > > + > > Why these boiler plate functions? It was more for the style purpose. I will remove these ones. > > > +static inline void lan9662_clrbits(void __iomem *addr, u32 clear) > > +{ > > + writel(readl(addr) & ~clear, addr); > > +} > > + > > +static inline void lan9662_setbits(void __iomem *addr, u32 set) > > +{ > > + writel(readl(addr) | set, addr); > > +} > > These two functions are called just once and I see no point in having a > wrapper function for this, instead you could use them directly or use > ./include/linux/bitfield.h helper macros. I will remove also these ones and use them directly. > > > + > > +static bool lan9662_otp_wait_flag_clear(void __iomem *reg, u32 flag) > > +{ > > + u32 val; > > + > > + return readl_poll_timeout(reg, val, !(val & flag), > > + OTP_SLEEP_US, OTP_TIMEOUT_US); > > +} > > + > > +static int lan9662_otp_power(struct lan9662_otp *otp, bool up) > > +{ > > + if (up) { > > + lan9662_clrbits(OTP_OTP_PWR_DN(otp->base), > > + OTP_OTP_PWR_DN_OTP_PWRDN_N); > > + if (lan9662_otp_wait_flag_clear(OTP_OTP_STATUS(otp->base), > > + OTP_OTP_STATUS_OTP_CPUMPEN)) > > + return -ETIMEDOUT; > > + } else { > > + lan9662_setbits(OTP_OTP_PWR_DN(otp->base), > > + OTP_OTP_PWR_DN_OTP_PWRDN_N); > > + } > > + > > + return 0; > > +} > > + > > +static int lan9662_otp_execute(struct lan9662_otp *otp) > > +{ > > + if (lan9662_otp_wait_flag_clear(OTP_OTP_CMD_GO(otp->base), > > + OTP_OTP_CMD_GO_OTP_GO)) > > + return -ETIMEDOUT; > > + > > + if (lan9662_otp_wait_flag_clear(OTP_OTP_STATUS(otp->base), > > + OTP_OTP_STATUS_OTP_BUSY)) > > + return -ETIMEDOUT; > > + > > + return 0; > > +} > > + > > +static void lan9662_otp_set_address(struct lan9662_otp *otp, u32 offset) > > +{ > > + WARN_ON(offset >= OTP_MEM_SIZE); > > + > would we ever hit this condition? looks like unecessary check. That is not the case. I will remove it. > > > -- /Horatiu