| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * APM X-Gene SoC EDAC (error detection and correction) |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (c) 2015, Applied Micro Circuits Corporation |
|---|
| 5 | 6 | * Author: Feng Kan <fkan@apm.com> |
|---|
| 6 | 7 | * Loc Ho <lho@apm.com> |
|---|
| 7 | | - * |
|---|
| 8 | | - * This program is free software; you can redistribute it and/or modify it |
|---|
| 9 | | - * under the terms of the GNU General Public License as published by the |
|---|
| 10 | | - * Free Software Foundation; either version 2 of the License, or (at your |
|---|
| 11 | | - * option) any later version. |
|---|
| 12 | | - * |
|---|
| 13 | | - * This program is distributed in the hope that it will be useful, |
|---|
| 14 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 15 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 16 | | - * GNU General Public License for more details. |
|---|
| 17 | | - * |
|---|
| 18 | | - * You should have received a copy of the GNU General Public License |
|---|
| 19 | | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|---|
| 20 | 8 | */ |
|---|
| 21 | 9 | |
|---|
| 22 | 10 | #include <linux/ctype.h> |
|---|
| .. | .. |
|---|
| 1361 | 1349 | #define WORD_ALIGNED_ERR_MASK BIT(28) |
|---|
| 1362 | 1350 | #define PAGE_ACCESS_ERR_MASK BIT(27) |
|---|
| 1363 | 1351 | #define WRITE_ACCESS_MASK BIT(26) |
|---|
| 1364 | | -#define RBERRADDR_RD(src) ((src) & 0x03FFFFFF) |
|---|
| 1365 | 1352 | |
|---|
| 1366 | 1353 | static const char * const soc_mem_err_v1[] = { |
|---|
| 1367 | 1354 | "10GbE0", |
|---|
| .. | .. |
|---|
| 1495 | 1482 | return; |
|---|
| 1496 | 1483 | if (reg & STICKYERR_MASK) { |
|---|
| 1497 | 1484 | bool write; |
|---|
| 1498 | | - u32 address; |
|---|
| 1499 | 1485 | |
|---|
| 1500 | 1486 | dev_err(edac_dev->dev, "IOB bus access error(s)\n"); |
|---|
| 1501 | 1487 | if (regmap_read(ctx->edac->rb_map, RBEIR, ®)) |
|---|
| 1502 | 1488 | return; |
|---|
| 1503 | 1489 | write = reg & WRITE_ACCESS_MASK ? 1 : 0; |
|---|
| 1504 | | - address = RBERRADDR_RD(reg); |
|---|
| 1505 | 1490 | if (reg & AGENT_OFFLINE_ERR_MASK) |
|---|
| 1506 | 1491 | dev_err(edac_dev->dev, |
|---|
| 1507 | 1492 | "IOB bus %s access to offline agent error\n", |
|---|