Ejemplo n.º 1
0
class one_gpio_mode_and_level(Register):
    mode = DictField(
        'mode', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02
        })
    level = DictField('level', 'uint:8', {
        LogicLevel.LOW: 0,
        LogicLevel.HIGH: 1
    })
    pattern = [mode, level]
Ejemplo n.º 2
0
class one_gpio_chip_select(Register):
    control = DictField(
        'control', 'uint:8', {
            ChipSelectControl.DISABLED: 0,
            ChipSelectControl.ENABLED: 1,
            ChipSelectControl.ENABLED_EXCLUSIVE: 2
        })
    pattern = [control]
Ejemplo n.º 3
0
class event_counter(Register):
    overflow = BoolField('overflow')
    mode = DictField(
        'mode', 'uint:3', {
            EventCounterMode.RISING_EDGE: 4,
            EventCounterMode.FALLING_EDGE: 5,
            EventCounterMode.NEGATIVE_PULSE: 6,
            EventCounterMode.POSITIVE_PULSE: 7
        })
    count = Field('count', 'uint:8')
    pattern = [overflow, padding(4), mode, count]
Ejemplo n.º 4
0
class spi_word(Register):
    clock_phase = DictField('clock_phase', 'uint:1', {
        ClockPhase.LEADING_EDGE: 0,
        ClockPhase.TRAILING_EDGE: 1
    })
    clock_polarity = DictField('clock_polarity', 'uint:1', {
        ClockPolarity.IDLE_LOW: 0,
        ClockPolarity.IDLE_HIGH: 1
    })
    chip_select_mode = DictField('chip_select_mode', 'uint:1', {
        OutputMode.OPEN_DRAIN: 0,
        OutputMode.PUSH_PULL: 1
    })
    clock_frequency = DiscreteRangeField(
        'clock_frequency', 'uint:3', operator.ge,
        [12000000, 6000000, 3000000, 1500000, 750000, 375000, 187500, 93800])
    pattern = [
        padding(2), clock_phase, clock_polarity, chip_select_mode,
        clock_frequency
    ]
Ejemplo n.º 5
0
class usb_config(Register):
    vid = Field('vid', 'uintle:16', default=0)
    pid = Field('pid', 'uintle:16', default=0)
    max_power_2mA = Field('max_power_2mA', 'uint:8', default=0)
    power_mode = DictField(
        'power_mode', 'uint:8', {
            PowerMode.BUS_AND_REGULATOR_ON: 0x00,
            PowerMode.SELF_AND_REGULATOR_OFF: 0x01,
            PowerMode.SELF_AND_REGULATOR_ON: 0x02
        })
    major_release = BCDField('major_release', 'uint:8')
    minor_release = BCDField('minor_release', 'uint:8')
    transfer_priority = DictField(
        'transfer_priority', 'uint:8', {
            TransferPriority.HIGH_PRIORITY_READ: 0x00,
            TransferPriority.HIGH_PRIORITY_WRITE: 0x01
        })
    pattern = [
        vid, pid, max_power_2mA, power_mode, major_release, minor_release,
        transfer_priority
    ]
Ejemplo n.º 6
0
 def level_f(num):
     return DictField('gpio%d_level' % num, 'uint:1', {
         LogicLevel.LOW: 0,
         LogicLevel.HIGH: 1
     })
Ejemplo n.º 7
0
 def mode_f(num):
     return DictField('gpio%d_mode' % num, 'uint:1', {
         OutputMode.OPEN_DRAIN: 0,
         OutputMode.PUSH_PULL: 1
     })
Ejemplo n.º 8
0
class pin_config(Register):
    gpio0 = DictField(
        'gpio0', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO0Mode.CS0_n: 0x03
        })
    gpio1 = DictField(
        'gpio1', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO1Mode.CS1_n: 0x03
        })
    gpio2 = DictField(
        'gpio2', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO2Mode.CS2_n: 0x03
        })
    gpio3 = DictField(
        'gpio3', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO3Mode.CS3_n: 0x03,
            GPIO3Mode.RTR_n: 0x04,
            GPIO3Mode.RTR: 0x05
        })
    gpio4 = DictField(
        'gpio4', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO4Mode.CS4_n: 0x03,
            GPIO4Mode.EVENT_COUNTER_RISING_EDGE: 0x04,
            GPIO4Mode.EVENT_COUNTER_FALLING_EDGE: 0x05,
            GPIO4Mode.EVENT_COUNTER_NEGATIVE_PULSE: 0x06,
            GPIO4Mode.EVENT_COUNTER_POSITIVE_PULSE: 0x07
        })
    gpio5 = DictField(
        'gpio5', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO5Mode.CS5_n: 0x03,
            GPIO5Mode.CLKOUT: 0x04
        })
    gpio6 = DictField(
        'gpio6', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO6Mode.CS6_n: 0x03
        })
    gpio7 = DictField(
        'gpio7', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO7Mode.CS7_n: 0x03
        })
    gpio8 = DictField(
        'gpio8', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO8Mode.CS8_n: 0x03,
            GPIO8Mode.SPIACT: 0x04
        })
    gpio9 = DictField(
        'gpio9', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO9Mode.CS9_n: 0x03,
            GPIO9Mode.SUSPEND: 0x04
        })
    gpio10 = DictField(
        'gpio10', 'uint:8', {
            GPIOMode.INPUT: 0x00,
            OutputMode.OPEN_DRAIN: 0x01,
            OutputMode.PUSH_PULL: 0x02,
            GPIO10Mode.CS10_n: 0x03,
            GPIO10Mode.SUSPEND_n: 0x04
        })

    def mask_pattern(func):
        return [
            padding(1),
            func('gpio10'),
            func('gpio9'),
            func('gpio8'),
            func('gpio7'),
            func('gpio6'),
            func('vpp'),
            func('gpio5'),
            func('gpio4'),
            func('gpio3'),
            func('gpio2'),
            func('gpio1'),
            func('gpio0'),
            func('mosi'),
            func('miso'),
            func('sck')
        ]

    gpio_pattern = [
        gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8, gpio9,
        gpio10
    ]

    suspend_level_pattern = mask_pattern(
        lambda pin: DictField('%s_suspend_level' % pin, 'uint:1', {
            LogicLevel.LOW: 0,
            LogicLevel.HIGH: 1
        }))

    suspend_mode_pattern = mask_pattern(
        lambda pin: DictField('%s_suspend_mode' % pin, 'uint:1', {
            OutputMode.OPEN_DRAIN: 0,
            OutputMode.PUSH_PULL: 1
        }))

    wakeup_mask_pattern = mask_pattern(
        lambda pin: BoolField('%s_wakeup_mask' % pin))

    wakeup_match_pattern = mask_pattern(
        lambda pin: DictField('%s_wakeup_match' % pin, 'uint:1', {
            LogicLevel.LOW: 0,
            LogicLevel.HIGH: 1
        }))

    divider = [IntField('clock_divider', 'uint:8')]

    pattern = gpio_pattern + suspend_level_pattern + suspend_mode_pattern + wakeup_mask_pattern + wakeup_match_pattern + divider
Ejemplo n.º 9
0
 def lock_field(name):
     return DictField(name, 'uint:1', {
         LockState.LOCKED: 0,
         LockState.UNLOCKED: 1
     })
Ejemplo n.º 10
0
class rtr_state(Register):
    active = DictField('active', 'uint:8', {False: 0, True: 1})
    pattern = [active]