def get_cfgInfo(self): cp = ConfigParser.ConfigParser(allow_no_value=True) cp.read(ModuleObj.get_cmpPath()) # get GPIO_FREQ section keys = cp.options('GPIO_FREQ') for key in keys: value = cp.get('GPIO_FREQ', key) GpioData._freqMap[key] = value # get GPIO_MODE section keys = cp.options('GPIO_MODE') for key in keys: value = cp.get('GPIO_MODE', key) GpioData._specMap[key] = value GpioData._mapList = cp.options('GPIO_VARIABLES_MAPPING') cp.read(ModuleObj.get_figPath()) ops = cp.options('GPIO') for op in ops: value = cp.get('GPIO', op) list = re.split(r' +|\t+', value) tmp_list = list[0:len(list) - 2] temp = [] for item in tmp_list: str = item[6:len(item) - 1] temp.append(str) GpioData._modeMap[op] = temp data = GpioData() data.set_smtNum(string.atoi(list[len(list) - 1])) ModuleObj.set_data(self, op.lower(), data)
def fill_pinctrl_hFile(self): gen_str = '''#include "pinctrl-paris.h"\n\n''' gen_str += '''static const struct mtk_pin_desc mtk_pins_%s[] = {\n''' % ( ModuleObj.get_chipId().lower()) # 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: gen_str += '''\tMTK_PIN(\n''' gen_str += '''\t\t%s, \"%s\",\n''' % (key[4:], key.upper()) eint_index = self.get_eint_index(key[4:]) if eint_index != -1: gen_str += '''\t\tMTK_EINT_FUNCTION(%d, %d),\n''' % ( 0, eint_index) else: gen_str += '''\t\tMTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),\n''' gen_str += '''\t\tDRV_GRP4''' for i in range(0, GpioData._modNum): mode_name = GpioData.get_modeName(key, i) smt_number = ModuleObj.get_data(self)[key].get_smtNum() if mode_name != '': if smt_number != -1: gen_str += ''',\n\t\tMTK_FUNCTION(%d, "%s")''' % ( i, mode_name) else: gen_str += ''',\n\t\tMTK_FUNCTION(%d, NULL)''' % (i) gen_str += '''\n\t),\n''' gen_str += '''};\n''' return gen_str
def fill_pinctrl_hFile(self): gen_str = '''#include "pinctrl-paris.h"\n\n''' gen_str += '''static const struct mtk_pin_desc mtk_pins_%s[] = {\n''' % ( ModuleObj.get_chipId().lower()) # 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: gen_str += '''\tMTK_PIN(\n''' gen_str += '''\t\t%s, \"%s\",\n''' % (key[4:], key.upper()) eint_index = self.get_eint_index(key[4:]) if eint_index != -1: gen_str += '''\t\tMTK_EINT_FUNCTION(%d, %d),\n''' % ( 0, eint_index) else: gen_str += '''\t\tMTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT),\n''' gen_str += '''\t\tDRV_GRP4''' 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 += ''',\n\t\tMTK_FUNCTION(%d, "%s")''' % ( i + j * 8, lst[j]) gen_str += '''\n\t),\n''' gen_str += '''};\n''' return gen_str
def fill_pinctrl_hFile(self): gen_str = '''#include <linux/pinctrl/pinctrl.h>\n''' gen_str += '''#include <pinctrl-mtk-common.h>\n\n''' gen_str += '''static const struct mtk_desc_pin mtk_pins_%s[] = {\n''' % ( ModuleObj.get_chipId().lower()) #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 += '''\tMTK_PIN(\n''' gen_str += '''\t\tPINCTRL_PIN(%s, \"%s\"),\n''' % (key[4:], key.upper()) gen_str += '''\t\tNULL, \"%s\",\n''' % ( ModuleObj.get_chipId().lower()) gen_str += '''\t\tMTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT)''' 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 += ''',\n\t\tMTK_FUNCTION(%d, "%s")''' % ( i + j * 8, lst[j]) gen_str += '''\n\t),\n''' gen_str += '''};\n''' return gen_str
def isMuxMode(self, key, index, modIdx): mode_name = GpioData.get_modeName(key, index) modIdx.append(index) if mode_name.find('//') != -1: return True return False
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
def set_eint_map_table(self, map_table): GpioData.set_eint_map_table(map_table)
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
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
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