@ -8,7 +8,7 @@ from functools import cached_property 
			
		
	
		
			
				
					from  pathlib  import  Path  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					from  cereal  import  log  
			
		
	
		
			
				
					from  common . gpio  import  gpio_set ,  gpio_init  
			
		
	
		
			
				
					from  common . gpio  import  gpio_set ,  gpio_init ,  get_irq_for_action  
			
		
	
		
			
				
					from  system . hardware . base  import  HardwareBase ,  ThermalConfig  
			
		
	
		
			
				
					from  system . hardware . tici  import  iwlist  
			
		
	
		
			
				
					from  system . hardware . tici . pins  import  GPIO  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -63,8 +63,14 @@ MM_MODEM_ACCESS_TECHNOLOGY_LTE = 1 << 14 
			
		
	
		
			
				
					def  sudo_write ( val ,  path ) :  
			
		
	
		
			
				
					  os . system ( f " sudo su -c  ' echo  { val }  >  { path } ' " )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					def  affine_irq ( val ,  irq ) :  
			
		
	
		
			
				
					  sudo_write ( str ( val ) ,  f " /proc/irq/ { irq } /smp_affinity_list " )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					def  affine_irq ( val ,  action ) :  
			
		
	
		
			
				
					  irq  =  get_irq_for_action ( action )   
			
		
	
		
			
				
					  if  len ( irq )  ==  0 :   
			
		
	
		
			
				
					    print ( f " No IRQs found for  ' { action } ' " )   
			
		
	
		
			
				
					    return   
			
		
	
		
			
				
					  for  i  in  irq :   
			
		
	
		
			
				
					    sudo_write ( str ( val ) ,  f " /proc/irq/ { i } /smp_affinity_list " )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  Tici ( HardwareBase ) :  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -432,12 +438,19 @@ class Tici(HardwareBase): 
			
		
	
		
			
				
					      sudo_write ( gov ,  f ' /sys/devices/system/cpu/cpufreq/policy { n } /scaling_governor ' )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # *** IRQ config ***   
			
		
	
		
			
				
					    affine_irq ( 5 ,  565 )    # kgsl-3d0   
			
		
	
		
			
				
					    affine_irq ( 4 ,  126 )    # SPI goes on boardd core   
			
		
	
		
			
				
					    affine_irq ( 4 ,  740 )    # xhci-hcd:usb1 goes on the boardd core   
			
		
	
		
			
				
					    affine_irq ( 4 ,  1069 )   # xhci-hcd:usb3 goes on the boardd core   
			
		
	
		
			
				
					    for  irq  in  range ( 237 ,  246 ) :   
			
		
	
		
			
				
					      affine_irq ( 5 ,  irq )  # camerad   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # GPU   
			
		
	
		
			
				
					    affine_irq ( 5 ,  " kgsl-3d0 " )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # boardd core   
			
		
	
		
			
				
					    affine_irq ( 4 ,  " spi_geni " )         # SPI   
			
		
	
		
			
				
					    affine_irq ( 4 ,  " xhci-hcd:usb1 " )    # internal panda USB   
			
		
	
		
			
				
					    affine_irq ( 4 ,  " xhci-hcd:usb3 " )    # aux panda USB (or potentially anything else on USB)   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # camerad core   
			
		
	
		
			
				
					    camera_irqs  =  ( " cci " ,  " cpas_camnoc " ,  " cpas-cdm " ,  " csid " ,  " ife " ,  " csid " ,  " csid-lite " ,  " ife-lite " )   
			
		
	
		
			
				
					    for  n  in  camera_irqs :   
			
		
	
		
			
				
					      affine_irq ( 5 ,  n )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					  def  get_gpu_usage_percent ( self ) :   
			
		
	
		
			
				
					    try :   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -461,9 +474,11 @@ class Tici(HardwareBase): 
			
		
	
		
			
				
					    # *** IRQ config ***   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # move these off the default core   
			
		
	
		
			
				
					    affine_irq ( 1 ,  7 )     # msm_drm   
			
		
	
		
			
				
					    affine_irq ( 1 ,  250 )   # msm_vidc   
			
		
	
		
			
				
					    affine_irq ( 1 ,  8 )     # i2c_geni (sensord)   
			
		
	
		
			
				
					    affine_irq ( 1 ,  " msm_drm " )   
			
		
	
		
			
				
					    affine_irq ( 1 ,  " msm_vidc " )   
			
		
	
		
			
				
					    affine_irq ( 1 ,  " i2c_geni " )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # mask off big cluster from default affinity   
			
		
	
		
			
				
					    sudo_write ( " f " ,  " /proc/irq/default_smp_affinity " )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    # *** GPU config ***