6969#define TFE_BUS_FRAMEDROP_CFG_0 (c ) BUS_REG(0x238 + (c) * 0x100)
7070#define TFE_BUS_FRAMEDROP_CFG_1 (c ) BUS_REG(0x23c + (c) * 0x100)
7171
72- /*
73- * TODO: differentiate the port id based on requested type of RDI, BHIST etc
74- *
75- * TFE write master IDs (clients)
76- *
77- * BAYER 0
78- * IDEAL_RAW 1
79- * STATS_TINTLESS_BG 2
80- * STATS_BHIST 3
81- * STATS_AWB_BG 4
82- * STATS_AEC_BG 5
83- * STATS_BAF 6
84- * RDI0 7
85- * RDI1 8
86- * RDI2 9
87- */
88- #define RDI_WM (n ) (7 + (n))
89- #define TFE_WM_NUM 10
72+ enum tfe_client {
73+ TFE_CLI_BAYER ,
74+ TFE_CLI_IDEAL_RAW ,
75+ TFE_CLI_STATS_TINTLESS_BG ,
76+ TFE_CLI_STATS_BHIST ,
77+ TFE_CLI_STATS_AWB_BG ,
78+ TFE_CLI_STATS_AEC_BG ,
79+ TFE_CLI_STATS_BAF ,
80+ TFE_CLI_RDI0 ,
81+ TFE_CLI_RDI1 ,
82+ TFE_CLI_RDI2 ,
83+ TFE_CLI_NUM
84+ };
9085
9186enum tfe_iface {
9287 TFE_IFACE_PIX ,
@@ -108,6 +103,13 @@ enum tfe_subgroups {
108103 TFE_SUBGROUP_NUM
109104};
110105
106+ static enum tfe_client tfe_wm_client_map [VFE_LINE_NUM_MAX ] = {
107+ [VFE_LINE_RDI0 ] = TFE_CLI_RDI0 ,
108+ [VFE_LINE_RDI1 ] = TFE_CLI_RDI1 ,
109+ [VFE_LINE_RDI2 ] = TFE_CLI_RDI2 ,
110+ [VFE_LINE_PIX ] = TFE_CLI_BAYER ,
111+ };
112+
111113static enum tfe_iface tfe_line_iface_map [VFE_LINE_NUM_MAX ] = {
112114 [VFE_LINE_RDI0 ] = TFE_IFACE_RDI0 ,
113115 [VFE_LINE_RDI1 ] = TFE_IFACE_RDI1 ,
@@ -209,10 +211,10 @@ static irqreturn_t vfe_isr(int irq, void *dev)
209211 status = readl_relaxed (vfe -> base + TFE_BUS_OVERFLOW_STATUS );
210212 if (status ) {
211213 writel_relaxed (status , vfe -> base + TFE_BUS_STATUS_CLEAR );
212- for (i = 0 ; i < TFE_WM_NUM ; i ++ ) {
214+ for (i = 0 ; i < TFE_CLI_NUM ; i ++ ) {
213215 if (status & BIT (i ))
214216 dev_err_ratelimited (vfe -> camss -> dev ,
215- "VFE%u: bus overflow for wm %u\n" ,
217+ "VFE%u: bus overflow for client %u\n" ,
216218 vfe -> id , i );
217219 }
218220 }
@@ -235,49 +237,49 @@ static void vfe_enable_irq(struct vfe_device *vfe)
235237 TFE_BUS_IRQ_MASK_0_IMG_VIOL , vfe -> base + TFE_BUS_IRQ_MASK_0 );
236238}
237239
238- static void vfe_wm_update (struct vfe_device * vfe , u8 rdi , u32 addr ,
240+ static void vfe_wm_update (struct vfe_device * vfe , u8 wm , u32 addr ,
239241 struct vfe_line * line )
240242{
241- u8 wm = RDI_WM ( rdi ) ;
243+ u8 client = tfe_wm_client_map [ wm ] ;
242244
243- writel_relaxed (addr , vfe -> base + TFE_BUS_IMAGE_ADDR (wm ));
245+ writel_relaxed (addr , vfe -> base + TFE_BUS_IMAGE_ADDR (client ));
244246}
245247
246- static void vfe_wm_start (struct vfe_device * vfe , u8 rdi , struct vfe_line * line )
248+ static void vfe_wm_start (struct vfe_device * vfe , u8 wm , struct vfe_line * line )
247249{
248250 struct v4l2_pix_format_mplane * pix = & line -> video_out .active_fmt .fmt .pix_mp ;
249251 u32 stride = pix -> plane_fmt [0 ].bytesperline ;
250- u8 wm = RDI_WM ( rdi ) ;
252+ u8 client = tfe_wm_client_map [ wm ] ;
251253
252254 /* Configuration for plain RDI frames */
253- writel_relaxed (TFE_BUS_IMAGE_CFG_0_DEFAULT , vfe -> base + TFE_BUS_IMAGE_CFG_0 (wm ));
254- writel_relaxed (0u , vfe -> base + TFE_BUS_IMAGE_CFG_1 (wm ));
255- writel_relaxed (TFE_BUS_IMAGE_CFG_2_DEFAULT , vfe -> base + TFE_BUS_IMAGE_CFG_2 (wm ));
256- writel_relaxed (stride * pix -> height , vfe -> base + TFE_BUS_FRAME_INCR (wm ));
257- writel_relaxed (TFE_BUS_PACKER_CFG_FMT_PLAIN64 , vfe -> base + TFE_BUS_PACKER_CFG (wm ));
255+ writel_relaxed (TFE_BUS_IMAGE_CFG_0_DEFAULT , vfe -> base + TFE_BUS_IMAGE_CFG_0 (client ));
256+ writel_relaxed (0u , vfe -> base + TFE_BUS_IMAGE_CFG_1 (client ));
257+ writel_relaxed (TFE_BUS_IMAGE_CFG_2_DEFAULT , vfe -> base + TFE_BUS_IMAGE_CFG_2 (client ));
258+ writel_relaxed (stride * pix -> height , vfe -> base + TFE_BUS_FRAME_INCR (client ));
259+ writel_relaxed (TFE_BUS_PACKER_CFG_FMT_PLAIN64 , vfe -> base + TFE_BUS_PACKER_CFG (client ));
258260
259261 /* No dropped frames, one irq per frame */
260- writel_relaxed (0 , vfe -> base + TFE_BUS_FRAMEDROP_CFG_0 (wm ));
261- writel_relaxed (1 , vfe -> base + TFE_BUS_FRAMEDROP_CFG_1 (wm ));
262- writel_relaxed (0 , vfe -> base + TFE_BUS_IRQ_SUBSAMPLE_CFG_0 (wm ));
263- writel_relaxed (1 , vfe -> base + TFE_BUS_IRQ_SUBSAMPLE_CFG_1 (wm ));
262+ writel_relaxed (0 , vfe -> base + TFE_BUS_FRAMEDROP_CFG_0 (client ));
263+ writel_relaxed (1 , vfe -> base + TFE_BUS_FRAMEDROP_CFG_1 (client ));
264+ writel_relaxed (0 , vfe -> base + TFE_BUS_IRQ_SUBSAMPLE_CFG_0 (client ));
265+ writel_relaxed (1 , vfe -> base + TFE_BUS_IRQ_SUBSAMPLE_CFG_1 (client ));
264266
265267 vfe_enable_irq (vfe );
266268
267269 writel (TFE_BUS_CLIENT_CFG_EN | TFE_BUS_CLIENT_CFG_MODE_FRAME ,
268- vfe -> base + TFE_BUS_CLIENT_CFG (wm ));
270+ vfe -> base + TFE_BUS_CLIENT_CFG (client ));
269271
270- dev_dbg (vfe -> camss -> dev , "VFE%u: Started RDI %u width %u height %u stride %u\n" ,
271- vfe -> id , rdi , pix -> width , pix -> height , stride );
272+ dev_dbg (vfe -> camss -> dev , "VFE%u: Started client %u width %u height %u stride %u\n" ,
273+ vfe -> id , client , pix -> width , pix -> height , client );
272274}
273275
274- static void vfe_wm_stop (struct vfe_device * vfe , u8 rdi )
276+ static void vfe_wm_stop (struct vfe_device * vfe , u8 wm )
275277{
276- u8 wm = RDI_WM ( rdi ) ;
278+ u8 client = tfe_wm_client_map [ wm ] ;
277279
278- writel (0 , vfe -> base + TFE_BUS_CLIENT_CFG (wm ));
280+ writel (0 , vfe -> base + TFE_BUS_CLIENT_CFG (client ));
279281
280- dev_dbg (vfe -> camss -> dev , "VFE%u: Stopped RDI %u\n" , vfe -> id , rdi );
282+ dev_dbg (vfe -> camss -> dev , "VFE%u: Stopped client %u\n" , vfe -> id , client );
281283}
282284
283285static const struct camss_video_ops vfe_video_ops_520 = {
0 commit comments