.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-or-later */ |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (C) 2006 Freescale Semiconductor, Inc. All rights reserved. |
---|
3 | 4 | * |
---|
.. | .. |
---|
6 | 7 | * |
---|
7 | 8 | * Description: |
---|
8 | 9 | * QUICC Engine (QE) external definitions and structure. |
---|
9 | | - * |
---|
10 | | - * This program is free software; you can redistribute it and/or modify it |
---|
11 | | - * under the terms of the GNU General Public License as published by the |
---|
12 | | - * Free Software Foundation; either version 2 of the License, or (at your |
---|
13 | | - * option) any later version. |
---|
14 | 10 | */ |
---|
15 | 11 | #ifndef _ASM_POWERPC_QE_H |
---|
16 | 12 | #define _ASM_POWERPC_QE_H |
---|
.. | .. |
---|
21 | 17 | #include <linux/spinlock.h> |
---|
22 | 18 | #include <linux/errno.h> |
---|
23 | 19 | #include <linux/err.h> |
---|
24 | | -#include <asm/cpm.h> |
---|
| 20 | +#include <soc/fsl/cpm.h> |
---|
25 | 21 | #include <soc/fsl/qe/immap_qe.h> |
---|
26 | 22 | #include <linux/of.h> |
---|
27 | 23 | #include <linux/of_address.h> |
---|
.. | .. |
---|
102 | 98 | int cpm_muram_init(void); |
---|
103 | 99 | |
---|
104 | 100 | #if defined(CONFIG_CPM) || defined(CONFIG_QUICC_ENGINE) |
---|
105 | | -unsigned long cpm_muram_alloc(unsigned long size, unsigned long align); |
---|
106 | | -int cpm_muram_free(unsigned long offset); |
---|
107 | | -unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size); |
---|
| 101 | +s32 cpm_muram_alloc(unsigned long size, unsigned long align); |
---|
| 102 | +void cpm_muram_free(s32 offset); |
---|
| 103 | +s32 cpm_muram_alloc_fixed(unsigned long offset, unsigned long size); |
---|
108 | 104 | void __iomem *cpm_muram_addr(unsigned long offset); |
---|
109 | 105 | unsigned long cpm_muram_offset(void __iomem *addr); |
---|
110 | 106 | dma_addr_t cpm_muram_dma(void __iomem *addr); |
---|
111 | 107 | #else |
---|
112 | | -static inline unsigned long cpm_muram_alloc(unsigned long size, |
---|
113 | | - unsigned long align) |
---|
| 108 | +static inline s32 cpm_muram_alloc(unsigned long size, |
---|
| 109 | + unsigned long align) |
---|
114 | 110 | { |
---|
115 | 111 | return -ENOSYS; |
---|
116 | 112 | } |
---|
117 | 113 | |
---|
118 | | -static inline int cpm_muram_free(unsigned long offset) |
---|
| 114 | +static inline void cpm_muram_free(s32 offset) |
---|
119 | 115 | { |
---|
120 | | - return -ENOSYS; |
---|
121 | 116 | } |
---|
122 | 117 | |
---|
123 | | -static inline unsigned long cpm_muram_alloc_fixed(unsigned long offset, |
---|
124 | | - unsigned long size) |
---|
| 118 | +static inline s32 cpm_muram_alloc_fixed(unsigned long offset, |
---|
| 119 | + unsigned long size) |
---|
125 | 120 | { |
---|
126 | 121 | return -ENOSYS; |
---|
127 | 122 | } |
---|
.. | .. |
---|
245 | 240 | #define qe_muram_offset cpm_muram_offset |
---|
246 | 241 | #define qe_muram_dma cpm_muram_dma |
---|
247 | 242 | |
---|
248 | | -#define qe_setbits32(_addr, _v) iowrite32be(ioread32be(_addr) | (_v), (_addr)) |
---|
249 | | -#define qe_clrbits32(_addr, _v) iowrite32be(ioread32be(_addr) & ~(_v), (_addr)) |
---|
| 243 | +#ifdef CONFIG_PPC32 |
---|
| 244 | +#define qe_iowrite8(val, addr) out_8(addr, val) |
---|
| 245 | +#define qe_iowrite16be(val, addr) out_be16(addr, val) |
---|
| 246 | +#define qe_iowrite32be(val, addr) out_be32(addr, val) |
---|
| 247 | +#define qe_ioread8(addr) in_8(addr) |
---|
| 248 | +#define qe_ioread16be(addr) in_be16(addr) |
---|
| 249 | +#define qe_ioread32be(addr) in_be32(addr) |
---|
| 250 | +#else |
---|
| 251 | +#define qe_iowrite8(val, addr) iowrite8(val, addr) |
---|
| 252 | +#define qe_iowrite16be(val, addr) iowrite16be(val, addr) |
---|
| 253 | +#define qe_iowrite32be(val, addr) iowrite32be(val, addr) |
---|
| 254 | +#define qe_ioread8(addr) ioread8(addr) |
---|
| 255 | +#define qe_ioread16be(addr) ioread16be(addr) |
---|
| 256 | +#define qe_ioread32be(addr) ioread32be(addr) |
---|
| 257 | +#endif |
---|
250 | 258 | |
---|
251 | | -#define qe_setbits16(_addr, _v) iowrite16be(ioread16be(_addr) | (_v), (_addr)) |
---|
252 | | -#define qe_clrbits16(_addr, _v) iowrite16be(ioread16be(_addr) & ~(_v), (_addr)) |
---|
| 259 | +#define qe_setbits_be32(_addr, _v) qe_iowrite32be(qe_ioread32be(_addr) | (_v), (_addr)) |
---|
| 260 | +#define qe_clrbits_be32(_addr, _v) qe_iowrite32be(qe_ioread32be(_addr) & ~(_v), (_addr)) |
---|
253 | 261 | |
---|
254 | | -#define qe_setbits8(_addr, _v) iowrite8(ioread8(_addr) | (_v), (_addr)) |
---|
255 | | -#define qe_clrbits8(_addr, _v) iowrite8(ioread8(_addr) & ~(_v), (_addr)) |
---|
| 262 | +#define qe_setbits_be16(_addr, _v) qe_iowrite16be(qe_ioread16be(_addr) | (_v), (_addr)) |
---|
| 263 | +#define qe_clrbits_be16(_addr, _v) qe_iowrite16be(qe_ioread16be(_addr) & ~(_v), (_addr)) |
---|
256 | 264 | |
---|
257 | | -#define qe_clrsetbits32(addr, clear, set) \ |
---|
258 | | - iowrite32be((ioread32be(addr) & ~(clear)) | (set), (addr)) |
---|
259 | | -#define qe_clrsetbits16(addr, clear, set) \ |
---|
260 | | - iowrite16be((ioread16be(addr) & ~(clear)) | (set), (addr)) |
---|
261 | | -#define qe_clrsetbits8(addr, clear, set) \ |
---|
262 | | - iowrite8((ioread8(addr) & ~(clear)) | (set), (addr)) |
---|
| 265 | +#define qe_setbits_8(_addr, _v) qe_iowrite8(qe_ioread8(_addr) | (_v), (_addr)) |
---|
| 266 | +#define qe_clrbits_8(_addr, _v) qe_iowrite8(qe_ioread8(_addr) & ~(_v), (_addr)) |
---|
| 267 | + |
---|
| 268 | +#define qe_clrsetbits_be32(addr, clear, set) \ |
---|
| 269 | + qe_iowrite32be((qe_ioread32be(addr) & ~(clear)) | (set), (addr)) |
---|
| 270 | +#define qe_clrsetbits_be16(addr, clear, set) \ |
---|
| 271 | + qe_iowrite16be((qe_ioread16be(addr) & ~(clear)) | (set), (addr)) |
---|
| 272 | +#define qe_clrsetbits_8(addr, clear, set) \ |
---|
| 273 | + qe_iowrite8((qe_ioread8(addr) & ~(clear)) | (set), (addr)) |
---|
263 | 274 | |
---|
264 | 275 | /* Structure that defines QE firmware binary files. |
---|
265 | 276 | * |
---|
266 | | - * See Documentation/powerpc/qe_firmware.txt for a description of these |
---|
| 277 | + * See Documentation/powerpc/qe_firmware.rst for a description of these |
---|
267 | 278 | * fields. |
---|
268 | 279 | */ |
---|
269 | 280 | struct qe_firmware { |
---|
.. | .. |
---|
296 | 307 | u8 revision; /* The microcode version revision */ |
---|
297 | 308 | u8 padding; /* Reserved, for alignment */ |
---|
298 | 309 | u8 reserved[4]; /* Reserved, for future expansion */ |
---|
299 | | - } __attribute__ ((packed)) microcode[1]; |
---|
| 310 | + } __packed microcode[]; |
---|
300 | 311 | /* All microcode binaries should be located here */ |
---|
301 | 312 | /* CRC32 should be located here, after the microcode binaries */ |
---|
302 | 313 | } __attribute__ ((packed)); |
---|