| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Error Location Module |
|---|
| 3 | 4 | * |
|---|
| 4 | | - * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ |
|---|
| 5 | | - * |
|---|
| 6 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 7 | | - * it under the terms of the GNU General Public License as published by |
|---|
| 8 | | - * the Free Software Foundation; either version 2 of the License, or |
|---|
| 9 | | - * (at your option) any later version. |
|---|
| 10 | | - * |
|---|
| 11 | | - * This program is distributed in the hope that it will be useful, |
|---|
| 12 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 13 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 14 | | - * GNU General Public License for more details. |
|---|
| 15 | | - * |
|---|
| 5 | + * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/ |
|---|
| 16 | 6 | */ |
|---|
| 17 | 7 | |
|---|
| 18 | 8 | #define DRIVER_NAME "omap-elm" |
|---|
| .. | .. |
|---|
| 184 | 174 | switch (info->bch_type) { |
|---|
| 185 | 175 | case BCH8_ECC: |
|---|
| 186 | 176 | /* syndrome fragment 0 = ecc[9-12B] */ |
|---|
| 187 | | - val = cpu_to_be32(*(u32 *) &ecc[9]); |
|---|
| 177 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[9]); |
|---|
| 188 | 178 | elm_write_reg(info, offset, val); |
|---|
| 189 | 179 | |
|---|
| 190 | 180 | /* syndrome fragment 1 = ecc[5-8B] */ |
|---|
| 191 | 181 | offset += 4; |
|---|
| 192 | | - val = cpu_to_be32(*(u32 *) &ecc[5]); |
|---|
| 182 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[5]); |
|---|
| 193 | 183 | elm_write_reg(info, offset, val); |
|---|
| 194 | 184 | |
|---|
| 195 | 185 | /* syndrome fragment 2 = ecc[1-4B] */ |
|---|
| 196 | 186 | offset += 4; |
|---|
| 197 | | - val = cpu_to_be32(*(u32 *) &ecc[1]); |
|---|
| 187 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[1]); |
|---|
| 198 | 188 | elm_write_reg(info, offset, val); |
|---|
| 199 | 189 | |
|---|
| 200 | 190 | /* syndrome fragment 3 = ecc[0B] */ |
|---|
| .. | .. |
|---|
| 204 | 194 | break; |
|---|
| 205 | 195 | case BCH4_ECC: |
|---|
| 206 | 196 | /* syndrome fragment 0 = ecc[20-52b] bits */ |
|---|
| 207 | | - val = (cpu_to_be32(*(u32 *) &ecc[3]) >> 4) | |
|---|
| 197 | + val = ((__force u32)cpu_to_be32(*(u32 *)&ecc[3]) >> 4) | |
|---|
| 208 | 198 | ((ecc[2] & 0xf) << 28); |
|---|
| 209 | 199 | elm_write_reg(info, offset, val); |
|---|
| 210 | 200 | |
|---|
| 211 | 201 | /* syndrome fragment 1 = ecc[0-20b] bits */ |
|---|
| 212 | 202 | offset += 4; |
|---|
| 213 | | - val = cpu_to_be32(*(u32 *) &ecc[0]) >> 12; |
|---|
| 203 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[0]) >> 12; |
|---|
| 214 | 204 | elm_write_reg(info, offset, val); |
|---|
| 215 | 205 | break; |
|---|
| 216 | 206 | case BCH16_ECC: |
|---|
| 217 | | - val = cpu_to_be32(*(u32 *) &ecc[22]); |
|---|
| 207 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[22]); |
|---|
| 218 | 208 | elm_write_reg(info, offset, val); |
|---|
| 219 | 209 | offset += 4; |
|---|
| 220 | | - val = cpu_to_be32(*(u32 *) &ecc[18]); |
|---|
| 210 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[18]); |
|---|
| 221 | 211 | elm_write_reg(info, offset, val); |
|---|
| 222 | 212 | offset += 4; |
|---|
| 223 | | - val = cpu_to_be32(*(u32 *) &ecc[14]); |
|---|
| 213 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[14]); |
|---|
| 224 | 214 | elm_write_reg(info, offset, val); |
|---|
| 225 | 215 | offset += 4; |
|---|
| 226 | | - val = cpu_to_be32(*(u32 *) &ecc[10]); |
|---|
| 216 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[10]); |
|---|
| 227 | 217 | elm_write_reg(info, offset, val); |
|---|
| 228 | 218 | offset += 4; |
|---|
| 229 | | - val = cpu_to_be32(*(u32 *) &ecc[6]); |
|---|
| 219 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[6]); |
|---|
| 230 | 220 | elm_write_reg(info, offset, val); |
|---|
| 231 | 221 | offset += 4; |
|---|
| 232 | | - val = cpu_to_be32(*(u32 *) &ecc[2]); |
|---|
| 222 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[2]); |
|---|
| 233 | 223 | elm_write_reg(info, offset, val); |
|---|
| 234 | 224 | offset += 4; |
|---|
| 235 | | - val = cpu_to_be32(*(u32 *) &ecc[0]) >> 16; |
|---|
| 225 | + val = (__force u32)cpu_to_be32(*(u32 *)&ecc[0]) >> 16; |
|---|
| 236 | 226 | elm_write_reg(info, offset, val); |
|---|
| 237 | 227 | break; |
|---|
| 238 | 228 | default: |
|---|
| .. | .. |
|---|
| 466 | 456 | ELM_SYNDROME_FRAGMENT_5 + offset); |
|---|
| 467 | 457 | regs->elm_syndrome_fragment_4[i] = elm_read_reg(info, |
|---|
| 468 | 458 | ELM_SYNDROME_FRAGMENT_4 + offset); |
|---|
| 459 | + fallthrough; |
|---|
| 469 | 460 | case BCH8_ECC: |
|---|
| 470 | 461 | regs->elm_syndrome_fragment_3[i] = elm_read_reg(info, |
|---|
| 471 | 462 | ELM_SYNDROME_FRAGMENT_3 + offset); |
|---|
| 472 | 463 | regs->elm_syndrome_fragment_2[i] = elm_read_reg(info, |
|---|
| 473 | 464 | ELM_SYNDROME_FRAGMENT_2 + offset); |
|---|
| 465 | + fallthrough; |
|---|
| 474 | 466 | case BCH4_ECC: |
|---|
| 475 | 467 | regs->elm_syndrome_fragment_1[i] = elm_read_reg(info, |
|---|
| 476 | 468 | ELM_SYNDROME_FRAGMENT_1 + offset); |
|---|
| .. | .. |
|---|
| 512 | 504 | regs->elm_syndrome_fragment_5[i]); |
|---|
| 513 | 505 | elm_write_reg(info, ELM_SYNDROME_FRAGMENT_4 + offset, |
|---|
| 514 | 506 | regs->elm_syndrome_fragment_4[i]); |
|---|
| 507 | + fallthrough; |
|---|
| 515 | 508 | case BCH8_ECC: |
|---|
| 516 | 509 | elm_write_reg(info, ELM_SYNDROME_FRAGMENT_3 + offset, |
|---|
| 517 | 510 | regs->elm_syndrome_fragment_3[i]); |
|---|
| 518 | 511 | elm_write_reg(info, ELM_SYNDROME_FRAGMENT_2 + offset, |
|---|
| 519 | 512 | regs->elm_syndrome_fragment_2[i]); |
|---|
| 513 | + fallthrough; |
|---|
| 520 | 514 | case BCH4_ECC: |
|---|
| 521 | 515 | elm_write_reg(info, ELM_SYNDROME_FRAGMENT_1 + offset, |
|---|
| 522 | 516 | regs->elm_syndrome_fragment_1[i]); |
|---|