Changeset 424 for soft/giet_vm


Ignore:
Timestamp:
Oct 3, 2014, 5:25:36 PM (10 years ago)
Author:
porquet
Message:

genmap: fix DTS generation for Linux

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_python/mapping.py

    r423 r424  
    12331233    ################################################################################
    12341234    def linux_dts( self ):     # compute string for linux.dts file generation
    1235                                # used for linux configuration 
     1235                               # used for linux configuration
    12361236        # header
    12371237        s =  '/dts-v1/;\n'
     
    12481248        s += '    linux,stdout-path = &tty;\n'
    12491249        s += '    bootargs = "console=tty0 console=ttyVTTY0 earlyprintk";\n'
    1250         s += '  };\n\n'     
     1250        s += '  };\n\n'
    12511251
    12521252        # cpus (for each cluster)
     
    12711271
    12721272        # devices (ram or peripheral) are grouped per cluster
    1273         # the "compatible" attribute links a peripheral device 
     1273        # the "compatible" attribute links a peripheral device
    12741274        # to one or several drivers identified by ("major","minor")
    12751275
     
    12891289                    size = pseg.size
    12901290
    1291                     s += '  ram@%d_%d: ram@%d_%d {\n' % (x,y,x,y)
     1291                    s += '  ram_%d_%d: ram@0x%x {\n' % (x, y, pseg.base)
    12921292                    s += '    device_type = "memory";\n'
    12931293                    s += '    reg = <0x%x  0x%x  0x%x>;\n' % (msb, lsb, size)
     
    13011301
    13021302                # search XCU (can be replicated)
    1303                 if ( (periph.ptype == 'XCU') ): 
     1303                if ( (periph.ptype == 'XCU') ):
    13041304                    found_xcu     = True
    13051305                    xcu           = periph
    1306                     irq_ctrl_name = 'xcu@%d_%d' % (x,y)
    1307 
    1308                     s += '  %s: %s {\n'  % (irq_ctrl_name, irq_ctrl_name)
     1306                    irq_ctrl_name = 'xcu_%d_%d' % (x, y)
     1307
     1308                    s += '  %s: xcu@0x%x {\n'  % (irq_ctrl_name, periph.pseg.base)
    13091309                    s += '    compatible = "soclib,vci_xicu","soclib,vci_xicu_timer";\n'
    13101310                    s += '    interrupt-controller;\n'
    13111311                    s += '    #interrupt-cells = <1>;\n'
    13121312                    s += '    clocks = <&freq>;\n'         # the XCU component contains a timer
    1313                     s += '    reg = <0x%x  0x%x  0x%x>;\n' % (msb, lsb, size) 
     1313                    s += '    reg = <0x%x  0x%x  0x%x>;\n' % (msb, lsb, size)
    13141314                    s += '  };\n\n'
    13151315
    13161316                # search PIC (non replicated)
    1317                 if ( periph.ptype == 'PIC' ): 
     1317                if ( periph.ptype == 'PIC' ):
    13181318                    found_pic     = True
    13191319                    pic           = periph
    13201320                    irq_ctrl_name = 'pic'
    13211321
    1322                     s += '  %s: %s {\n'  % (irq_ctrl_name, irq_ctrl_name)
     1322                    s += '  %s: pic@0x%x {\n'  % (irq_ctrl_name, periph.pseg.base)
    13231323                    s += '    compatible = "soclib,vci_iopic";\n'
    13241324                    s += '    interrupt-controller;\n'
     
    13281328
    13291329                # search ICU (non supported by Linux)
    1330                 if ( periph.ptype == 'ICU' ): 
     1330                if ( periph.ptype == 'ICU' ):
    13311331                    print '[genmap warning] in linux_dts() : ICU peripheral not supported by LINUX'
    13321332
     
    13341334            if ( (found_xcu == False) and (found_pic == False) and (len(cluster.periphs) > 0) ):
    13351335                print '[genmap error] in linux_dts() : No XCU/PIC in cluster(%d,%d)' % (x,y)
    1336                 sys.exit(1)   
     1336                sys.exit(1)
    13371337
    13381338            if ( found_pic == True ): irq_ctrl = pic
    13391339            else:                     irq_ctrl = xcu
    1340              
     1340
    13411341            # scan all periphs to find TTY and IOC in current cluster
    13421342            for periph in cluster.periphs:
     
    13461346
    13471347                # search TTY (non replicated)
    1348                 if ( periph.ptype == 'TTY' ): 
     1348                if ( periph.ptype == 'TTY' ):
    13491349
    13501350                    # get HWI index to XCU or PIC (only TTY channel 0 is used by Linux)
     
    13591359                    s += '    compatible = "soclib,vci_multi_tty";\n'
    13601360                    s += '    interrupt-parent = <&%s>;\n' % (irq_ctrl_name)
    1361                     s += '    interrupt = <%d>;\n' % hwi_id
     1361                    s += '    interrupts = <%d>;\n' % hwi_id
    13621362                    s += '    reg = <0x%x  0x%x  0x%x>;\n' % (msb, lsb, size)
    13631363                    s += '  };\n\n'
    13641364
    13651365                # search IOC (non replicated)
    1366                 elif ( periph.ptype == 'IOC' ): 
     1366                elif ( periph.ptype == 'IOC' ):
    13671367
    13681368                    if ( periph.subtype == 'BDV' ):
     
    13791379                        s += '    compatible = "soclib,vci_blockdevice";\n'
    13801380                        s += '    interrupt-parent = <&%s>;\n' % (irq_ctrl_name)
    1381                         s += '    interrupt = <%d>;\n' % hwi_id
     1381                        s += '    interrupts = <%d>;\n' % hwi_id
    13821382                        s += '    reg = <0x%x  0x%x  0x%x>;\n' % (msb, lsb, size)
    13831383                        s += '  };\n\n'
     
    13941394
    13951395                # other peripherals
    1396                 else: 
     1396                else:
    13971397                    type = periph.ptype
    13981398                    print '[genmap warning] in linux_dts() : %s peripheral not supported by LINUX' % (type)
    1399            
    1400         # clocks 
     1399
     1400        # clocks
    14011401        s += '  /*** clocks ***/\n\n'
    14021402        s += '  clocks {\n'
    1403         s += '    freq@50MHZ: freq@50MHZ {\n'
     1403        s += '    freq: freq@50MHZ {\n'
    14041404        s += '      #clock-cells = <0>;\n'
    14051405        s += '      compatible = "fixed-clock";\n'
     
    14091409        s += '  cpuclk {\n'
    14101410        s += '    compatible = "soclib,mips32_clksrc";\n'
    1411         s += '    clocks = <&freq@50MHZ>;\n'
     1411        s += '    clocks = <&freq>;\n'
    14121412        s += '  };\n'
    14131413        s += '};\n'
Note: See TracChangeset for help on using the changeset viewer.