コード例 #1
0
    def fill_pinfunc_hFile(self):
        gen_str = '''#include \"mt65xx.h\"\n\n'''
        #sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare)
        for key in sorted_key(ModuleObj.get_data(self).keys()):
            #for key in sorted_list:
            value = ModuleObj.get_data(self)[key]
            for i in range(0, GpioData._modNum):
                mode_name = GpioData.get_modeName(key, i)

                if mode_name != '':
                    lst = []
                    if mode_name.find('//') != -1:
                        lst = mode_name.split('//')
                    else:
                        lst.append(mode_name)

                    for j in range(0, len(lst)):
                        gen_str += '''#define PINMUX_GPIO%s__FUNC_%s (MTK_PIN_NO(%s) | %d)\n''' % (
                            key[4:], lst[j], key[4:], (i + j * 8))

            gen_str += '''\n'''
        gen_str += '''\n'''

        return gen_str
コード例 #2
0
    def fill_dtsiFile(self):
        gen_str = '''&pio {\n\n'''
        gen_str += '''\tgpio_pins_default: gpiodef{\n\t};\n\n'''

        #sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare)
        for key in sorted_key(ModuleObj.get_data(self).keys()):
            #for key in sorted_list:
            value = ModuleObj.get_data(self)[key]
            gen_str += '''\t%s: gpio@%s {\n''' % (key.lower(), key[4:])
            gen_str += '''\t\tpins_cmd_dat {\n'''
            mode = value.get_defMode()
            mode_name = GpioData.get_modeName(key, mode)
            if self.__gpio_column_enable:
                mode_val = value.get_modeVec()[mode]
                if mode_val == '1':
                    if mode_name.find('//') != -1:
                        mode_name = mode_name.split('//')[0]
                elif mode_val == '2':
                    if mode_name.find('//') != -1:
                        mode_name = mode_name.split('//')[1]

            gen_str += '''\t\t\tpins = <PINMUX_GPIO%s__FUNC_%s>;\n''' % (
                key[4:], mode_name)
            gen_str += '''\t\t\tslew-rate = <%d>;\n''' % (value.ge_defDirInt())

            temp = ''
            if not value.get_inPullEn():
                temp = 'bias-disable;'
            gen_str += '''\t\t\t%s\n''' % (temp)
            if value.get_inPullSelHigh():
                temp = '11'
            else:
                temp = '00'
            gen_str += '''\t\t\tbias-pull-down = <%s>;\n''' % (temp)
            if value.get_outHigh():
                temp = 'high'
            else:
                temp = 'low'
            gen_str += '''\t\t\toutput-%s;\n''' % (temp)
            gen_str += '''\t\t\tinput-schmitt-enable = <%d>;\n''' % (
                value.get_smtEn())
            gen_str += '''\t\t};\n'''
            gen_str += '''\t};\n'''

        gen_str += '''};\n\n'''

        gen_str += '''&gpio {\n'''
        lineLen = 0
        gen_str += '''\tpinctrl-names = "default",'''
        lineLen += 30
        for i in range(0, GpioData._count - 1):
            gen_str += '''"gpio%d",''' % (i)
            if i < 10:
                lineLen += 8
            elif i < 100:
                lineLen += 9
            elif i >= 100:
                lineLen += 10

            if lineLen > 100:
                gen_str += '''\n'''
                lineLen = 0

        gen_str += '''"gpio%d";\n''' % (GpioData._count - 1)
        gen_str += '''\tpinctrl-0 = <&gpio_pins_default>;\n'''

        for i in range(1, GpioData._count):
            gen_str += '''\tpinctrl-%d = <&gpio%d>;\n''' % (i, i - 1)

        gen_str += '''\n'''
        gen_str += '''\tstatus = \"okay\";\n'''
        gen_str += '''};\n'''

        return gen_str
コード例 #3
0
    def fill_cFile(self):
        gen_str = ''

        for key in sorted_key(ModuleObj.get_data(self).keys()):
            value = ModuleObj.get_data(self)[key]
            if 'GPIO_INIT_NO_COVER' in value.get_varNames():
                continue

            for varName in value.get_varNames():
                gen_str += '''#define %s\t\t\t(%s | 0x80000000)\n''' % (
                    varName.upper(), key.upper())
                if value.get_eintMode():
                    gen_str += '''#define %s_M_EINT\t\tGPIO_MODE_00\n''' % (
                        varName)
                if self.__gpio_column_enable:
                    temp_list = []
                    for item in GpioData._specMap.keys():
                        regExp = '[_A-Z0-9:]*%s[_A-Z0-9:]*' % (item.upper())
                        pat = re.compile(regExp)
                        for i in range(0, GpioData._modNum):
                            list = value.get_modeVec()
                            mode_name = GpioData.get_modeName(key, i)

                            if list[i] == '1':
                                if mode_name.find('//') != -1:
                                    mode_name = mode_name.split('//')[0]
                            elif list[i] == '2':
                                if mode_name.find('//') != -1:
                                    mode_name = mode_name.split('//')[1]

                            if pat.match(mode_name):
                                if cmp(item, 'eint') == 0 and (
                                    (value.get_eintMode()
                                     or mode_name.find('MD_EINT') != -1)):
                                    continue

                                gen_str += '''#define %s%s\t\tGPIO_MODE_0%d\n''' % (
                                    varName.upper(),
                                    GpioData._specMap[item].upper(), i)
                                temp_list.append(i)
                                break

                    if not value.get_eintMode():
                        list = value.get_modeVec()
                        for i in range(0, GpioData._modNum):
                            mode_name = GpioData.get_modeName(key, i)

                            if list[i] == '0':
                                continue
                            elif list[i] == '1':
                                if mode_name.find('//') != -1:
                                    mode_name = mode_name.split('//')[0]
                            elif list[i] == '2':
                                if mode_name.find('//') != -1:
                                    mode_name = mode_name.split('//')[1]

                            if not i in temp_list:
                                gen_str += '''#define %s_M_%s\t\tGPIO_MODE_0%d\n''' % (
                                    varName, re.sub(r'\d{0,3}$', '',
                                                    mode_name), i)

                    regExp = r'CLKM\d'
                    pat = re.compile(regExp)
                    for i in range(0, GpioData._modNum):
                        mode = GpioData.get_modeName(key, i)
                        if pat.match(mode):
                            gen_str += '''#define %s_CLK\t\tCLK_OUT%s\n''' % (
                                varName, mode[4:])
                            temp = ''
                            if varName in GpioData._freqMap.keys():
                                temp = GpioData._freqMap[varName]
                            else:
                                temp = 'GPIO_CLKSRC_NONE'
                            gen_str += '''#define %s_FREQ\t\t%s\n''' % (
                                varName, temp)
                else:
                    mode_name = GpioData.get_modeName(key, value.get_defMode())
                    bmatch = False
                    for item in GpioData._specMap.keys():
                        regExp = '[_A-Z0-9:]*%s[_A-Z0-9:]*' % (item.upper())
                        pat = re.compile(regExp)
                        if pat.match(mode_name):
                            if cmp(item, 'eint') == 0 and (
                                (value.get_eintMode()
                                 or mode_name.find('MD_EINT') != -1)):
                                continue
                            gen_str += '''#define %s%s\t\tGPIO_MODE_0%d\n''' % (
                                varName.upper(),
                                GpioData._specMap[item].upper(),
                                value.get_defMode())
                            bmatch = True

                    if not bmatch:
                        gen_str += '''#define %s_M_%s\t\tGPIO_MODE_0%d\n''' % (
                            varName.upper(), re.sub(
                                r'\d{0,3}$', '',
                                mode_name), value.get_defMode())

                    if value.get_defMode() != 0:
                        mode_name = GpioData.get_modeName(key, 0)
                        gen_str += '''#define %s_M_%s\t\tGPIO_MODE_0%d\n''' % (
                            varName.upper(), re.sub(r'\d{0,3}$', '',
                                                    mode_name), 0)

                gen_str += '''\n'''

        return gen_str
コード例 #4
0
    def fill_hFile(self):
        gen_str = '''//Configuration for GPIO SMT(Schmidt Trigger) Group output start\n'''
        temp_list = []
        for key in sorted_key(ModuleObj.get_data(self).keys()):
            #for value in ModuleObj.get_data(self).values():
            value = ModuleObj.get_data(self)[key]
            num = value.get_smtNum()
            if num in temp_list or num < 0:
                continue
            else:
                temp_list.append(num)
                if value.get_smtEn():
                    gen_str += '''#define GPIO_SMT_GROUP_%d\t\t1\n''' % (num)
                else:
                    gen_str += '''#define GPIO_SMT_GROUP_%d\t\t0\n''' % (num)

        gen_str += '''\n\n'''

        sorted_list = sorted(ModuleObj.get_data(self).keys(), key=compare)

        for key in sorted_list:
            value = ModuleObj.get_data(self)[key]
            if self.is_i2cPadPin(value.get_modeName(key, value.get_defMode())):
                value.set_inpullEn(False)
                value.set_outHigh(False)
                value.set_inpullSelHigh(False)

            gen_str += '''//Configuration for %s\n''' % (key.upper())

            mode_name = GpioData.get_modeName(key, value.get_defMode())
            val = ''
            if mode_name != '':
                if self.__gpio_column_enable:
                    flag = False
                    if mode_name.find('//') != -1:
                        flag = True

                    if flag:
                        if value.get_modeVec()[value.get_defMode()] == '1':
                            val = str(value.get_defMode())
                        elif value.get_modeVec()[value.get_defMode()] == '2':
                            val = str(value.get_defMode() + GpioData._modNum)
                    else:
                        val = str(value.get_defMode())
                else:
                    val = str(value.get_defMode())

            if len(val) < 2:
                val = '0' + val

            pull_en = ''
            if value.get_inPullEn():
                pull_en = 'ENABLE'
            else:
                pull_en = 'DISABLE'

            pull_sel = ''
            if value.get_inPullSelHigh():
                pull_sel = 'UP'
            else:
                pull_sel = 'DOWN'

            out_high = ''
            if value.get_outHigh():
                out_high = 'ONE'
            else:
                out_high = 'ZERO'

            smt_en = ''
            if value.get_smtEn():
                smt_en = 'ENABLE'
            else:
                smt_en = 'DISABLE'

            ies_en = ''
            if value.get_iesEn():
                ies_en = 'ENABLE'
            else:
                ies_en = 'DISABLE'

            gen_str += '''#define %s_MODE\t\t\tGPIO_MODE_%s\n''' % (
                key.upper(), val)
            gen_str += '''#define %s_DIR\t\t\tGPIO_DIR_%s\n''' % (
                key.upper(), value.get_defDir())
            gen_str += '''#define %s_PULLEN\t\tGPIO_PULL_%s\n''' % (
                key.upper(), pull_en)
            gen_str += '''#define %s_PULL\t\t\tGPIO_PULL_%s\n''' % (
                key.upper(), pull_sel)
            gen_str += '''#define %s_DATAOUT\t\tGPIO_OUT_%s\n''' % (
                key.upper(), out_high)
            gen_str += '''#define %s_SMT\t\t\tGPIO_SMT_%s\n''' % (key.upper(),
                                                                  smt_en)
            gen_str += '''#define %s_IES\t\t\tGPIO_IES_%s\n''' % (key.upper(),
                                                                  ies_en)

            if self.__drvCur:
                drv_cur = 'DRV_UNSUPPORTED'
                if value.get_drvCur() != '':
                    drv_cur = value.get_drvCur()
                gen_str += '''#define %s_DRV\t\t\tGPIO_%s\n''' % (key.upper(),
                                                                  drv_cur)

            gen_str += '''\n'''

        return gen_str