一、快充
make
MTK_SWCHR_SUPPORT = yes
lk
MTK_PSC5005_SUPPORT := yes
config
CONFIG_USB_MTK_OTG=y //fan5405带otg功能
CONFIG_CHARGER_PSC5005=y //充电ic驱动?
CONFIG_MTK_SWCHR_SUPPORT=y
dts
//mt6739.dtsi
algorithm_name = "SwitchCharging";
max_charger_voltage = <6000000>; //default = 6500000
ac_charger_current = <2050000>;
#ifndef CONFIG_MTK_SWCHR_SUPPORT
mt6357_charger: mt6357_charger {
compatible = "mediatek,mt6357_charger";
};
#endif
//BIRD BEGIN
#ifdef CONFIG_CHARGER_PSC5005
&i2c1 {
psc005@6a {
status = "okay";
compatible = "prisemi,psc5005";
reg = <0x6a>;
};
};
#endif
//BIRD END
普冲
...
algorithm_name = "LinearCharging";
max_charger_voltage = <6500000>;
ac_charger_current = <800000>;
二、充电低温保护
/* battery temperature protection */
enable_min_charge_temperature; //用of_property_read_bool这个读是直接判断有没有定义
min_charge_temperature = <0>; //dts参数不能为负数
min_charge_temperature_plus_x_degree = <6>;
max_charge_temperature = <50>;
max_charge_temperature_minus_x_degree = <47>;
info->thermal.enable_min_charge_temperature = of_property_read_bool(np,"enable_min_charge_temperature"); //返回值是1
但只是充不进电,没有显示低温或高温不能充电图标,要加上宏 BAT_LOW_TEMP_PROTECT_ENABLE
//kernel-4.4/drivers/power/mediatek/charger/mtk_charger.c
#define BAT_LOW_TEMP_PROTECT_ENABLE
static void mtk_battery_notify_VBatTemp_check(struct charger_manager *info)
{
...
#ifdef BAT_LOW_TEMP_PROTECT_ENABLE
if (info->battery_temperature < info->thermal.min_charge_temperature) {
info->notify_code |= 0x0020;
chr_err("[BATTERY] bat_temp(%d) out of range(too low)\n",
info->battery_temperature);
}
#endif
}
//mtk_charging.h
#define HIGH_BATTERY_VOLTAGE_SUPPORT 高压
三、power键调试
powerkey接在pmic上,注册为中断
cat proc/interrupt
CPU0 CPU1 CPU2 CPU3
219: 133 125 67 132 mtk-eint 182 Level pmic-eint
CONFIG_MTK_PMIC_NEW_ARCH=y
CONFIG_MTK_PMIC_COMMON=y
CONFIG_MTK_PMIC_CHIP_MT6357=y
CONFIG_MTK_AUXADC_INTF=y
//kernel-4.4/drivers/misc/mediatek/pmic/mt6357/v1/pmic_irq.c
//按下
void pwrkey_int_handler(void)
{
IRQLOG("[pwrkey_int_handler] Press pwrkey %d\n",
pmic_get_register_value(PMIC_PWRKEY_DEB));
#if !defined(CONFIG_FPGA_EARLY_PORTING) && defined(CONFIG_KPD_PWRKEY_USE_PMIC)
kpd_pwrkey_pmic_handler(0x1);
#endif
}
//松开
void pwrkey_int_handler_r(void)
{
IRQLOG("[pwrkey_int_handler_r] Release pwrkey %d\n",
pmic_get_register_value(PMIC_PWRKEY_DEB));
#if !defined(CONFIG_FPGA_EARLY_PORTING) && defined(CONFIG_KPD_PWRKEY_USE_PMIC)
kpd_pwrkey_pmic_handler(0x0);
#endif
}
四、gpio 调试
节点
/sys/bus/platform/drivers/mediatek-pinctrl/1000b000.pinctrl
五、
2)外部PA接在内部PA SPK输出点;
在mt_soc_codec_mt63xx.c中Speaker_Amp_Change函数中进行外部PA的gpio控制就可以。
3)外部PA接在耳机左右声道。
1.在audio_custom_exp.h文件#define USING_EXTAMP_HP
2.在mt_soc_codec_mt63xx.c中ext_Speaker_Amp_Change函数中进行外部PA的gpio控制就可以:
- 查看CONFIG_OF宏是否定义
是:请在平台对应的dtsi文件上搜关键字extspkamp,MTK默认的GPIO是117,请改成贵司使用的GPIO口值即可。
否:请直接对GPIO_EXT_SPKAMP_EN_PIN定义成贵司现在连接外部PA的GPIO口
注意:CONFIG_MTK_SPEAKER这个宏,不定义才能走到Ext_Speaker_Amp_Change函数的打开GPIO口的分支。
脉冲数设置alps/kernel-4.4/sound/soc/mediatek/codec/mt6357/mtk-soc-codec-6357.c
#if defined( CONFIG_BIRD_EXT_SPEAKER_AMP_FIVE_PULSE ) //
AudDrv_GPIO_EXTAMP_Select(true, 5); //BIRD
#elif defined( CONFIG_BIRD_EXT_SPEAKER_AMP_FOUR_PULSE ) //
AudDrv_GPIO_EXTAMP_Select(true, 4); //4=AW8735
#else
AudDrv_GPIO_EXTAMP_Select(true, 3); //3=AW8736
#endif
/* msleep(SPK_WARM_UP_TIME); */
usleep_range(5 * 1000, 10 * 1000);
五、
. 获取 flash id:
硬件信息:通过这个节点可以知道当前flash的id,上层根据id找到对应的flash名字。
cat /sys/block/mmcblk0/device/cid
\kernel-4.4\drivers\mmc\core\Mmc.c
MMC_DEV_ATTR(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1]
编译命令:
make -j8 2>&1 | tee z_build.log