hw/intc/sh_intc: Turn some defines into an enum

Turn the INTC_MODE defines into an enum and clean up the function
returning these to make it clearer by removing nested ifs and
superfluous parenthesis. The one remaining #define is a flag which is
moved further apart by changing its value from 8 to 0x80 to leave some
spare bits as this is or-ed with the enum value at some places.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Message-Id: <4adf4e1ac9d2e728e5a536c69e310d77f0c4455a.1635541329.git.balaton@eik.bme.hu>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
BALATON Zoltan 2021-10-29 23:02:09 +02:00 committed by Philippe Mathieu-Daudé
parent cfaf2806e8
commit dc6f1734b7
1 changed files with 17 additions and 23 deletions

View File

@ -100,33 +100,26 @@ int sh_intc_get_pending_vector(struct intc_desc *desc, int imask)
abort(); abort();
} }
#define INTC_MODE_NONE 0 typedef enum {
#define INTC_MODE_DUAL_SET 1 INTC_MODE_NONE,
#define INTC_MODE_DUAL_CLR 2 INTC_MODE_DUAL_SET,
#define INTC_MODE_ENABLE_REG 3 INTC_MODE_DUAL_CLR,
#define INTC_MODE_MASK_REG 4 INTC_MODE_ENABLE_REG,
#define INTC_MODE_IS_PRIO 8 INTC_MODE_MASK_REG,
} SHIntCMode;
#define INTC_MODE_IS_PRIO 0x80
static unsigned int sh_intc_mode(unsigned long address, static SHIntCMode sh_intc_mode(unsigned long address, unsigned long set_reg,
unsigned long set_reg, unsigned long clr_reg) unsigned long clr_reg)
{ {
if ((address != A7ADDR(set_reg)) && if (address != A7ADDR(set_reg) && address != A7ADDR(clr_reg)) {
(address != A7ADDR(clr_reg)))
return INTC_MODE_NONE; return INTC_MODE_NONE;
}
if (set_reg && clr_reg) { if (set_reg && clr_reg) {
if (address == A7ADDR(set_reg)) { return address == A7ADDR(set_reg) ?
return INTC_MODE_DUAL_SET; INTC_MODE_DUAL_SET : INTC_MODE_DUAL_CLR;
} else {
return INTC_MODE_DUAL_CLR;
}
}
if (set_reg) {
return INTC_MODE_ENABLE_REG;
} else {
return INTC_MODE_MASK_REG;
} }
return set_reg ? INTC_MODE_ENABLE_REG : INTC_MODE_MASK_REG;
} }
static void sh_intc_locate(struct intc_desc *desc, static void sh_intc_locate(struct intc_desc *desc,
@ -137,7 +130,8 @@ static void sh_intc_locate(struct intc_desc *desc,
unsigned int *width, unsigned int *width,
unsigned int *modep) unsigned int *modep)
{ {
unsigned int i, mode; SHIntCMode mode;
unsigned int i;
/* this is slow but works for now */ /* this is slow but works for now */