![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动
文章平均质量分 72
苏西守护者
我希望大家都能把自己的感悟记录下来,分享出来,其实我这里做的很多别人一样做过,但是没有留下资料,非常遗憾,这样会拖累整个人类的进步的,毕竟后来者需要更快学习才能掌握更新的知识
展开
-
linux驱动的属性添加全过程
在linux原创 2014-10-06 14:12:10 · 1424 阅读 · 0 评论 -
android app修改属性改变gsensor
APP端: 打开额错了原创 2014-10-13 09:13:38 · 1183 阅读 · 0 评论 -
触摸屏A协议
for(i=0;i { coor_data = &point_data[3]; id = coor_data[0] & 0x0F; input_x = (s32)(coor_data[1+i*8]) | ((s32)(coor_data[2+i*8]) input_y = (s32)(coor_data[3+i原创 2014-10-14 18:33:16 · 1329 阅读 · 0 评论 -
对crashlog大小不一致的分析
在邮件的crashlog中,发现有这样一句crashlog与正常的crashlog不一致:11-30 09:50:51.819 216 216 D CRASHLOG: receive_inotify_events: Can't handle the event "20141130094844-uta_cat_csi_unsol_handler.c-1464.istp", no valid原创 2014-12-04 13:49:28 · 1140 阅读 · 0 评论 -
windows7 64bit 环境下的bat档
BAT脚本1adb wait-for-deviceadb rootadb wait-for-deviceadb remountadb wait-for-deviceadb push CGpuSet_tthelp /system/binadb push cpueater /system/xbinadb shell chmod 777 /system/bin原创 2014-12-15 11:04:34 · 786 阅读 · 0 评论 -
通过property修改usb属性
在UsbService.java中有个public class UsbService extends IUsbManager.Stub中有个onStart里启动了usbservice。在这个初始化usbservice中初始化了一个UsbDeviceManager同时register了一个receiver。在UsbDeviceManager中new了一个UsbHandler,在这个原创 2015-07-14 15:06:05 · 759 阅读 · 0 评论 -
在driver文件中添加sysfs节点供debug用
首先static ssize_t switch_glove_mode_show(struct device *dev, struct device_attribute *attr, char *buf){return sprintf(buf, "%d \n", ftxxxx_ts->glove_mode_eable);}static ssize_t switch原创 2015-11-16 10:18:13 · 1464 阅读 · 0 评论 -
FT系列touch---------suspend和resume的实现
在ftxxxx_ts.c中static void focal_suspend_work(struct work_struct *work){} static void focal_resume_work(struct work_struct *work){}然后在probe函数中INIT_WORK(&ftxxxx_ts->suspend_work,原创 2016-01-18 16:35:18 · 733 阅读 · 0 评论 -
FT系列touch----dtsi里的gpio 属性
在/kernel/Documentation/devicetree/bindings/interrupt-controller/interrupts.txtSpecifying interrupt information for devices============================================1) Interrupt client node转载 2016-01-19 09:43:39 · 1729 阅读 · 0 评论 -
ZE550kl的分区表
root@ASUS_Z00L_63:/dev/block/platform/soc.0/7824900.sdhci/by-name # lsADFAPDDDRabootabootbakabootdebugasdfasusfwasusgptasusgpt1asusgpt2asuskeyasuskey2asuskey3asuskey4as原创 2016-01-19 18:28:06 · 719 阅读 · 0 评论 -
qcom linux kernel 如何控制i2c的gpio
diff --git a/arch/arm/boot/dts/qcom/msm8916-mtp-ze550kl.dtsi b/arch/arm/boot/dts/qcom/msm8916-mtp-ze550kl.dtsiindex 51cd905..1790720 100644--- a/arch/arm/boot/dts/qcom/msm8916-mtp-ze550kl.dtsi++原创 2016-01-04 19:45:29 · 2089 阅读 · 0 评论 -
0电量导致关机的log
01-13 05:29:50.717 0 0 I healthd : battery l=0 v=3389 t=28.1 h=2 st=3 c=792 chg=01-13 05:29:50.746 1953 1953 I ActivityManager: START u0 {act=android.intent.action.ACTION_REQUEST_SHUTDOW原创 2016-01-22 11:18:56 · 1905 阅读 · 0 评论 -
touch的双击唤醒如何实现
现在很多手机具有双击唤醒屏幕功能,那么这个功能是如何实现的呢,在ft5x06这款touchscreen上的实现方式如下首先在touch的driver里会针对屏幕关闭时做特殊处理在static irqreturn_t ftxxxx_ts_interrupt(int irq, void *dev_id){u8 state; i2c_smbus_read_i2原创 2015-12-23 10:08:37 · 2988 阅读 · 0 评论 -
qcom 系列的i2c设备的power 在dtsi里定义的时候需要注意的
最近在driver里发现一个有点值得注意的地方在dtsi里定义了powervdd-supply = ;vcc_i2c-supply = ;但是在i2c device的driver里看到的却是pdata->vcc = devm_regulator_get(dev, "vcc_i2c");也就是说这边的vcc_i2c和dtis里的vcc_i2c-supply的差原创 2016-01-08 11:22:57 · 3508 阅读 · 0 评论 -
如何删除原生的app或者不让原生的app被编译进img
目前代码的原生app都是在vendor/app-prebuilt/目录下,搜索app名:grep -r “”即可,在android.mk里disable掉即可,但是某些原生的Google的apk光修改android.mk无效,因为在系统编译的时候会重新生成android.mk,所以保险的方法就是把apk所在的目录移除到外面的目录以保证不被build进去原创 2016-01-27 15:33:40 · 2317 阅读 · 0 评论 -
Bug系列-------皮套模式系统唤醒时间过长
最近遇到一个问题,在使用皮套的时候发现系统唤醒的速度偏慢,于是看log发现是iic和tp的ic通讯的时候出错了,于是需要追一下tp的resume和suspend以及各个mode首先调用suspend之后static void focal_suspend_work(struct work_struct *work){uint8_t buf[2] = {0};i原创 2016-01-29 16:15:25 · 676 阅读 · 0 评论 -
ft5x06的virtual key的实现
ft5x06 virtual key的实现首先#define FT5x06_KEY_HOME 172 //:#define FT5x06_KEY_BACK 158#define FT5x06_KEY_MENU 139 //这里看/frameworks/base/data/keyboards/Generic.kl里的各个按键的定义来然后static ssiz原创 2015-09-30 11:18:01 · 1017 阅读 · 0 评论 -
kernel boot的时候如何抓取dtsi
首先在aboot.c里的int boot_linux_from_mmc(void){struct boot_img_hdr *hdr = (void*) buf;#if DEVICE_TREEstruct dt_table *table;struct dt_entry dt_entry;unsigned dt_table_offset;uint32_t dt原创 2016-03-02 16:57:32 · 2233 阅读 · 0 评论 -
Ftxxxx系列------如何在makefile里定义c文件使用的宏
在ftxxxx_ts.c里有用到#ifdef ZE600KL_HDftxxxx_ts->x_max=720;ftxxxx_ts->y_max=1280;#endif这个ZE600KL_HD就是在makefile里定义的ifeq ($(TARGET_PRODUCT),Z00T)EXTRA_CFLAGS += -DZE551KL_FHDEXTRA_CFLAGS +=原创 2016-02-17 17:24:27 · 4494 阅读 · 0 评论 -
Ftxxxx系列------如何让屏幕依然可以滑动当手指按在virtual key旁边 的黑色部分的时候
最近有一条修改,觉得还算有意义,分享一下。本来当第一个手指点击在屏幕旁边的边框但是又不是虚拟按键的时候,屏幕是无法滑动的,但是现在要求改成可以滑动,修改如下static void ftxxxx_report_value(struct ftxxxx_ts_data *data){ struct ts_event *event = &data->event;int i;in原创 2016-02-05 09:44:29 · 746 阅读 · 0 评论 -
GTxxxx系列------找对应的config文件
一开始porting driver的时候都是简单粗暴的obj-y += ,但是这样是不规范的,应该要参照大家的做法obj-$(CONFIG_TOUCHSCREEN_GT9XX)+= gt9xx/但是这个CONFIG_TOUCHSCREEN_GT9XX定义在同目录的kconfig文件下config TOUCHSCREEN_GT9XXbool "Goodix t原创 2016-03-28 10:47:56 · 855 阅读 · 0 评论 -
如何确定本次编译的deconfig文件
之前我们知道deconfig里会定义某个config变量是y还是n,但是kernel里有很多deconfig文件,系统编译的时候到底用的是哪个呢,我们来看一下: 编译的命令如下:. build/envsetup.shlunch8. msm8937_evb-userdebug./mkimage msm8937_evb boot_image原创 2016-04-01 09:33:42 · 4433 阅读 · 0 评论 -
读取qualcom cpu 信息
root@ASUS_Z00L_93:/ # cat proc/cpuinfo Processor : AArch64 Processor rev 1 (aarch64)processor : 0processor : 1processor : 2processor : 3processor :原创 2016-04-01 11:44:59 · 1066 阅读 · 0 评论 -
GTxxxx系列------irq电压偏低
在proting GT系列touch的时候遇到了touch的irq gpio在system 醒着的时候电压只有1.2v,正常是1.8v,于是觉得很奇怪,通常的irq gpio被配置成input,但是到底是pull up还是down还是别的状态需要ic厂商来确认,没有办法参考别的touch的配置,厂商告诉我需要配置成float+input,于是就在lk里干了先定义好要用的irq#de原创 2016-03-10 18:42:57 · 503 阅读 · 0 评论 -
如何在lk中修改gpio的值
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.cindex e91759a..a5025c5 100644--- a/target/msm8952/target_display.c+++ b/target/msm8952/target_display.c@@ -57,6 +5原创 2016-02-25 17:21:27 · 3759 阅读 · 0 评论 -
如何看系统到底用了哪个dtsi
最近在搞驱动,发现被dtsi坑死了,研究了一下打算总结在这里防止以后被坑,当然自己去找是很辛苦的,但是有时候也是有必要的。之前我们用的dtsi是msm8916-mtp.dtsi,现在新加入了msm8916-pmi8916-mtp-evb.dtsi,而这两个在makefile里都被用了dtb-$(CONFIG_ARCH_MSM8916) += msm8916-rumi.dtb \ms原创 2016-02-25 18:02:07 · 12494 阅读 · 0 评论 -
GTxxxx系列------如何读取某个gpio的当前的状态
有时候需要去读取一个gpio的状态是啥,通常在system/bin目录下有个r文件 如果怀疑设置不对,就可以读取一下看看root@msm8937_evb:/system/bin # ./r 0x1041000 01041000: 00000001root@msm8937_evb:/system/bin # ./原创 2016-03-11 16:35:19 · 2942 阅读 · 0 评论 -
GT9xx_Driver系列------如果修改config
刚把driver加入kernel,发现touch的点击报点不准,厂商给出了解决方案:将附件里对应的cfg贴到GT9xx.h里的CTP_CFG_GROUP2即可,然后我们很傻很天真的把cfg放到了h文件中,结果发现还是那个样子,于是就得看看代码到底咋回事了哦 先看h文件里的#define CTP_CFG_GROUP2 {\ } 然后看这个在哪里用了在c文件原创 2016-02-29 10:13:59 · 5298 阅读 · 3 评论 -
GT9xxxxx系列------如何加入电源管理模块
最近看到Gt的driver有电源管理部分之前没有看到过,今天写一下struct goodix_ts_data {struct early_suspend early_suspend;};static int gtp_register_powermanger(struct goodix_ts_data *ts){ ts->early_suspen原创 2016-02-29 19:38:16 · 1543 阅读 · 0 评论 -
FTxxxx系列------selftest
难道自己搞了一次selftestmatthew@matthew:~/Videos/selftest$ adb push ./ZE550KL_Assy_0x61_20150610.ini /data/147 KB/s (11950 bytes in 0.079s)matthew@matthew:~/Videos/selftest$ adb rootadbd is already r原创 2016-03-14 15:15:04 · 2006 阅读 · 0 评论 -
FTxxxx系列------变量初始化buf失败
最近build一版32bit的img,发现编译的时候报错warning: the frame size of 1048 bytes is larger than 1024 bytes。 结果一看,原来的buf的初始化太粗暴了 //char buf[1023];这是最初的报错的地方char *buf = NULL;修改成这样 buf = kmal原创 2016-03-14 15:43:33 · 656 阅读 · 0 评论 -
FTxxxx系列------Unable to handle kernel NULL pointer
log如下: 5.930865] (CPU:0-pid:1:swapper/0)Unable to handle kernel NULL pointer dereference at virtual address 0000000c[ 5.940886] (CPU:0-pid:1:swapper/0)pgd = ffffffc001bd6000[ 5.946243] (CPU:0原创 2016-03-25 11:23:04 · 1972 阅读 · 0 评论 -
Gt9xxxx系列------如何确定config档
通常touch都是根据panel的型号来确定config文件的,Gt系列也一样,首先在static int goodix_ts_probe(struct i2c_client *client, const struct i2c_device_id *id){......ret = gtp_init_panel(ts);......}看看这个static s3原创 2016-03-01 10:30:09 · 2822 阅读 · 1 评论 -
GT9xx系列------从lk里传递gpio的value到kernel中
目前由于要针对多种屏幕,所以需要在lk里读取panel id信息传给kernel使用,也就是通过cmd line来做首先获取gpio信息lcd_id = (gpio_get(41)这里获取了当前gpio的电平状态sprintf(cmd_lcd_id, " LCD_ID=%d ", lcd_id);把值写到cmd_lcd_id里然后到Aboot.c (bootlo原创 2016-04-06 15:04:11 · 1488 阅读 · 0 评论 -
FTxxxx系列-----home按键失灵(kl没有加载正确)
今天遇到一个问题,home按键失灵通常这种情况都会看kl文件有没有加载对果然dumpsys input出来的结果是6: ft5x06_ts Classes: 0x00000015 Path: /dev/input/event1 Descriptor: a3d3ffc870334637db1e8bbfb999c8c212cbcbc9原创 2016-04-20 17:31:23 · 1332 阅读 · 0 评论 -
Ftxxxx系列--------kernel中传值
今天遇到一个蛋疼的问题,由于要兼容gt和ft的drier,那么在panel on的时候会调用ft的一个函数,但是如果tp是gt的话,这个函数没有被初始化,这样就会遇到空指针的问题,怎么办呢,很简单首先在mdss_dsi_panel.c里int focaltp ;然后if(focaltp==1){ ftxxxx_ts_resume();//resume touch原创 2016-04-20 11:02:25 · 735 阅读 · 0 评论 -
Goodix系列------input device的init
在probe函数里会有static s8 gtp_request_input_dev(struct goodix_ts_data *ts){ s8 ret = -1; u8 index = 0; ts->input_dev = input_allocate_device(); //先请求分配设备,初始化dev的lock ts->input_原创 2016-05-16 15:25:53 · 1375 阅读 · 0 评论 -
如何实现back 与 app_switch的解锁
其实很简单,上层对数据的要求是上报的相邻的两个点必须是back+app_switch或者app_switch+back,而我们的手指在按住两个按键的同时本来inputreader在上报的时候无法保证能符合上层的要求,也就是说会出现back+back的情况所以要处理一下bool TouchInputMapper::consumeRawTouches(nsecs_t when, uint32_t原创 2016-01-28 13:54:07 · 1387 阅读 · 0 评论 -
解决android系统唤醒时间偏长------healthd里的一些调用
目前定位到healthd的调用过程耗时太长,于是去看看power相关的一些东西healthd里一共调用了如下的节点获取数据openat(AT_FDCWD, "/sys/class/power_supply/battery/present", 1 *******openat(AT_FDCWD, "/sys/class/power_supply/battery/capacity",1原创 2016-05-31 18:12:31 · 4010 阅读 · 0 评论 -
Gt9xx系列------irq的部分
首先if (ts->use_irq==0){ ret = gtp_request_irq(ts); 然后ret = request_irq(ts->client->irq, goodix_ts_irq_handler, irq_table[ts->int_trigger_t原创 2016-07-12 15:52:51 · 1109 阅读 · 0 评论