From e2a41c7edc72ecbcda3172f7d2607d3e3a2770e6 Mon Sep 17 00:00:00 2001 From: "zhiguo.ping" Date: Fri, 19 Aug 2016 11:36:14 +0800 Subject: [ALPS02860760] dct: support whitney [Detail] [Solution] Change-Id: Ifc6098666566575c44cbd47476ca9681e432b991 Signed-off-by: zhiguo.ping CR-Id: ALPS02860760 Feature: Tools --- tools/dct/DrvGen.py | 23 ++++---- tools/dct/config/PMIC_MT6350PMUMP.cmp | 79 +++++++++++++++++++++++++ tools/dct/config/PMIC_MT6355PMUMP.cmp | 38 ++++++++++++ tools/dct/config/YuSu.cmp | 88 ++++++++++++++++++++-------- tools/dct/data/EintData.py | 8 ++- tools/dct/data/I2cData.py | 1 - tools/dct/data/KpdData.py | 37 ++++++++++++ tools/dct/data/Md1EintData.py | 2 +- tools/dct/data/PmicData.py | 2 +- tools/dct/data/PowerData.py | 1 - tools/dct/obj/ChipObj.py | 53 ++++++++++++++--- tools/dct/obj/ClkObj.py | 107 +++++++++++++++++++++++++++++++++- tools/dct/obj/EintObj.py | 26 ++++++--- tools/dct/obj/GpioObj.py | 24 +++++++- tools/dct/obj/I2cObj.py | 26 ++++++--- tools/dct/obj/KpdObj.py | 102 +++++++++++++++++++++++++------- tools/dct/obj/Md1EintObj.py | 42 ++++++++----- tools/dct/obj/PmicObj.py | 6 +- tools/dct/obj/PowerObj.py | 3 +- tools/dct/utility/version.py | 4 +- 20 files changed, 562 insertions(+), 110 deletions(-) create mode 100644 tools/dct/config/PMIC_MT6350PMUMP.cmp create mode 100644 tools/dct/config/PMIC_MT6355PMUMP.cmp (limited to 'tools') diff --git a/tools/dct/DrvGen.py b/tools/dct/DrvGen.py index 5c3dbd308081..33387f5224a8 100755 --- a/tools/dct/DrvGen.py +++ b/tools/dct/DrvGen.py @@ -4,6 +4,7 @@ import os, sys import getopt import traceback +import subprocess import xml.dom.minidom sys.path.append('.') @@ -13,6 +14,8 @@ from obj.ChipObj import ChipObj from obj.ChipObj import Everest from obj.ChipObj import Olympus from obj.ChipObj import KiboPlus +from obj.ChipObj import Rushmore +from obj.ChipObj import Whitney from utility.util import LogLevel from utility.util import log @@ -29,7 +32,7 @@ log_path : where to store the log files paras : parameter for generate wanted file ''' -def is_oldDws(path): +def is_oldDws(path, gen_spec): if not os.path.exists(path): log(LogLevel.error, 'Can not find %s' %(path)) sys.exit(-1) @@ -42,7 +45,8 @@ def is_oldDws(path): log(LogLevel.warn, 'Please use old DCT UI to gen all files!') return True old_dct = os.path.join(sys.path[0], 'old_dct', 'DrvGen') - if os.execl(old_dct, dws_path, gen_path, log_path, gen_spec[0]): + cmd = old_dct + ' ' + dws_path + ' ' + gen_path + ' ' + log_path + ' ' + gen_spec[0] + if 0 == subprocess.call(cmd, shell=True): return True else: log(LogLevel.error, '%s format error!' %(dws_path)) @@ -108,10 +112,11 @@ if __name__ == '__main__': log(LogLevel.error, 'Can not find "%s", log path not exist!' %(log_path)) sys.exit(-1) - if is_oldDws(dws_path): + if is_oldDws(dws_path, gen_spec): sys.exit(0) chipId = ChipObj.get_chipId(dws_path) + log(LogLevel.info, 'chip id: %s' %(chipId)) chipObj = None if cmp(chipId, 'MT6797') == 0: chipObj = Everest(dws_path, gen_path) @@ -119,6 +124,10 @@ if __name__ == '__main__': chipObj = Olympus(dws_path, gen_path) elif cmp(chipId, 'KIBOPLUS') == 0: chipObj = KiboPlus(dws_path, gen_path) + elif cmp(chipId, 'MT6570') == 0: + chipObj = Rushmore(dws_path, gen_path) + elif cmp(chipId, 'MT6799') == 0: + chipObj = Whitney(dws_path, gen_path) else: chipObj = ChipObj(dws_path, gen_path) @@ -132,11 +141,3 @@ if __name__ == '__main__': sys.exit(0) - - - - - - - - diff --git a/tools/dct/config/PMIC_MT6350PMUMP.cmp b/tools/dct/config/PMIC_MT6350PMUMP.cmp new file mode 100644 index 000000000000..006921590511 --- /dev/null +++ b/tools/dct/config/PMIC_MT6350PMUMP.cmp @@ -0,0 +1,79 @@ +[PMIC_TABLE] +CHIP = MT6350 +NUM_LDO = 18 +FUNCTION = pmic_set_register_value +LDO_APPNAME_DEFAULT = MT65XX_POWER_NONE +INCLUDE_HEADER = linux/types.h:mach/mt_typedefs.h:mach/upmu_common.h:mach/upmu_hw.h:mach/mt_pm_ldo.h + + +[LDO_NAME1] +LDO_NAME=VMC +PARAMETER_NAME = PMIC_RG_VMC_EN + +[LDO_NAME2] +LDO_NAME=VMCH +PARAMETER_NAME = PMIC_RG_VMCH_EN + +[LDO_NAME3] +LDO_NAME=VEMC_3V3 +PARAMETER_NAME = PMIC_RG_VEMC_3V3_EN + +[LDO_NAME4] +LDO_NAME=VGP1 +PARAMETER_NAME = PMIC_RG_VGP1_EN + +[LDO_NAME5] +LDO_NAME=VGP2 +PARAMETER_NAME = PMIC_RG_VGP2_EN + +[LDO_NAME6] +LDO_NAME=VGP3 +PARAMETER_NAME = PMIC_RG_VGP3_EN + +[LDO_NAME7] +LDO_NAME=VCN_1V8 +PARAMETER_NAME = PMIC_RG_VCN_1V8_EN + +[LDO_NAME8] +LDO_NAME=VSIM1 +PARAMETER_NAME = PMIC_RG_VSIM1_EN + +[LDO_NAME9] +LDO_NAME=VSIM2 +PARAMETER_NAME = PMIC_RG_VSIM2_EN + +[LDO_NAME10] +LDO_NAME=VCAMAF +PARAMETER_NAME = PMIC_RG_VCAM_AF_EN + +[LDO_NAME11] +LDO_NAME=VIBR +PARAMETER_NAME = PMIC_RG_VIBR_EN + +[LDO_NAME12] +LDO_NAME=VM +PARAMETER_NAME = PMIC_RG_VM_EN + +[LDO_NAME13] +LDO_NAME=VRF18 +PARAMETER_NAME = PMIC_RG_VRF18_EN + +[LDO_NAME14] +LDO_NAME=VCAMD +PARAMETER_NAME = PMIC_RG_VCAMD_EN + +[LDO_NAME15] +LDO_NAME=VCAMIO +PARAMETER_NAME = PMIC_RG_VCAM_IO_EN + +[LDO_NAME16] +LDO_NAME=VCAMA +PARAMETER_NAME = PMIC_RG_VCAMA_EN + +[LDO_NAME17] +LDO_NAME=VCN33_WIFI +PARAMETER_NAME = PMIC_RG_VCN33_EN_WIFI + +[LDO_NAME18] +LDO_NAME=VCN28 +PARAMETER_NAME = PMIC_RG_VCN28_EN diff --git a/tools/dct/config/PMIC_MT6355PMUMP.cmp b/tools/dct/config/PMIC_MT6355PMUMP.cmp new file mode 100644 index 000000000000..847578400fc1 --- /dev/null +++ b/tools/dct/config/PMIC_MT6355PMUMP.cmp @@ -0,0 +1,38 @@ +[PMIC_TABLE] +CHIP = MT6355 +NUM_LDO = 8 +FUNCTION = pmic_set_register_value +LDO_APPNAME_DEFAULT = MT65XX_POWER_NONE +INCLUDE_HEADER = linux/types.h:mach/mt_typedefs.h:mach/upmu_common.h:mach/upmu_hw.h:mach/mt_pm_ldo.h + +[LDO_NAME1] +LDO_NAME = VCAMA1 +PARAMETER_NAME = PMIC_RG_LDO_VCAMA1_EN + +[LDO_NAME2] +LDO_NAME = VCAMA2 +PARAMETER_NAME = PMIC_RG_LDO_VCAMA2_EN + +[LDO_NAME3] +LDO_NAME = VSIM1 +PARAMETER_NAME = PMIC_RG_LDO_VSIM1_EN + +[LDO_NAME4] +LDO_NAME = VSIM2 +PARAMETER_NAME = PMIC_RG_LDO_VSIM2_EN + +[LDO_NAME5] +LDO_NAME = VCAMD1 +PARAMETER_NAME = PMIC_RG_LDO_VCAMD1_EN + +[LDO_NAME6] +LDO_NAME = VCAMD2 +PARAMETER_NAME = PMIC_RG_LDO_VCAMD2_EN + +[LDO_NAME7] +LDO_NAME = VCAMIO +PARAMETER_NAME = PMIC_RG_LDO_VCAMIO_EN + +[LDO_NAME8] +LDO_NAME = VLDO28 +PARAMETER_NAME = PMIC_RG_LDO_VLDO28_EN_AF diff --git a/tools/dct/config/YuSu.cmp b/tools/dct/config/YuSu.cmp index f61854674d09..0a80a65aaf5c 100644 --- a/tools/dct/config/YuSu.cmp +++ b/tools/dct/config/YuSu.cmp @@ -94,7 +94,14 @@ MT6351_PMIC MT6353_PMIC MT6335_PMIC MT6337_PMIC +MT6350_PMIC RT1711H_PD +VPROC_BUCK +RT1711_PD_CTRL +RT9750_CHR_1 +RT9750_CHR_2 +MT6355_PMIC +RT5081_PMU_EINT [GPIO_variables] GPIO_AST_RST_PIN @@ -780,6 +787,30 @@ GPIO_RT9465_EINT_PIN GPIO_MT6336_EINT_PIN GPIO_EINT_RAMDUMP_PIN GPIO_SIM3_HOT_PLUG +GPIO_VPROC_BUCK_EINT_PIN +GPIO_MT6632_TSF_PIN +GPIO_RT1711_EINT_PIN +GPIO_RT9750_EINT_1 +GPIO_RT9750_EINT_2 +GPIO_CAMERA_CMMCLK1_PIN +GPIO_MSDC3_DSL +GPIO_MT6380_PMU_EN +GPIO_WLC_PAV_PIN +GPIO_RT9750_EN_PIN +GPIO_MT6380_RSTB_PIN +GPIO_MT6632_STRAP_PIN +GPIO_SPI1_CS_PIN +GPIO_SPI1_MOSI_PIN +GPIO_SPI1_MISO_PIN +GPIO_SPI1_CK_PIN +GPIO_SPI3_CS_PIN +GPIO_SPI3_MOSI_PIN +GPIO_SPI3_MISO_PIN +GPIO_SPI3_CK_PIN +GPIO_SPI9_CS_PIN +GPIO_SPI9_MOSI_PIN +GPIO_SPI9_MISO_PIN +GPIO_SPI9_CK_PIN [GPIO_MODE_EINT_WHITE_LIST] DSI_TE @@ -836,15 +867,17 @@ GPIO_RF_CONTROL1 GPIO_SIM3_HOT_PLUG [SLAVE_DEVICE] +ALSPS +BAROMETER +BUCK_BOOST CAMERA_MAIN CAMERA_MAIN_AF -CAMERA_MAIN_TWO CAMERA_MAIN_HW +CAMERA_MAIN_TWO CAMERA_SUB CAMERA_SUB_AF -CAMERA_MAIN_TWO_AF -VPROC_BUCK -VGPU_BUCK +CAP_TOUCH +CHARGEPUMP EXT_BOOST EXT_BUCK EXT_BUCK2 @@ -852,34 +885,40 @@ EXT_BUCK3 EXT_BUCK_LP4 EXT_BUCK_LP4X EXT_BUCK_SRAM +EXT_DISP +EXT_SPEAKER_AMP EXT_VBAT_BOOST -CHARGEPUMP -SW_CHARGER -SLAVE_CHARGER -SWITHING_CHARGER -SWITCHING_CHARGER_TI -SWITCHING_CHARGER_RT -CAP_TOUCH -MSENSOR -MHL GSENSOR -PRESSURE -ALSPS GYRO -TEMPER +HUMIDITY +I2C_LCD_BIAS +MHL +MSENSOR +NFC +PRESSURE +SLAVE_CHARGER +SPEAKER_AMP STROBE_MAIN STROBE_MAIN_2 STROBE_SUB STROBE_SUB_2 -NFC -EXT_SPEAKER_AMP -EXT_DISP -I2C_LCD_BIAS -BUCK_BOOST -SPEAKER_AMP +SW_CHARGER +SWITHING_CHARGER +TEMPER USB_TYPE_C -BAROMETER -HUMIDITY +VGPU_BUCK +VPROC_BUCK +DIRECT_CHARGER_1 +DIRECT_CHARGER_2 +SMART_PA +DP_SWITCH +DP_TRANS +DP_SWITCH_TRANS +MHL_TRANS +MHL_SWITCH +BYPASS_BOOST +TYPEC_PD +RT5081_PMU [Key_definition] HOME = 102 @@ -985,4 +1024,3 @@ BAROMETER_VDD BAROMETER_VIO MEMORY_CARD_VDD - diff --git a/tools/dct/data/EintData.py b/tools/dct/data/EintData.py index 7172828bacb4..79f1c53ef7e5 100755 --- a/tools/dct/data/EintData.py +++ b/tools/dct/data/EintData.py @@ -51,6 +51,10 @@ class EintData: def set_mapTable(map): EintData._map_table = map + @staticmethod + def get_mapTable(): + return EintData._map_table + @staticmethod def get_modeName(gpio_num, mode_idx): key = 'gpio%s' %(gpio_num) @@ -73,8 +77,8 @@ class EintData: EintData._mode_map = map @staticmethod - def get_mapTable(): - return EintData._map_table + def get_modeMap(): + return EintData._mode_map @staticmethod def get_gpioNum(num): diff --git a/tools/dct/data/I2cData.py b/tools/dct/data/I2cData.py index e7027316931f..b4858ea06f3c 100755 --- a/tools/dct/data/I2cData.py +++ b/tools/dct/data/I2cData.py @@ -48,4 +48,3 @@ class I2cData: - diff --git a/tools/dct/data/KpdData.py b/tools/dct/data/KpdData.py index 5ea7a7cf217d..445b22773529 100755 --- a/tools/dct/data/KpdData.py +++ b/tools/dct/data/KpdData.py @@ -4,6 +4,8 @@ class KpdData: _row = -1 _col = -1 + _row_ext = -1 + _col_ext = -1 _gpioNum = -1 _util = '' _homeKey = '' @@ -11,6 +13,7 @@ class KpdData: _pressTime = -1 _dinHigh = False _matrix = [] + _matrix_ext = [] _useEint = False _downloadKeys = [] _keyValueMap = {} @@ -36,10 +39,34 @@ class KpdData: def get_col(): return KpdData._col + @staticmethod + def set_row_ext(row): + KpdData._row_ext = row + + @staticmethod + def get_row_ext(): + return KpdData._row_ext + + @staticmethod + def set_col_ext(col): + KpdData._col_ext = col + + @staticmethod + def get_col_ext(): + return KpdData._col_ext + @staticmethod def set_matrix(matrix): KpdData._matrix = matrix + @staticmethod + def set_matrix_ext(matrix): + KpdData._matrix_ext = matrix + + @staticmethod + def get_matrix_ext(): + return KpdData._matrix_ext + @staticmethod def get_matrix(): return KpdData._matrix @@ -108,4 +135,14 @@ class KpdData: def set_keyType(keyType): KpdData._keyType = keyType + @staticmethod + def get_keyType(): + return KpdData._keyType + + @staticmethod + def get_keyVal(key): + if key in KpdData._keyValueMap.keys(): + return KpdData._keyValueMap[key] + + return 0 diff --git a/tools/dct/data/Md1EintData.py b/tools/dct/data/Md1EintData.py index 8c695ff8fba9..e6819451d9ee 100755 --- a/tools/dct/data/Md1EintData.py +++ b/tools/dct/data/Md1EintData.py @@ -47,4 +47,4 @@ class Md1EintData(EintData): EintData.set_polarity(self, polarity) def get_polarity(self): - return EintData.get_polarity(self) + return EintData.get_polarity(self) \ No newline at end of file diff --git a/tools/dct/data/PmicData.py b/tools/dct/data/PmicData.py index 6bfd0574eb70..3797493b2d92 100755 --- a/tools/dct/data/PmicData.py +++ b/tools/dct/data/PmicData.py @@ -24,4 +24,4 @@ class PmicData: self.__nameList = name_list def get_nameList(self): - return self.__nameList + return self.__nameList \ No newline at end of file diff --git a/tools/dct/data/PowerData.py b/tools/dct/data/PowerData.py index 9ae0842efe67..b8ac9c9edc3a 100755 --- a/tools/dct/data/PowerData.py +++ b/tools/dct/data/PowerData.py @@ -13,4 +13,3 @@ class PowerData: - diff --git a/tools/dct/obj/ChipObj.py b/tools/dct/obj/ChipObj.py index 8196c6424a7b..828d02cb00ee 100755 --- a/tools/dct/obj/ChipObj.py +++ b/tools/dct/obj/ChipObj.py @@ -5,11 +5,13 @@ import os, sys import xml.dom.minidom from GpioObj import GpioObj +from GpioObj import GpioObj_whitney from EintObj import EintObj from AdcObj import AdcObj from ClkObj import ClkObj from ClkObj import ClkObj_Everest from ClkObj import ClkObj_Olympus +from ClkObj import ClkObj_Rushmore from I2cObj import I2cObj from PmicObj import PmicObj from Md1EintObj import Md1EintObj @@ -21,10 +23,10 @@ from utility.util import log from utility.util import LogLevel para_map = {'adc':['adc_h', 'adc_dtsi'],\ - 'clk':['clk_h', 'clk_dtsi'],\ + 'clk':['clk_buf_h', 'clk_buf_dtsi'],\ 'eint':['eint_h', 'eint_dtsi'],\ 'gpio':['gpio_usage_h', 'gpio_boot_h', 'gpio_dtsi', 'scp_gpio_usage_h', 'pinfunc_h', \ - 'pinctrl_h', 'gpio_usage_mapping_dtsi', 'gpio_usage_mapping_dtsi'],\ + 'pinctrl_h', 'gpio_usage_mapping_dtsi'],\ 'i2c':['i2c_h', 'i2c_dtsi'],\ 'md1_eint':['md1_eint_h', 'md1_eint_dtsi'],\ 'kpd':['kpd_h', 'kpd_dtsi'],\ @@ -58,6 +60,9 @@ class ChipObj: self.__objs[tag] = obj + def refresh_eintGpioMap(self): + self.__objs['eint'].set_gpioObj(self.__objs['gpio']) + def append_obj(self, tag, obj): if tag in self.__objs.keys(): return False @@ -131,11 +136,15 @@ class ChipObj: def gen_spec(self, paras): - if cmp(paras[0], 'cust_dtsi') == 0: - self.gen_custDtsi() - return True + # if cmp(paras[0], 'cust_dtsi') == 0: + # self.gen_custDtsi() + # return True for para in paras: + if cmp(para, 'cust_dtsi') == 0: + self.gen_custDtsi() + continue + idx = 0 name = '' if para.strip() != '': @@ -151,8 +160,8 @@ class ChipObj: obj.gen_spec(para) log(LogLevel.info, 'Generate %s file successfully!' %(para)) else: - log(LogLevel.error, '%s can not be recognized!' %(para)) - sys.exit(-1) + log(LogLevel.warn, '%s can not be recognized!' %(para)) + # sys.exit(-1) return True @@ -210,6 +219,7 @@ class Olympus(ChipObj): def generate(self, paras): return ChipObj.generate(self, paras) + class KiboPlus(ChipObj): def __init__(self, dws_path, gen_path): ChipObj.__init__(self, dws_path, gen_path) @@ -226,5 +236,34 @@ class KiboPlus(ChipObj): return ChipObj.generate(self, paras) +class Rushmore(ChipObj): + def __init__(self, dws_path, gen_path): + ChipObj.__init__(self, dws_path, gen_path) + + def init_objs(self): + ChipObj.init_objs(self) + ChipObj.replace_obj(self, 'clk', ClkObj_Rushmore()) + + def parse(self): + return ChipObj.parse(self) + + def generate(self, paras): + return ChipObj.generate(self, paras) + +class Whitney(ChipObj): + def __init__(self, dws_path, gen_path): + ChipObj.__init__(self, dws_path, gen_path) + + def init_objs(self): + ChipObj.init_objs(self) + ChipObj.replace_obj(self, 'gpio', GpioObj_whitney()) + ChipObj.refresh_eintGpioMap(self) + + def parse(self): + log(LogLevel.info, 'Whitney parse') + return ChipObj.parse(self) + + def generate(self, paras): + return ChipObj.generate(self, paras) diff --git a/tools/dct/obj/ClkObj.py b/tools/dct/obj/ClkObj.py index 69143cad9a6a..7324017ad099 100755 --- a/tools/dct/obj/ClkObj.py +++ b/tools/dct/obj/ClkObj.py @@ -34,6 +34,9 @@ class ClkObj(ModuleObj): key = re.findall(r'\D+', node.nodeName)[0].upper() + self.__suffix + '%s' %(re.findall(r'\d+', node.nodeName)[0]) + if key not in ModuleObj.get_data(self): + continue; + data = ModuleObj.get_data(self)[key] if len(varNode): @@ -222,7 +225,9 @@ class ClkObj_Everest(ClkObj): gen_str += '''\n''' gen_str += '''&rf_clock_buffer_ctrl {\n''' - gen_str += '''\tmediatek,clkbuf-quantity = <%d>;\n''' %(ClkData._count) + gen_str += '''\tmediatek,clkbuf-quantity = <%d>;\n''' %(len(ModuleObj.get_data(self))-ClkData._count) + msg = 'rf clk buff count : %d' %(len(ModuleObj.get_data(self))-ClkData._count) + log(LogLevel.info, msg) gen_str += '''\tmediatek,clkbuf-config = <''' #sorted_list = sorted(ModuleObj.get_data(self).keys()) @@ -232,7 +237,7 @@ class ClkObj_Everest(ClkObj): if key.find(self.__rf) != -1: gen_str += '''%d ''' %(ClkData._varList.index(value.get_varName())) - gen_str.rstrip() + gen_str = gen_str.rstrip() gen_str += '''>;\n''' gen_str += '''\tmediatek,clkbuf-driving-current = <''' @@ -332,7 +337,105 @@ class ClkObj_Olympus(ClkObj_Everest): return gen_str +class ClkObj_Rushmore(ClkObj): + + def __init__(self): + ClkObj.__init__(self) + self.__suffix = '_BUF' + + def parse(self, node): + ClkObj.parse(self, node) + + def get_cfgInfo(self): + cp = ConfigParser.ConfigParser(allow_no_value=True) + cp.read(ModuleObj.get_figPath()) + + count = string.atoi(cp.get('CLK_BUF', 'CLK_BUF_COUNT')) + self.__count = count + + def read(self, node): + nodes = node.childNodes + for node in nodes: + if node.nodeType == xml.dom.Node.ELEMENT_NODE: + if node.nodeName == 'count': + continue + + varNode = node.getElementsByTagName('varName') + curNode = node.getElementsByTagName('current') + + key = re.findall(r'\D+', node.nodeName)[0].upper() + self.__suffix + '%s' %(re.findall(r'\d+', node.nodeName)[0]) + data = ClkData() + if len(varNode): + data.set_varName(varNode[0].childNodes[0].nodeValue) + + #if len(curNode): + #data.set_current(curNode[0].childNodes[0].nodeValue) + + ModuleObj.set_data(self, key, data) + + return True + + def fill_hFile(self): + gen_str = '''typedef enum {\n''' + gen_str += '''\tCLOCK_BUFFER_DISABLE,\n''' + gen_str += '''\tCLOCK_BUFFER_SW_CONTROL,\n''' + gen_str += '''\tCLOCK_BUFFER_HW_CONTROL\n''' + gen_str += '''} MTK_CLK_BUF_STATUS;\n''' + gen_str += '''\n''' + gen_str += '''typedef enum {\n''' + gen_str += '''\tCLK_BUF_DRIVING_CURR_AUTO_K = -1,\n''' + gen_str += '''\tCLK_BUF_DRIVING_CURR_0,\n''' + gen_str += '''\tCLK_BUF_DRIVING_CURR_1,\n''' + gen_str += '''\tCLK_BUF_DRIVING_CURR_2,\n''' + gen_str += '''\tCLK_BUF_DRIVING_CURR_3\n''' + gen_str += '''} MTK_CLK_BUF_DRIVING_CURR;\n''' + gen_str += '''\n''' + + + for key in sorted_key(ModuleObj.get_data(self).keys()): + value = ModuleObj.get_data(self)[key] + if key.find('RF') != -1: + gen_str += '''#define %s_STATUS\t\t\t\tCLOCK_BUFFER_%s\n''' %(key[3:], value.get_varName()) + + gen_str += '''\n''' + + for key in sorted_key(ModuleObj.get_data(self).keys()): + if key.find('RF') != -1: + continue + value = ModuleObj.get_data(self)[key] + idx = value.get_curList().index(value.get_current()) + if cmp(value.get_curList()[0], DEFAULT_AUTOK) == 0: + idx -= 1 + + if idx >= 0: + gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_%d\n''' %(key, idx) + else: + gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_AUTO_K\n''' %(key) + + gen_str += '''\n''' + + return gen_str + + def fill_dtsiFile(self): + gen_str = '''&rf_clock_buffer_ctrl {\n''' + gen_str += '''\tmediatek,clkbuf-quantity = <%d>;\n''' %(self.__count) + gen_str += '''\tmediatek,clkbuf-config = <''' + + #sorted_list = sorted(ModuleObj.get_data(self).keys()) + for key in sorted_key(ModuleObj.get_data(self).keys()): + if key.find('RF') == -1: + continue + value = ModuleObj.get_data(self)[key] + gen_str += '''%d ''' %(ClkData._varList.index(value.get_varName())) + + gen_str = gen_str.rstrip() + gen_str += '''>;\n''' + + gen_str += '''\tstatus = \"okay\";\n''' + gen_str += '''};\n''' + + return gen_str diff --git a/tools/dct/obj/EintObj.py b/tools/dct/obj/EintObj.py index 52213b0f9188..5f069dc9f3eb 100755 --- a/tools/dct/obj/EintObj.py +++ b/tools/dct/obj/EintObj.py @@ -22,6 +22,10 @@ class EintObj(ModuleObj): ModuleObj.__init__(self, 'cust_eint.h', 'cust_eint.dtsi') self.__gpio_obj = gpio_obj self.__count = 0 + self.__map_count = 0 + + def set_gpioObj(self, gpio_obj): + self.__gpio_obj = gpio_obj def read(self, node): nodes = node.childNodes @@ -85,6 +89,9 @@ class EintObj(ModuleObj): EintData.set_mapTable(map) EintData.set_modeMap(mode_map) + if cp.has_option('EINT', 'EINT_MAP_COUNT'): + self.__map_count = string.atoi(cp.get('EINT', 'EINT_MAP_COUNT')) + if cp.has_option('EINT', 'INTERNAL_EINT'): info = cp.get('EINT', 'INTERNAL_EINT') str_list = info.split(':') @@ -170,15 +177,14 @@ class EintObj(ModuleObj): def fill_mappingTable(self): gen_str = '''&eintc {\n''' count = 0 - for i in range(0, string.atoi(self.__count)): - if EintData.get_gpioNum(i) >= 0: - count += 1 - - #for value in EintData.get_mapTable().values(): - #if value != -1: - #count += 1 - count += len(EintData._int_eint) + if self.__map_count == 0: + for i in range(0, string.atoi(self.__count)): + if EintData.get_gpioNum(i) >= 0: + count += 1 + count += len(EintData._int_eint) + else: + count = self.__map_count gen_str += '''\tmediatek,mapping_table_entry = <%d>;\n''' %(count) gen_str += '''\t\t\t/* */\n''' @@ -221,8 +227,8 @@ class EintObj(ModuleObj): def refGpio(self, eint_num, flag): gpio_vec= [] - gpio_num = EintData.get_gpioNum(string.atoi(eint_num)) + gpio_num = EintData.get_gpioNum(string.atoi(eint_num)) if gpio_num >= 0: gpio_vec.append(gpio_num) if flag: @@ -285,3 +291,5 @@ class EintObj(ModuleObj): gen_str += '''\n''' return gen_str + + diff --git a/tools/dct/obj/GpioObj.py b/tools/dct/obj/GpioObj.py index b306ad1363b3..219559382f2b 100755 --- a/tools/dct/obj/GpioObj.py +++ b/tools/dct/obj/GpioObj.py @@ -15,6 +15,8 @@ from ModuleObj import ModuleObj import ChipObj from utility.util import compare from utility.util import sorted_key +from utility.util import log +from utility.util import LogLevel class GpioObj(ModuleObj): def __init__(self): @@ -82,6 +84,9 @@ class GpioObj(ModuleObj): smtNode = node.getElementsByTagName('smt') iesNode = node.getElementsByTagName('ies') + num = string.atoi(node.nodeName[4:]) + if num >= len(ModuleObj.get_data(self)): + break data = ModuleObj.get_data(self)[node.nodeName] if len(eintNode): @@ -284,9 +289,10 @@ class GpioObj(ModuleObj): gen_str += '''//Configuration for %s\n''' %(key.upper()) mode_name = GpioData.get_modeName(key, value.get_defMode()) + val = '' if mode_name != '': flag = False - val = '' + #val = '' if mode_name.find('//') != -1: flag = True @@ -562,4 +568,20 @@ class GpioObj(ModuleObj): gen_str += '''};\n''' return gen_str +class GpioObj_whitney(GpioObj): + def __init__(self): + GpioObj.__init__(self) + + def parse(self, node): + log(LogLevel.info, 'GpioObj_whitney parse') + GpioObj.parse(self, node) + + def gen_files(self): + GpioObj.gen_files(self) + + def gen_spec(self, para): + GpioObj.gen_spec(self, para) + + def is_i2cPadPin(self, name): + return False diff --git a/tools/dct/obj/I2cObj.py b/tools/dct/obj/I2cObj.py index cc40f8f7e127..700670673ac1 100755 --- a/tools/dct/obj/I2cObj.py +++ b/tools/dct/obj/I2cObj.py @@ -17,6 +17,7 @@ class I2cObj(ModuleObj): def __init__(self): ModuleObj.__init__(self, 'cust_i2c.h', 'cust_i2c.dtsi') self.__busList = [] + self.__bBusEnable = True def get_cfgInfo(self): cp = ConfigParser.ConfigParser(allow_no_value=True) @@ -25,6 +26,11 @@ class I2cObj(ModuleObj): I2cData._i2c_count = string.atoi(cp.get('I2C', 'I2C_COUNT')) I2cData._channel_count = string.atoi(cp.get('I2C', 'CHANNEL_COUNT')) + if cp.has_option('Chip Type', 'I2C_BUS'): + flag = cp.get('Chip Type', 'I2C_BUS') + if flag == '0': + self.__bBusEnable = False + def read(self, node): nodes = node.childNodes for node in nodes: @@ -95,18 +101,22 @@ class I2cObj(ModuleObj): def fill_dtsiFile(self): gen_str = '' for i in range(0, I2cData._channel_count): + if i >= len(self.__busList): + break; gen_str += '''&i2c%d {\n''' %(i) gen_str += '''\t#address-cells = <1>;\n''' gen_str += '''\t#size-cells = <0>;\n''' - gen_str += '''\tclock-frequency = <%d>;\n''' %(string.atoi(self.__busList[i].get_speed()) * 1000) - temp_str = '' - if cmp(self.__busList[i].get_enable(), 'false') == 0: - temp_str = 'use-open-drain' - elif cmp(self.__busList[i].get_enable(), 'true') == 0: - temp_str = 'use-push-pull' - gen_str += '''\tmediatek,%s;\n''' %(temp_str) + if self.__bBusEnable: + gen_str += '''\tclock-frequency = <%d>;\n''' %(string.atoi(self.__busList[i].get_speed()) * 1000) + temp_str = '' + + if cmp(self.__busList[i].get_enable(), 'false') == 0: + temp_str = 'use-open-drain' + elif cmp(self.__busList[i].get_enable(), 'true') == 0: + temp_str = 'use-push-pull' + gen_str += '''\tmediatek,%s;\n''' %(temp_str) for key in sorted_key(ModuleObj.get_data(self).keys()): value = ModuleObj.get_data(self)[key] @@ -120,4 +130,4 @@ class I2cObj(ModuleObj): gen_str += '''};\n\n''' - return gen_str + return gen_str \ No newline at end of file diff --git a/tools/dct/obj/KpdObj.py b/tools/dct/obj/KpdObj.py index 356499834f8e..618a276cc327 100755 --- a/tools/dct/obj/KpdObj.py +++ b/tools/dct/obj/KpdObj.py @@ -27,6 +27,12 @@ class KpdObj(ModuleObj): KpdData._keyValueMap['NC'] = 0 + cp.read(ModuleObj.get_figPath()) + if cp.has_option('KEYPAD_EXTEND_TYPE', 'KEY_ROW'): + KpdData.set_row_ext(string.atoi(cp.get('KEYPAD_EXTEND_TYPE', 'KEY_ROW'))) + if cp.has_option('KEYPAD_EXTEND_TYPE', 'KEY_COLUMN'): + KpdData.set_col_ext(string.atoi(cp.get('KEYPAD_EXTEND_TYPE', 'KEY_COLUMN'))) + return True def read(self, node): @@ -55,6 +61,16 @@ class KpdObj(ModuleObj): KpdData._usedKeys.append(item) KpdData._usedKeys.append('POWER') + if node.nodeName == "keyMatrix_ext" and node.childNodes: + content = node.childNodes[0].nodeValue + content = content.replace('\t', '') + rows = content.split('''\n''') + matrix = [] + for row in rows: + for item in row.split(' '): + matrix.append(item) + KpdData.set_matrix_ext(matrix) + if node.nodeName == 'downloadKey': keys = node.childNodes[0].nodeValue KpdData.set_downloadKeys(keys.split(' ')) @@ -137,20 +153,35 @@ class KpdObj(ModuleObj): gen_str += '''\n''' gen_str += '''#define KPD_KEY_DEBOUNCE\t%d\n''' %(KpdData.get_pressTime()) gen_str += '''#define KPD_PWRKEY_MAP\tKEY_%s\n''' %(KpdData.get_utility()) - gen_str += '''#define MTK_PMIC_PWR_KEY\t%d\n''' %(KpdData.get_col() - 1) - gen_str += '''#define KPD_PMIC_RSTKEY_MAP\tKEY_%s\n''' %(KpdData.get_homeKey()) - gen_str += '''#define MTK_PMIC_RST_KEY\t\t%d\n''' %(2*KpdData.get_col() - 1) - gen_str += '''\n''' - gen_str += '''#define KPD_USE_EXTEND_TYPE\tKPD_NO\n''' + # do not gen this macro if the home key is null + if KpdData.get_homeKey() != '': + gen_str += '''#define KPD_PMIC_RSTKEY_MAP\tKEY_%s\n''' %(KpdData.get_homeKey()) + if cmp(KpdData.get_keyType(), 'EXTEND_TYPE') != 0: + gen_str += '''#define MTK_PMIC_PWR_KEY\t%d\n''' %(KpdData.get_col() - 1) + if KpdData.get_homeKey() != '': + gen_str += '''#define MTK_PMIC_RST_KEY\t\t%d\n''' %(2*KpdData.get_col() - 1) + gen_str += '''\n''' + gen_str += '''#define KPD_USE_EXTEND_TYPE\tKPD_NO\n''' + else: + gen_str += '''#define MTK_PMIC_PWR_KEY\t%d\n''' %(KpdData.get_col_ext() - 1) + if KpdData.get_keyType() != '': + gen_str += '''#define MTK_PMIC_RST_KEY\t\t%d\n''' %(2*KpdData.get_col_ext() - 1) + gen_str += '''\n''' + gen_str += '''#define KPD_USE_EXTEND_TYPE\tKPD_YES\n''' gen_str += '''\n''' gen_str += '''/* HW keycode [0 ~ 71] -> Linux keycode */\n''' gen_str += '''#define KPD_INIT_KEYMAP()\t\\\n''' gen_str += '''{\t\\\n''' - for key in KpdData.get_matrix(): - if cmp(key, 'NC') != 0: - gen_str += '''\t[%d] = KEY_%s,\t\\\n''' %(KpdData.get_matrix().index(key), key) + if KpdData.get_keyType() == 'NORMAL_TYPE': + for key in KpdData.get_matrix(): + if cmp(key, 'NC') != 0: + gen_str += '''\t[%d] = KEY_%s,\t\\\n''' %(KpdData.get_matrix().index(key), key) + else: + for key in KpdData.get_matrix_ext(): + if cmp(key, 'NC') != 0: + gen_str += '''\t[%d] = KEY_%s,\t\\\n''' %(KpdData.get_matrix_ext().index(key), key) gen_str += '''}\n''' gen_str += '''\n''' @@ -184,29 +215,55 @@ class KpdObj(ModuleObj): return gen_str def get_matrixIdx(self, value): - if cmp(value, 'POWER') == 0: - return KpdData.get_col() - 1 - elif cmp(value, KpdData.get_homeKey()) == 0: - return 2 * KpdData.get_col() - 1 - else: - return KpdData.get_matrix().index(value) - + if KpdData.get_keyType() == 'NORMAL_TYPE': + if cmp(value, 'POWER') == 0: + return KpdData.get_col() - 1 + elif cmp(value, KpdData.get_homeKey()) == 0: + return 2 * KpdData.get_col() - 1 + else: + return KpdData.get_matrix().index(value) + elif KpdData.get_keyType() == 'EXTEND_TYPE': + if cmp(value, 'POWER') == 0: + return KpdData.get_col_ext() - 1 + elif cmp(value, KpdData.get_homeKey()) == 0: + return 2 * KpdData.get_col_ext() - 1 + else: + return KpdData.get_matrix_ext().index(value) def fill_dtsiFile(self): gen_str = '''&keypad {\n''' gen_str += '''\tmediatek,kpd-key-debounce = <%d>;\n''' %(KpdData.get_pressTime()) gen_str += '''\tmediatek,kpd-sw-pwrkey = <%d>;\n''' %(KpdData._keyValueMap[KpdData.get_utility()]) - gen_str += '''\tmediatek,kpd-hw-pwrkey = <%d>;\n''' %(KpdData.get_col()-1) - gen_str += '''\tmediatek,kpd-sw-rstkey = <%d>;\n''' %(KpdData._keyValueMap[KpdData.get_homeKey()]) - gen_str += '''\tmediatek,kpd-hw-rstkey = <%d>;\n''' %(2*KpdData.get_col() - 1) - gen_str += '''\tmediatek,kpd-use-extend-type = <0>;\n''' + if KpdData.get_keyType() == 'NORMAL_TYPE': + gen_str += '''\tmediatek,kpd-hw-pwrkey = <%d>;\n''' %(KpdData.get_col()-1) + else: + gen_str += '''\tmediatek,kpd-hw-pwrkey = <%d>;\n''' %(KpdData.get_col_ext()-1) + + #gen_str += '''\tmediatek,kpd-sw-rstkey = <%d>;\n''' %(KpdData._keyValueMap[KpdData.get_homeKey()]) + if KpdData.get_homeKey() != '': + gen_str += '''\tmediatek,kpd-sw-rstkey = <%d>;\n''' %(KpdData.get_keyVal(KpdData.get_homeKey())) + if KpdData.get_keyType() == 'NORMAL_TYPE': + if KpdData.get_homeKey() != '': + gen_str += '''\tmediatek,kpd-hw-rstkey = <%d>;\n''' %(2*KpdData.get_col() - 1) + gen_str += '''\tmediatek,kpd-use-extend-type = <0>;\n''' + else: + if KpdData.get_homeKey() != '': + gen_str += '''\tmediatek,kpd-hw-rstkey = <%d>;\n''' %(2*KpdData.get_col_ext() - 1) + gen_str += '''\tmediatek,kpd-use-extend-type = <1>;\n''' + + #gen_str += '''\tmediatek,kpd-use-extend-type = <0>;\n''' gen_str += '''\t/*HW Keycode [0~%d] -> Linux Keycode*/\n''' %(KpdData.get_row() * KpdData.get_col() - 1) gen_str += '''\tmediatek,kpd-hw-map-num = <%d>;\n''' %(KpdData.get_row() * KpdData.get_col()) gen_str += '''\tmediatek,kpd-hw-init-map = <''' - for key in KpdData.get_matrix(): - idx = KpdData._keyValueMap[key] - gen_str += '''%d ''' %(idx) + if KpdData.get_keyType() == 'NORMAL_TYPE': + for key in KpdData.get_matrix(): + idx = KpdData._keyValueMap[key] + gen_str += '''%d ''' %(idx) + else: + for key in KpdData.get_matrix_ext(): + idx = KpdData._keyValueMap[key] + gen_str += '''%d ''' %(idx) gen_str.rstrip() gen_str += '''>;\n''' @@ -231,3 +288,4 @@ class KpdObj(ModuleObj): + diff --git a/tools/dct/obj/Md1EintObj.py b/tools/dct/obj/Md1EintObj.py index f76c0636ceef..53cdc22f4bc9 100755 --- a/tools/dct/obj/Md1EintObj.py +++ b/tools/dct/obj/Md1EintObj.py @@ -15,16 +15,26 @@ class Md1EintObj(ModuleObj): def __init__(self): ModuleObj.__init__(self, 'cust_eint_md1.h', 'cust_md1_eint.dtsi') self.__srcPin = {} + self.__bSrcPinEnable = True def get_cfgInfo(self): # ConfigParser accept ":" and "=", so SRC_PIN will be treated specially cp = ConfigParser.ConfigParser(allow_no_value=True) cp.read(ModuleObj.get_figPath()) - for option in cp.options('SRC_PIN'): - value = cp.get('SRC_PIN', option) - value = value[1:] - temp = value.split('=') - self.__srcPin[temp[0]] = temp[1] + + if cp.has_option('Chip Type', 'MD1_EINT_SRC_PIN'): + flag = cp.get('Chip Type', 'MD1_EINT_SRC_PIN') + if flag == '0': + self.__bSrcPinEnable = False + + if(self.__bSrcPinEnable): + for option in cp.options('SRC_PIN'): + value = cp.get('SRC_PIN', option) + value = value[1:] + temp = value.split('=') + self.__srcPin[temp[0]] = temp[1] + else: + self.__srcPin[''] = '-1' def read(self, node): nodes = node.childNodes @@ -57,10 +67,10 @@ class Md1EintObj(ModuleObj): data.set_debounceEnable(deeNode[0].childNodes[0].nodeValue) if len(dedNode): data.set_dedicatedEn(dedNode[0].childNodes[0].nodeValue) - if len(srcNode): + if len(srcNode) and len(srcNode[0].childNodes): data.set_srcPin(srcNode[0].childNodes[0].nodeValue) - if len(sktNode): - data.set_socketType(sktNode[0].childNodes[0].nodeValue)\ + if len(sktNode) and len(sktNode[0].childNodes): + data.set_socketType(sktNode[0].childNodes[0].nodeValue) ModuleObj.set_data(self, node.nodeName, data) except: @@ -84,9 +94,10 @@ class Md1EintObj(ModuleObj): gen_str += '''\n''' - for (key, value) in self.__srcPin.items(): - gen_str += '''#define %s\t\t%s\n''' %(key, value) - gen_str += '''\n''' + if self.__bSrcPinEnable: + for (key, value) in self.__srcPin.items(): + gen_str += '''#define %s\t\t%s\n''' %(key, value) + gen_str += '''\n''' gen_str += '''#define CUST_EINT_POLARITY_LOW\t\t0\n''' gen_str += '''#define CUST_EINT_POLARITY_HIGH\t\t1\n''' @@ -110,7 +121,8 @@ class Md1EintObj(ModuleObj): gen_str += '''#define CUST_EINT_MD1_%s_SENSITIVE\t\tCUST_EINT_MD_%s_SENSITIVE\n''' %(num, value.get_sensitiveLevel().upper()) gen_str += '''#define CUST_EINT_MD1_%s_DEBOUNCE_EN\t\tCUST_EINT_DEBOUNCE_%s\n''' %(num, value.get_debounceEnable().upper()) gen_str += '''#define CUST_EINT_MD1_%s_DEDICATED_EN\t\t%s\n''' %(num, int(value.get_dedicatedEn())) - gen_str += '''#define CUST_EINT_MD1_%s_SRCPIN\t\t\t%s\n''' %(num, value.get_srcPin()) + if self.__bSrcPinEnable: + gen_str += '''#define CUST_EINT_MD1_%s_SRCPIN\t\t\t%s\n''' %(num, value.get_srcPin()) gen_str += '''\n''' gen_str += '''#define CUST_EINT_MD1_CNT\t\t\t%d\n''' %(count) @@ -145,7 +157,10 @@ class Md1EintObj(ModuleObj): gen_str += '''\t\tinterrupts = <%s %d>;\n''' %(num, type) gen_str += '''\t\tdebounce = <%s %d>;\n''' %(num, (string.atoi(value.get_debounceTime()))*1000) gen_str += '''\t\tdedicated = <%s %d>;\n''' %(num, int(value.get_dedicatedEn())) - gen_str += '''\t\tsrc_pin = <%s %s>;\n''' %(num, self.__srcPin[value.get_srcPin()]) + if self.__bSrcPinEnable: + gen_str += '''\t\tsrc_pin = <%s %s>;\n''' %(num, self.__srcPin[value.get_srcPin()]) + else: + gen_str += '''\t\tsrc_pin = <%s %s>;\n''' %(num, -1) gen_str += '''\t\tsockettype = <%s %s>;\n''' %(num, value.get_socketType()) gen_str += '''\t\tstatus = \"okay\";\n''' gen_str += '''\t};\n''' @@ -155,4 +170,3 @@ class Md1EintObj(ModuleObj): gen_str += '''};\n''' return gen_str - diff --git a/tools/dct/obj/PmicObj.py b/tools/dct/obj/PmicObj.py index 1dca45b7f17b..32b2533a92f8 100755 --- a/tools/dct/obj/PmicObj.py +++ b/tools/dct/obj/PmicObj.py @@ -24,6 +24,7 @@ class PmicObj(ModuleObj): self.__appCount = -1 self.__func = '' self.__paraList = [] + self.__headerList = [] def get_cfgInfo(self): @@ -32,6 +33,8 @@ class PmicObj(ModuleObj): PmicData._var_list = cp.options('APPLICATION') + if self.__chipName == '': + return #parse the pmic config file cmpPath = os.path.join(sys.path[0], 'config', self.__chipName + '.cmp') if not os.path.exists(cmpPath) or not os.path.isfile(cmpPath): @@ -57,6 +60,8 @@ class PmicObj(ModuleObj): for node in nodes: if node.nodeType == xml.dom.Node.ELEMENT_NODE: if cmp(node.nodeName, 'chip') == 0: + if len(node.childNodes) == 0: + break self.__chipName = node.childNodes[0].nodeValue continue if cmp(node.nodeName, 'count') == 0: @@ -198,4 +203,3 @@ class PmicObj(ModuleObj): gen_str += '''}\n''' return gen_str - diff --git a/tools/dct/obj/PowerObj.py b/tools/dct/obj/PowerObj.py index 561e47a161f8..c1fc060ef5cf 100755 --- a/tools/dct/obj/PowerObj.py +++ b/tools/dct/obj/PowerObj.py @@ -20,7 +20,7 @@ class PowerObj(ModuleObj): self.__list = {} def getCfgInfo(self): - cp = ConfigParser.ConfigParser() + cp = ConfigParser.ConfigParser(allow_no_value=True) cp.read(ModuleObj.get_figPath()) self.__list = cp.options('POWER') @@ -72,4 +72,3 @@ class PowerObj(ModuleObj): def fill_dtsiFile(self): return '' - diff --git a/tools/dct/utility/version.py b/tools/dct/utility/version.py index a3461f031922..39607aa8dd53 100755 --- a/tools/dct/utility/version.py +++ b/tools/dct/utility/version.py @@ -2,5 +2,5 @@ # -*- coding: utf-8 -*- VER_MAIN = '3' -VER_SUB = '4' -BUILD_SN = '160511' +VER_SUB = '5' +BUILD_SN = '160809' -- cgit v1.2.3