Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/komeda: Add event handling for EMPTY/FULL

EMPTY/FULL are HW input/output FIFO condition identifer, which are
useful information for addressing the problem, so expose them.

Signed-off-by: james qian wang (Arm Technology China) <james.qian.wang@arm.com>
Reviewed-by: Mihail Atanassov <mihail.atanassov@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191212072737.30116-1-james.qian.wang@arm.com

+21 -2
+12 -1
drivers/gpu/drm/arm/display/komeda/d71/d71_dev.c
··· 20 20 evts |= KOMEDA_EVENT_IBSY; 21 21 if (raw_status & LPU_IRQ_EOW) 22 22 evts |= KOMEDA_EVENT_EOW; 23 + if (raw_status & LPU_IRQ_OVR) 24 + evts |= KOMEDA_EVENT_OVR; 23 25 24 - if (raw_status & (LPU_IRQ_ERR | LPU_IRQ_IBSY)) { 26 + if (raw_status & (LPU_IRQ_ERR | LPU_IRQ_IBSY | LPU_IRQ_OVR)) { 25 27 u32 restore = 0, tbu_status; 26 28 /* Check error of LPU status */ 27 29 status = malidp_read32(reg, BLK_STATUS); ··· 47 45 restore |= LPU_STATUS_ACE3; 48 46 evts |= KOMEDA_ERR_ACE3; 49 47 } 48 + if (status & LPU_STATUS_FEMPTY) { 49 + restore |= LPU_STATUS_FEMPTY; 50 + evts |= KOMEDA_EVENT_EMPTY; 51 + } 52 + if (status & LPU_STATUS_FFULL) { 53 + restore |= LPU_STATUS_FFULL; 54 + evts |= KOMEDA_EVENT_FULL; 55 + } 56 + 50 57 if (restore != 0) 51 58 malidp_write32_mask(reg, BLK_STATUS, restore, 0); 52 59
+3
drivers/gpu/drm/arm/display/komeda/d71/d71_regs.h
··· 175 175 #define TBU_DOUTSTDCAPB_MASK 0x3F 176 176 177 177 /* LPU_IRQ_BITS */ 178 + #define LPU_IRQ_OVR BIT(9) 178 179 #define LPU_IRQ_IBSY BIT(10) 179 180 #define LPU_IRQ_ERR BIT(11) 180 181 #define LPU_IRQ_EOW BIT(12) ··· 186 185 #define LPU_STATUS_AXIE BIT(4) 187 186 #define LPU_STATUS_AXIRP BIT(5) 188 187 #define LPU_STATUS_AXIWP BIT(6) 188 + #define LPU_STATUS_FEMPTY BIT(11) 189 + #define LPU_STATUS_FFULL BIT(14) 189 190 #define LPU_STATUS_ACE0 BIT(16) 190 191 #define LPU_STATUS_ACE1 BIT(17) 191 192 #define LPU_STATUS_ACE2 BIT(18)
+4 -1
drivers/gpu/drm/arm/display/komeda/komeda_dev.h
··· 20 20 #define KOMEDA_EVENT_OVR BIT_ULL(4) 21 21 #define KOMEDA_EVENT_EOW BIT_ULL(5) 22 22 #define KOMEDA_EVENT_MODE BIT_ULL(6) 23 + #define KOMEDA_EVENT_FULL BIT_ULL(7) 24 + #define KOMEDA_EVENT_EMPTY BIT_ULL(8) 23 25 24 26 #define KOMEDA_ERR_TETO BIT_ULL(14) 25 27 #define KOMEDA_ERR_TEMR BIT_ULL(15) ··· 51 49 KOMEDA_ERR_ZME | KOMEDA_ERR_MERR | KOMEDA_ERR_TCF |\ 52 50 KOMEDA_ERR_TTNG | KOMEDA_ERR_TTF) 53 51 54 - #define KOMEDA_WARN_EVENTS KOMEDA_ERR_CSCE 52 + #define KOMEDA_WARN_EVENTS \ 53 + (KOMEDA_ERR_CSCE | KOMEDA_EVENT_FULL | KOMEDA_EVENT_EMPTY) 55 54 56 55 #define KOMEDA_INFO_EVENTS (0 \ 57 56 | KOMEDA_EVENT_VSYNC \
+2
drivers/gpu/drm/arm/display/komeda/komeda_event.c
··· 78 78 79 79 /* LPU errors or events */ 80 80 evt_sprintf(str, events & KOMEDA_EVENT_IBSY, "IBSY|"); 81 + evt_sprintf(str, events & KOMEDA_EVENT_EMPTY, "EMPTY|"); 82 + evt_sprintf(str, events & KOMEDA_EVENT_FULL, "FULL|"); 81 83 evt_sprintf(str, events & KOMEDA_ERR_AXIE, "AXIE|"); 82 84 evt_sprintf(str, events & KOMEDA_ERR_ACE0, "ACE0|"); 83 85 evt_sprintf(str, events & KOMEDA_ERR_ACE1, "ACE1|");