File tree Expand file tree Collapse file tree 4 files changed +67
-0
lines changed
protoplaster/tests/clock_controller Expand file tree Collapse file tree 4 files changed +67
-0
lines changed Original file line number Diff line number Diff line change 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 )
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments