Skip to content

Commit 700b9ae

Browse files
committed
[#90881] tests: clock_controller: Add LMK04828
1 parent d40a1f8 commit 700b9ae

File tree

4 files changed

+67
-0
lines changed

4 files changed

+67
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from enum import Enum
2+
3+
from protoplaster.tests.spi.spi import SPI
4+
5+
6+
class Register(Enum):
7+
ID_DEVICE_TYPE = (0x003, 1)
8+
ID_PROD = (0x004, 2)
9+
ID_MASKREV = (0x006, 1)
10+
ID_VNDR = (0x00C, 2)
11+
12+
def __new__(cls, index, data_bytes=1):
13+
obj = object.__new__(cls)
14+
obj._value_ = index
15+
obj.index = index
16+
obj.bytes = data_bytes
17+
return obj
18+
19+
20+
class LMK04828:
21+
22+
def __init__(self, bus, device):
23+
self.device = SPI(bus, device)
24+
25+
def read_register(self, reg: Register):
26+
return self.device.read_register(reg.index, reg.bytes)
27+
28+
def write_register(self, reg: Register, value):
29+
return self.device.write_register(reg.index, value, reg.bytes)

protoplaster/tests/clock_controller/LMK04828/__init__.py

Whitespace-only changes.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from protoplaster.conf.module import ModuleName
2+
from protoplaster.tests.clock_controller.LMK04828.LMK04828 import LMK04828, Register
3+
4+
5+
@ModuleName("LMK04828")
6+
class TestLmk04828:
7+
"""
8+
{% macro TestLmk04828(prefix) -%}
9+
LMK04828 SPI test
10+
---------------
11+
This module provides tests for the LMK04828:
12+
{%- endmacro %}
13+
"""
14+
15+
def setup_class(self):
16+
self.clk = LMK04828(self.bus, self.device)
17+
18+
def test_default_values(self):
19+
"""
20+
{% macro test_default_values(device) -%}
21+
check if read-only LMK04828 registers have their default reset value
22+
{%- endmacro %}
23+
"""
24+
25+
for reg, value in self._RESET_VALUES.items():
26+
actual = self.clk.read_register(reg)
27+
assert actual == value, (f"Register {reg.name} (= {actual:#x}) "
28+
f"does not have reset value {value:#x}")
29+
30+
def name(self):
31+
return f"LMK04828({self.bus}, {self.device})"
32+
33+
_RESET_VALUES = {
34+
Register.ID_DEVICE_TYPE: 0x06,
35+
Register.ID_PROD: 0xd05b,
36+
Register.ID_MASKREV: 0x20,
37+
Register.ID_VNDR: 0x5104,
38+
}

protoplaster/tests/clock_controller/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)