Source code for cros.tests.cros_ec_pwm

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from cros.helpers.sysfs import *
import unittest
import os

[docs]class TestCrosECPWM(unittest.TestCase):
[docs] def test_cros_ec_pwm_backlight(self): """ Check that the backlight is connected to a pwm of the EC and that programming a brightness level to the backlight affects the PWM duty cycle. """ if not os.path.exists("/sys/class/backlight/backlight/max_brightness"): self.skipTest("No backlight pwm found") is_ec_pwm = False if not os.path.exists("/sys/kernel/debug/pwm"): self.skipTest("/sys/kernel/debug/pwm not found") fd = open("/sys/kernel/debug/pwm", "r") line = fd.readline() while line and not is_ec_pwm: if line[0] != " " and ":ec-pwm" in line: line = fd.readline() while line: if line[0] == "\n": is_ec_pwm = False break if "backlight" in line: is_ec_pwm = True break line = fd.readline() line = fd.readline() fd.close() if not is_ec_pwm: self.skipTest("No EC backlight pwm found") fd = open("/sys/class/backlight/backlight/max_brightness", "r") brightness = int(int(fd.read()) / 2) fd.close() fd = open("/sys/class/backlight/backlight/brightness", "w") fd.write(str(brightness)) fd.close() fd = open("/sys/kernel/debug/pwm", "r") line = fd.readline() while line: if "backlight" in line: start = line.find("duty") + 6 self.assertNotEqual(start, 5, msg=f"error reading back PWM info: {line}") end = start + line[start:].find(" ") self.assertNotEqual(start, end, msg=f"error reading back PWM info: {line}") duty = int(line[start:end]) self.assertNotEqual(duty, 0, msg=f"error reading back PWM info: {line}") break line = fd.readline() fd.close()