Lines Matching refs:priv
70 static inline unsigned int rp5c01_read(struct rp5c01_priv *priv, in rp5c01_read() argument
73 return __raw_readl(&priv->regs[reg]) & 0xf; in rp5c01_read()
76 static inline void rp5c01_write(struct rp5c01_priv *priv, unsigned int val, in rp5c01_write() argument
79 __raw_writel(val, &priv->regs[reg]); in rp5c01_write()
82 static void rp5c01_lock(struct rp5c01_priv *priv) in rp5c01_lock() argument
84 rp5c01_write(priv, RP5C01_MODE_MODE00, RP5C01_MODE); in rp5c01_lock()
87 static void rp5c01_unlock(struct rp5c01_priv *priv) in rp5c01_unlock() argument
89 rp5c01_write(priv, RP5C01_MODE_TIMER_EN | RP5C01_MODE_MODE01, in rp5c01_unlock()
95 struct rp5c01_priv *priv = dev_get_drvdata(dev); in rp5c01_read_time() local
97 spin_lock_irq(&priv->lock); in rp5c01_read_time()
98 rp5c01_lock(priv); in rp5c01_read_time()
100 tm->tm_sec = rp5c01_read(priv, RP5C01_10_SECOND) * 10 + in rp5c01_read_time()
101 rp5c01_read(priv, RP5C01_1_SECOND); in rp5c01_read_time()
102 tm->tm_min = rp5c01_read(priv, RP5C01_10_MINUTE) * 10 + in rp5c01_read_time()
103 rp5c01_read(priv, RP5C01_1_MINUTE); in rp5c01_read_time()
104 tm->tm_hour = rp5c01_read(priv, RP5C01_10_HOUR) * 10 + in rp5c01_read_time()
105 rp5c01_read(priv, RP5C01_1_HOUR); in rp5c01_read_time()
106 tm->tm_mday = rp5c01_read(priv, RP5C01_10_DAY) * 10 + in rp5c01_read_time()
107 rp5c01_read(priv, RP5C01_1_DAY); in rp5c01_read_time()
108 tm->tm_wday = rp5c01_read(priv, RP5C01_DAY_OF_WEEK); in rp5c01_read_time()
109 tm->tm_mon = rp5c01_read(priv, RP5C01_10_MONTH) * 10 + in rp5c01_read_time()
110 rp5c01_read(priv, RP5C01_1_MONTH) - 1; in rp5c01_read_time()
111 tm->tm_year = rp5c01_read(priv, RP5C01_10_YEAR) * 10 + in rp5c01_read_time()
112 rp5c01_read(priv, RP5C01_1_YEAR); in rp5c01_read_time()
116 rp5c01_unlock(priv); in rp5c01_read_time()
117 spin_unlock_irq(&priv->lock); in rp5c01_read_time()
124 struct rp5c01_priv *priv = dev_get_drvdata(dev); in rp5c01_set_time() local
126 spin_lock_irq(&priv->lock); in rp5c01_set_time()
127 rp5c01_lock(priv); in rp5c01_set_time()
129 rp5c01_write(priv, tm->tm_sec / 10, RP5C01_10_SECOND); in rp5c01_set_time()
130 rp5c01_write(priv, tm->tm_sec % 10, RP5C01_1_SECOND); in rp5c01_set_time()
131 rp5c01_write(priv, tm->tm_min / 10, RP5C01_10_MINUTE); in rp5c01_set_time()
132 rp5c01_write(priv, tm->tm_min % 10, RP5C01_1_MINUTE); in rp5c01_set_time()
133 rp5c01_write(priv, tm->tm_hour / 10, RP5C01_10_HOUR); in rp5c01_set_time()
134 rp5c01_write(priv, tm->tm_hour % 10, RP5C01_1_HOUR); in rp5c01_set_time()
135 rp5c01_write(priv, tm->tm_mday / 10, RP5C01_10_DAY); in rp5c01_set_time()
136 rp5c01_write(priv, tm->tm_mday % 10, RP5C01_1_DAY); in rp5c01_set_time()
138 rp5c01_write(priv, tm->tm_wday, RP5C01_DAY_OF_WEEK); in rp5c01_set_time()
139 rp5c01_write(priv, (tm->tm_mon + 1) / 10, RP5C01_10_MONTH); in rp5c01_set_time()
140 rp5c01_write(priv, (tm->tm_mon + 1) % 10, RP5C01_1_MONTH); in rp5c01_set_time()
143 rp5c01_write(priv, tm->tm_year / 10, RP5C01_10_YEAR); in rp5c01_set_time()
144 rp5c01_write(priv, tm->tm_year % 10, RP5C01_1_YEAR); in rp5c01_set_time()
146 rp5c01_unlock(priv); in rp5c01_set_time()
147 spin_unlock_irq(&priv->lock); in rp5c01_set_time()
168 struct rp5c01_priv *priv = dev_get_drvdata(dev); in rp5c01_nvram_read() local
171 spin_lock_irq(&priv->lock); in rp5c01_nvram_read()
176 rp5c01_write(priv, in rp5c01_nvram_read()
179 data = rp5c01_read(priv, pos) << 4; in rp5c01_nvram_read()
180 rp5c01_write(priv, in rp5c01_nvram_read()
183 data |= rp5c01_read(priv, pos++); in rp5c01_nvram_read()
184 rp5c01_write(priv, RP5C01_MODE_TIMER_EN | RP5C01_MODE_MODE01, in rp5c01_nvram_read()
189 spin_unlock_irq(&priv->lock); in rp5c01_nvram_read()
198 struct rp5c01_priv *priv = dev_get_drvdata(dev); in rp5c01_nvram_write() local
201 spin_lock_irq(&priv->lock); in rp5c01_nvram_write()
206 rp5c01_write(priv, in rp5c01_nvram_write()
209 rp5c01_write(priv, data >> 4, pos); in rp5c01_nvram_write()
210 rp5c01_write(priv, in rp5c01_nvram_write()
213 rp5c01_write(priv, data & 0xf, pos++); in rp5c01_nvram_write()
214 rp5c01_write(priv, RP5C01_MODE_TIMER_EN | RP5C01_MODE_MODE01, in rp5c01_nvram_write()
218 spin_unlock_irq(&priv->lock); in rp5c01_nvram_write()
225 struct rp5c01_priv *priv; in rp5c01_rtc_probe() local
233 priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL); in rp5c01_rtc_probe()
234 if (!priv) in rp5c01_rtc_probe()
237 priv->regs = devm_ioremap(&dev->dev, res->start, resource_size(res)); in rp5c01_rtc_probe()
238 if (!priv->regs) in rp5c01_rtc_probe()
241 sysfs_bin_attr_init(&priv->nvram_attr); in rp5c01_rtc_probe()
242 priv->nvram_attr.attr.name = "nvram"; in rp5c01_rtc_probe()
243 priv->nvram_attr.attr.mode = S_IRUGO | S_IWUSR; in rp5c01_rtc_probe()
244 priv->nvram_attr.read = rp5c01_nvram_read; in rp5c01_rtc_probe()
245 priv->nvram_attr.write = rp5c01_nvram_write; in rp5c01_rtc_probe()
246 priv->nvram_attr.size = RP5C01_MODE; in rp5c01_rtc_probe()
248 spin_lock_init(&priv->lock); in rp5c01_rtc_probe()
250 platform_set_drvdata(dev, priv); in rp5c01_rtc_probe()
256 priv->rtc = rtc; in rp5c01_rtc_probe()
258 error = sysfs_create_bin_file(&dev->dev.kobj, &priv->nvram_attr); in rp5c01_rtc_probe()
267 struct rp5c01_priv *priv = platform_get_drvdata(dev); in rp5c01_rtc_remove() local
269 sysfs_remove_bin_file(&dev->dev.kobj, &priv->nvram_attr); in rp5c01_rtc_remove()