|
|
|
@ -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 *** |
|
|
|
|