Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a51f3fc authored by Joerg Roedel's avatar Joerg Roedel
Browse files

Merge branch 'arm/smmu' into core

parents 809eac54 8801561c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -53,7 +53,9 @@ stable kernels.
| ARM            | Cortex-A57      | #832075         | ARM64_ERRATUM_832075    |
| ARM            | Cortex-A57      | #852523         | N/A                     |
| ARM            | Cortex-A57      | #834220         | ARM64_ERRATUM_834220    |
| ARM            | MMU-500         | #841119,#826419 | N/A                     |
|                |                 |                 |                         |
| Cavium         | ThunderX ITS    | #22375, #24313  | CAVIUM_ERRATUM_22375    |
| Cavium         | ThunderX GICv3  | #23154          | CAVIUM_ERRATUM_23154    |
| Cavium         | ThunderX Core   | #27456          | CAVIUM_ERRATUM_27456    |
| Cavium         | ThunderX SMMUv2 | #27704          | N/A		       |
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ conditions.
                        "arm,mmu-400"
                        "arm,mmu-401"
                        "arm,mmu-500"
                        "cavium,smmu-v2"

                  depending on the particular implementation and/or the
                  version of the architecture implemented.
+210 −81

File changed.

Preview size limit exceeded, changes collapsed.

+2 −2
Original line number Diff line number Diff line
@@ -191,7 +191,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr)
#define readl_relaxed readl
#endif

#ifndef readq_relaxed
#if defined(readq) && !defined(readq_relaxed)
#define readq_relaxed readq
#endif

@@ -207,7 +207,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr)
#define writel_relaxed writel
#endif

#ifndef writeq_relaxed
#if defined(writeq) && !defined(writeq_relaxed)
#define writeq_relaxed writeq
#endif

+25 −0
Original line number Diff line number Diff line
@@ -21,6 +21,23 @@ static inline void hi_lo_writeq(__u64 val, volatile void __iomem *addr)
	writel(val, addr);
}

static inline __u64 hi_lo_readq_relaxed(const volatile void __iomem *addr)
{
	const volatile u32 __iomem *p = addr;
	u32 low, high;

	high = readl_relaxed(p + 1);
	low = readl_relaxed(p);

	return low + ((u64)high << 32);
}

static inline void hi_lo_writeq_relaxed(__u64 val, volatile void __iomem *addr)
{
	writel_relaxed(val >> 32, addr + 4);
	writel_relaxed(val, addr);
}

#ifndef readq
#define readq hi_lo_readq
#endif
@@ -29,4 +46,12 @@ static inline void hi_lo_writeq(__u64 val, volatile void __iomem *addr)
#define writeq hi_lo_writeq
#endif

#ifndef readq_relaxed
#define readq_relaxed hi_lo_readq_relaxed
#endif

#ifndef writeq_relaxed
#define writeq_relaxed hi_lo_writeq_relaxed
#endif

#endif	/* _LINUX_IO_64_NONATOMIC_HI_LO_H_ */
Loading