On 19.08.20 15:43, Daniel Schwierzeck wrote:
Am Montag, den 17.08.2020, 15:06 +0200 schrieb Stefan Roese:
Import platform specific mangle-port.h header, allowing a area specific
swapping, which is needed on Octeon for USB & PCI areas.

Imported from Linux v5.7.

Signed-off-by: Stefan Roese <s...@denx.de>
---

  arch/mips/mach-octeon/include/mangle-port.h | 58 +++++++++++++++++++++
  1 file changed, 58 insertions(+)
  create mode 100644 arch/mips/mach-octeon/include/mangle-port.h

diff --git a/arch/mips/mach-octeon/include/mangle-port.h 
b/arch/mips/mach-octeon/include/mangle-port.h
new file mode 100644
index 0000000000..8ff2cbdf2c
--- /dev/null
+++ b/arch/mips/mach-octeon/include/mangle-port.h
@@ -0,0 +1,58 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 2003, 2004 Ralf Baechle
+ */

when importing headers from Linux, please remove the license text and
just keep copyrights and optionally additonal info text. At the top
insert the SPDX identifier, e.g.

Okay. Will change in next version.

Thanks,
Stefan


/* SPDX-License-Identifier: GPL-2.0+ */
/*
  * Copyright (C) 2003, 2004 Ralf Baechle
  */

+#ifndef __ASM_MACH_GENERIC_MANGLE_PORT_H
+#define __ASM_MACH_GENERIC_MANGLE_PORT_H
+
+#include <asm/byteorder.h>
+
+#ifdef __BIG_ENDIAN
+
+static inline bool __should_swizzle_bits(volatile void *a)
+{
+       extern const bool octeon_should_swizzle_table[];
+       u64 did = ((u64)(uintptr_t)a >> 40) & 0xff;
+
+       return octeon_should_swizzle_table[did];
+}
+
+# define __swizzle_addr_b(port)        (port)
+# define __swizzle_addr_w(port)        (port)
+# define __swizzle_addr_l(port)        (port)
+# define __swizzle_addr_q(port)        (port)
+
+#else /* __LITTLE_ENDIAN */
+
+#define __should_swizzle_bits(a)       false
+
+static inline bool __should_swizzle_addr(u64 p)
+{
+       /* boot bus? */
+       return ((p >> 40) & 0xff) == 0;
+}
+
+# define __swizzle_addr_b(port)        \
+       (__should_swizzle_addr(port) ? (port) ^ 7 : (port))
+# define __swizzle_addr_w(port)        \
+       (__should_swizzle_addr(port) ? (port) ^ 6 : (port))
+# define __swizzle_addr_l(port)        \
+       (__should_swizzle_addr(port) ? (port) ^ 4 : (port))
+# define __swizzle_addr_q(port)        (port)
+
+#endif /* __BIG_ENDIAN */
+
+
+# define ioswabb(a, x)         (x)
+# define __mem_ioswabb(a, x)   (x)
+# define ioswabw(a, x)         (__should_swizzle_bits(a) ? le16_to_cpu(x) : x)
+# define __mem_ioswabw(a, x)   (x)
+# define ioswabl(a, x)         (__should_swizzle_bits(a) ? le32_to_cpu(x) : x)
+# define __mem_ioswabl(a, x)   (x)
+# define ioswabq(a, x)         (__should_swizzle_bits(a) ? le64_to_cpu(x) : x)
+# define __mem_ioswabq(a, x)   (x)
+
+#endif /* __ASM_MACH_GENERIC_MANGLE_PORT_H */


Viele Grüße,
Stefan

--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de

Reply via email to