| .. | .. |
|---|
| 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)); |
|---|