From 11ea6f556c3315a297f81fb498dd4a0c57202a91 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Fri, 10 Nov 2017 11:03:47 +0100 Subject: [PATCH] arm: zynq: Add support for EMIT_WRITE operation Add proper support for EMIT_WRITE operation which is write only. Do not use EMIT_MASKWRITE which is read-modify-write. Signed-off-by: Michal Simek --- arch/arm/mach-zynq/include/mach/ps7_init_gpl.h | 2 ++ arch/arm/mach-zynq/ps7_spl_init.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/arch/arm/mach-zynq/include/mach/ps7_init_gpl.h b/arch/arm/mach-zynq/include/mach/ps7_init_gpl.h index fa5d486..0af4165 100644 --- a/arch/arm/mach-zynq/include/mach/ps7_init_gpl.h +++ b/arch/arm/mach-zynq/include/mach/ps7_init_gpl.h @@ -13,6 +13,7 @@ #define OPCODE_MASKWRITE 0U #define OPCODE_MASKPOLL 1U #define OPCODE_MASKDELAY 2U +#define OPCODE_WRITE 3U #define OPCODE_ADDRESS_MASK (~3U) /* Sentinel */ @@ -21,6 +22,7 @@ #define EMIT_MASKWRITE(addr, mask, val) OPCODE_MASKWRITE | addr, mask, val #define EMIT_MASKPOLL(addr, mask) OPCODE_MASKPOLL | addr, mask #define EMIT_MASKDELAY(addr, mask) OPCODE_MASKDELAY | addr, mask +#define EMIT_WRITE(addr, val) OPCODE_WRITE | addr, val /* Returns codes of ps7_init* */ #define PS7_INIT_SUCCESS (0) diff --git a/arch/arm/mach-zynq/ps7_spl_init.c b/arch/arm/mach-zynq/ps7_spl_init.c index 0698278..6dc4e03 100644 --- a/arch/arm/mach-zynq/ps7_spl_init.c +++ b/arch/arm/mach-zynq/ps7_spl_init.c @@ -108,6 +108,12 @@ int __weak ps7_config(unsigned long *ps7_config_init) iowrite((ioread(addr) & ~mask) | (val & mask), addr); break; + case OPCODE_WRITE: + numargs = 2; + val = ptr[1]; + iowrite(val, addr); + break; + case OPCODE_MASKPOLL: numargs = 2; mask = ptr[1]; -- 2.7.4