.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0+ |
---|
1 | 2 | /* |
---|
2 | 3 | * DaVinci MDIO Module driver |
---|
3 | 4 | * |
---|
.. | .. |
---|
7 | 8 | * |
---|
8 | 9 | * Copyright (C) 2009 Texas Instruments. |
---|
9 | 10 | * |
---|
10 | | - * --------------------------------------------------------------------------- |
---|
11 | | - * |
---|
12 | | - * This program is free software; you can redistribute it and/or modify |
---|
13 | | - * it under the terms of the GNU General Public License as published by |
---|
14 | | - * the Free Software Foundation; either version 2 of the License, or |
---|
15 | | - * (at your option) any later version. |
---|
16 | | - * |
---|
17 | | - * This program is distributed in the hope that it will be useful, |
---|
18 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
19 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
20 | | - * GNU General Public License for more details. |
---|
21 | | - * |
---|
22 | | - * You should have received a copy of the GNU General Public License |
---|
23 | | - * along with this program; if not, write to the Free Software |
---|
24 | | - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
---|
25 | | - * --------------------------------------------------------------------------- |
---|
26 | 11 | */ |
---|
27 | 12 | #include <linux/module.h> |
---|
28 | 13 | #include <linux/kernel.h> |
---|
.. | .. |
---|
140 | 125 | static void davinci_mdio_enable(struct davinci_mdio_data *data) |
---|
141 | 126 | { |
---|
142 | 127 | /* set enable and clock divider */ |
---|
143 | | - __raw_writel(data->clk_div | CONTROL_ENABLE, &data->regs->control); |
---|
| 128 | + writel(data->clk_div | CONTROL_ENABLE, &data->regs->control); |
---|
144 | 129 | } |
---|
145 | 130 | |
---|
146 | 131 | static int davinci_mdio_reset(struct mii_bus *bus) |
---|
.. | .. |
---|
159 | 144 | msleep(PHY_MAX_ADDR * data->access_time); |
---|
160 | 145 | |
---|
161 | 146 | /* dump hardware version info */ |
---|
162 | | - ver = __raw_readl(&data->regs->version); |
---|
| 147 | + ver = readl(&data->regs->version); |
---|
163 | 148 | dev_info(data->dev, |
---|
164 | 149 | "davinci mdio revision %d.%d, bus freq %ld\n", |
---|
165 | 150 | (ver >> 8) & 0xff, ver & 0xff, |
---|
.. | .. |
---|
169 | 154 | goto done; |
---|
170 | 155 | |
---|
171 | 156 | /* get phy mask from the alive register */ |
---|
172 | | - phy_mask = __raw_readl(&data->regs->alive); |
---|
| 157 | + phy_mask = readl(&data->regs->alive); |
---|
173 | 158 | if (phy_mask) { |
---|
174 | 159 | /* restrict mdio bus to live phys only */ |
---|
175 | 160 | dev_info(data->dev, "detected phy mask %x\n", ~phy_mask); |
---|
.. | .. |
---|
196 | 181 | u32 reg; |
---|
197 | 182 | |
---|
198 | 183 | while (time_after(timeout, jiffies)) { |
---|
199 | | - reg = __raw_readl(®s->user[0].access); |
---|
| 184 | + reg = readl(®s->user[0].access); |
---|
200 | 185 | if ((reg & USERACCESS_GO) == 0) |
---|
201 | 186 | return 0; |
---|
202 | 187 | |
---|
203 | | - reg = __raw_readl(®s->control); |
---|
| 188 | + reg = readl(®s->control); |
---|
204 | 189 | if ((reg & CONTROL_IDLE) == 0) { |
---|
205 | 190 | usleep_range(100, 200); |
---|
206 | 191 | continue; |
---|
.. | .. |
---|
216 | 201 | return -EAGAIN; |
---|
217 | 202 | } |
---|
218 | 203 | |
---|
219 | | - reg = __raw_readl(®s->user[0].access); |
---|
| 204 | + reg = readl(®s->user[0].access); |
---|
220 | 205 | if ((reg & USERACCESS_GO) == 0) |
---|
221 | 206 | return 0; |
---|
222 | 207 | |
---|
.. | .. |
---|
263 | 248 | if (ret < 0) |
---|
264 | 249 | break; |
---|
265 | 250 | |
---|
266 | | - __raw_writel(reg, &data->regs->user[0].access); |
---|
| 251 | + writel(reg, &data->regs->user[0].access); |
---|
267 | 252 | |
---|
268 | 253 | ret = wait_for_user_access(data); |
---|
269 | 254 | if (ret == -EAGAIN) |
---|
.. | .. |
---|
271 | 256 | if (ret < 0) |
---|
272 | 257 | break; |
---|
273 | 258 | |
---|
274 | | - reg = __raw_readl(&data->regs->user[0].access); |
---|
| 259 | + reg = readl(&data->regs->user[0].access); |
---|
275 | 260 | ret = (reg & USERACCESS_ACK) ? (reg & USERACCESS_DATA) : -EIO; |
---|
276 | 261 | break; |
---|
277 | 262 | } |
---|
.. | .. |
---|
307 | 292 | if (ret < 0) |
---|
308 | 293 | break; |
---|
309 | 294 | |
---|
310 | | - __raw_writel(reg, &data->regs->user[0].access); |
---|
| 295 | + writel(reg, &data->regs->user[0].access); |
---|
311 | 296 | |
---|
312 | 297 | ret = wait_for_user_access(data); |
---|
313 | 298 | if (ret == -EAGAIN) |
---|
.. | .. |
---|
412 | 397 | data->dev = dev; |
---|
413 | 398 | |
---|
414 | 399 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
415 | | - data->regs = devm_ioremap_resource(dev, res); |
---|
416 | | - if (IS_ERR(data->regs)) |
---|
417 | | - return PTR_ERR(data->regs); |
---|
| 400 | + if (!res) |
---|
| 401 | + return -EINVAL; |
---|
| 402 | + data->regs = devm_ioremap(dev, res->start, resource_size(res)); |
---|
| 403 | + if (!data->regs) |
---|
| 404 | + return -ENOMEM; |
---|
418 | 405 | |
---|
419 | 406 | davinci_mdio_init_clk(data); |
---|
420 | 407 | |
---|
.. | .. |
---|
472 | 459 | u32 ctrl; |
---|
473 | 460 | |
---|
474 | 461 | /* shutdown the scan state machine */ |
---|
475 | | - ctrl = __raw_readl(&data->regs->control); |
---|
| 462 | + ctrl = readl(&data->regs->control); |
---|
476 | 463 | ctrl &= ~CONTROL_ENABLE; |
---|
477 | | - __raw_writel(ctrl, &data->regs->control); |
---|
| 464 | + writel(ctrl, &data->regs->control); |
---|
478 | 465 | wait_for_idle(data); |
---|
479 | 466 | |
---|
480 | 467 | return 0; |
---|