Skip to content
Snippets Groups Projects
Select Git revision
  • f3dbb5dceb5b9be42df137ea7aa8c3b310e4fee5
  • test default
2 results

gdbmi.py

Blame
  • vsens.py 2.50 KiB
    # Copyright (c) 2015, The Linux Foundation. All rights reserved.
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License version 2 and
    # only version 2 as published by the Free Software Foundation.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    
    import struct
    from print_out import print_out_str
    
    MAX_FIFO_SIZE = 64
    VSENS_ID_MAX = 6
    
    sysdbg_vsens_idx_name = [
        'VSENS_ID_CX',
        'VSENS_ID_MX',
        'VSENS_ID_APC0',
        'VSENS_ID_APC1',
        'VSENS_ID_GFX',
        'VSENS_ID_EBI',
    ]
    
    sysdbg_vsens_dump_name = [
        'ID',
        'CONFIG_REG0',
        'CONFIG_REG1',
        'STATUS_REG',
    ]
    
    sysdbg_vsens_dump_type = ''.join([
        'I', #id
        'I', #config_reg_0
        'I', #config_reg_1
        'I', #status_reg
    ])
    
    class VsensDumpType():
    
        def __init__(self, idx, regs, fifo):
            self.idx = idx
            self.regs = regs
            self.fifo = fifo
    
        def print_regs(self, outfile, ramdump):
            outfile.write('Voltage Sensor type: [{0}]\n'.format(
                sysdbg_vsens_idx_name[self.idx]))
            for i in range(0, 4):
                outfile.write(
                    '{0} = {1:x}\n'.format(sysdbg_vsens_dump_name[i], self.regs[i]))
    
            outfile.write('FIFO DATA = \n')
            for i in range(0, MAX_FIFO_SIZE):
                if (i % 16) == 0:
                    outfile.write('\n')
                outfile.write('{0:x} '.format(self.fifo[i]))
            outfile.write('\n\n\n\n')
    
    class VsensData():
    
        def __init__(self):
            self.vsens_regs = []
            self.size = struct.calcsize(sysdbg_vsens_dump_type)
    
        def print_vsens_regs(self, ram_dump):
            vsens_file = ram_dump.open_file('vsens.txt')
            for idx in range(0, VSENS_ID_MAX):
                self.vsens_regs[idx].print_regs(vsens_file, ram_dump)
            vsens_file.close()
    
        def init_dump_regs(self, start_addr, end_addr, ram_dump):
            self.start_addr = start_addr
            self.end_addr = end_addr
    
            for i in range(0, VSENS_ID_MAX):
                regs = ram_dump.read_string(
                    self.start_addr, sysdbg_vsens_dump_type, False)
                self.start_addr += self.size
                fifo = ram_dump.read_string(self.start_addr, 'B'*MAX_FIFO_SIZE, False)
                self.start_addr += struct.calcsize('B'*MAX_FIFO_SIZE)
                self.vsens_regs.append(VsensDumpType(i, regs, fifo))
            return True