@@ -70,11 +70,16 @@ static int force_tsn_source;
70
70
71
71
int is_security_dmx ;
72
72
73
- static void demux_config_pipeline (int cfg_demod_tsn , int cfg_tsn_out )
73
+ static void demux_config_pipeline (int cfg_demod_tsn , int cfg_tsn_out , int tee_compat )
74
74
{
75
75
u32 value = 0 ;
76
76
int ret = 0 ;
77
77
78
+ if (tee_compat ) {
79
+ tee_demux_config_pipeline (cfg_demod_tsn , cfg_tsn_out );
80
+ return ;
81
+ }
82
+
78
83
value = cfg_demod_tsn ;
79
84
value += cfg_tsn_out << 1 ;
80
85
@@ -332,7 +337,7 @@ ssize_t tsn_source_store(struct class *class,
332
337
// pr_dbg("tsn_in:%d, tsn_out:%d\n", tsn_in_reg, tsn_out);
333
338
advb -> dsc_pipeline = tsn_in_reg ;
334
339
//set demod/local
335
- demux_config_pipeline (tsn_in_reg , tsn_out );
340
+ demux_config_pipeline (tsn_in_reg , tsn_out , advb -> tee_compat );
336
341
337
342
mutex_unlock (& advb -> mutex );
338
343
return count ;
@@ -341,6 +346,7 @@ ssize_t tsn_source_store(struct class *class,
341
346
int tsn_set_double_out (int flag )
342
347
{
343
348
int tsn_in_reg = 0 ;
349
+ struct aml_dvb * advb = aml_get_dvb_device ();
344
350
345
351
if (tsn_out == flag )
346
352
return 0 ;
@@ -350,7 +356,7 @@ int tsn_set_double_out(int flag)
350
356
if (tsn_in == INPUT_DEMOD )
351
357
tsn_in_reg = 1 ;
352
358
353
- demux_config_pipeline (tsn_in_reg , tsn_out );
359
+ demux_config_pipeline (tsn_in_reg , tsn_out , advb -> tee_compat );
354
360
return 0 ;
355
361
}
356
362
@@ -369,7 +375,7 @@ int tsn_source_force_set(int source)
369
375
tsn_in = source ;
370
376
advb -> dsc_pipeline = tsn_in_reg ;
371
377
372
- demux_config_pipeline (tsn_in_reg , 0 );
378
+ demux_config_pipeline (tsn_in_reg , 0 , advb -> tee_compat );
373
379
force_tsn_source = 1 ;
374
380
return 0 ;
375
381
}
@@ -678,6 +684,21 @@ int dmx_get_tsn_flag(struct platform_device *pdev, int *tsn_in, int *tsn_out)
678
684
return 0 ;
679
685
}
680
686
687
+ u32 dmx_get_tee_compat_flag (struct platform_device * pdev )
688
+ {
689
+ char buf [32 ];
690
+ u32 tee_compat = 0 ;
691
+ int ret = 0 ;
692
+
693
+ memset (buf , 0 , sizeof (buf ));
694
+ snprintf (buf , sizeof (buf ), "tee_compat" );
695
+ ret = of_property_read_u32 (pdev -> dev .of_node , buf , & tee_compat );
696
+ if (!ret )
697
+ dprint_i ("%s:%d\n" , buf , tee_compat );
698
+
699
+ return tee_compat ;
700
+ }
701
+
681
702
struct aml_dvb * aml_get_dvb_device (void )
682
703
{
683
704
return & aml_dvb_device ;
@@ -843,8 +864,9 @@ static int aml_dvb_probe(struct platform_device *pdev)
843
864
844
865
pr_dbg ("tsn_in:%d, tsn_out:%d\n" , tsn_in_reg , tsn_out );
845
866
advb -> dsc_pipeline = tsn_in_reg ;
867
+ advb -> tee_compat = dmx_get_tee_compat_flag (pdev );
846
868
//set demod/local
847
- demux_config_pipeline (tsn_in_reg , tsn_out );
869
+ demux_config_pipeline (tsn_in_reg , tsn_out , advb -> tee_compat );
848
870
849
871
dmx_init_hw ();
850
872
0 commit comments