[rk3288—Android6.0]按键控制分析

 

  /kernel/drivers/input/keyboard/rk_keys.c 

这个驱动程序使用的函数一览:

/*
 devm_input_allocate_device - allocate managed input device
 @dev: device owning the input device being created

 Returns prepared struct input_dev or %NULL.

 Managed input devices do not need to be explicitly unregistered or
 freed as it will be done automatically when owner device unbinds from
 its driver (or binding fails). Once managed input device is allocated,
 it is ready to be set up and registered in the same fashion as regular
 input device. There are no special devm_input_device_[un]register()
 variants, regular ones work with both managed and unmanaged devices,
 should you need them. In most cases however, managed input device need
 not be explicitly unregistered or freed.

 NOTE: the owner device is set up as parent of input device and users
 should not override it.
*/
/*devm_input_allocate_device  - 分配受管理的输入设备
  @dev:拥有正在创建的输入设备的设备
返回准备好的struct input_dev或%NULL。 托管输入设备不需要显式取消注册或释放,因为当所有者设备从其驱动程序解除绑定(或绑定失败)时,它将自动完成。 一旦分配了受管理的输入设备,就可以以与常规输入设备相同的方式进行设置和注册。 没有特殊的devm_input_device_ [un] register()变体,如果需要,常规的变体可以与托管和非托管设备一起使用。 但是,在大多数情况下,托管输入设备无需显式取消注册或释放。
  注意:所有者设备被设置为输入设备的父设备,用户不应覆盖它。
*/
struct input_dev *devm_input_allocate_device(struct device *dev)

//input_allocate_device  - 为新输入设备分配内存
struct input_dev *input_allocate_device(void)

根据设备树,匹配成功后调用  static int keys_probe(struct platform_device *pdev)

key_num = of_get_child_count(np);    获取设备树中key

of_get_child_count(np);
	 struct device_node *child;
	 int num = 0;
	 for_each_child_of_node(np, child)
		num++;


 

static int keys_probe(struct platform_device *pdev)
{
	struct device *dev = &pdev->dev;
	struct device_node *np = pdev->dev.of_node;
	struct rk_keys_drvdata *ddata = NULL;
	struct input_dev *input = NULL;
	int i, error = 0;
	int wakeup, key_num = 0;
	key_num = of_get_child_count(np);
	ddata = devm_kzalloc(dev, sizeof(struct rk_keys_drvdata) +
		     key_num * sizeof(struct rk_keys_button),
		     GFP_KERNEL);
	input = devm_input_allocate_device(dev);
	platform_set_drvdata(pdev, ddata);
		dev_set_drvdata(&pdev->dev, data);
			device_private_init(dev);
			dev->p->driver_data = data;
	dev_set_drvdata(&pdev->dev, ddata);	//这个感觉多余了
	
	ddata->nbuttons = key_num;
 	error = rk_keys_parse_dt(ddata, pdev);			
		for_each_child_of_node(node, child_node)	//遍历设备树的节点
	/* Enable auto repeat feature of Linux input subsystem */
  	if (ddata->rep)
  		__set_bit(EV_REP, input->evbit);		
	error = input_register_device(input);	//注册输入设备
	sinput_dev = input;
	
	for (i = 0; i < ddata->nbuttons; i++) {
		struct rk_keys_button *button = &ddata->button[i];
	
		if (button->code) {
			setup_timer(&button->timer,
					keys_timer, (unsigned long)button);
		}
	
		if (button->wakeup)
			wakeup = 1;
	
		input_set_capability(input, EV_KEY, button->code);// 将设备标记为能够处理某个事件
	}
		
	
	
	
	
	
	
}

未完

### 回答1: rk3288 android 6.固件是一款基于Rockchip RK3288芯片的Android 6.操作系统固件。该固件具有稳定性高、功能丰富、操作简便等特点,适用于各种智能设备的开发和应用。如果您需要使用该固件,请注意选择适合您设备的版本,并按照相关的安装步骤进行操作。同时,为了保证设备的安全和稳定性,请务必备份好重要数据,并遵守相关的使用规定。 ### 回答2: RK3288 Android 6.0固件是一种为RK3288芯片设计的操作系统,旨在提供更高效、稳定和安全的用户体验。这款固件在保持原版Android特点的同时,针对RK3288芯片进行了优化,充分利用了硬件性能和资源,提高了设备的响应能力和运行速度。以下是该固件的主要特点和优势: 1.更稳定的操作系统:RK3288 Android 6.0固件采用了最新的安卓系统6.0,加上对RK3288硬件平台的深度优化,使得这个固件的稳定性和兼容性得到了提升。 2.更流畅的用户体验:该固件针对RK3288芯片进行了深度优化,充分发挥了其强大的处理能力,从而提高了设备的响应速度和运行效率,让用户感受更加流畅的使用体验。 3.更丰富的应用支持:由于RK3288 Android 6.0固件是基于最新的安卓操作系统开发,因此可以支持更多的第三方应用程序和游戏,满足用户的不同需求和使用场景。 4.更安全的系统保护:该固件采用了安全性更强的编码技术,增强了系统的安全性和稳定性,为用户提供更加安全的使用环境。 总之,RK3288 Android 6.0固件是一款功能强大、性能优越、稳定性高、兼容性好,而且完全免费的操作系统。它可以带给用户更加流畅的使用体验、更加丰富的应用体验和更加安全的系统保护,是一款值得尝试和使用的操作系统。 ### 回答3: RK3288是一款由瑞芯微(Rockchip)公司生产的基于ARM Cortex-A17的处理器芯片,适用于智能电视、平板电脑、工业控制等领域。这款处理器拥有强大的性能和图像处理能力,在市场上受到了广泛的认可和应用。 Android 6.0Android移动操作系统的一个版本,也被称为Marshmallow。它是Android 5.0 Lollipop的后继版本,具有更多的功能、改进的安全性和更好的性能。作为一个主流的移动操作系统,Android 6.0提供了许多应用程序和工具,可以为用户提供更流畅、更高效、更安全的使用体验。 固件指针对某种硬件平台的操作系统及其所需的应用程序和驱动程序的一种集合。RK3288 Android 6.0固件,便是基于RK3288平台的Android 6.0操作系统以及与之配合的应用程序和驱动程序的一个集合。 在使用中,这种固件的优越性非常明显。它可以让基于RK3288处理器的设备能够运行更为高效的Android 6.0系统,同时, RK3288 Android 6.0固件还可以为这些设备提供更丰富的应用程序和功能。例如Android 6.0移植了Google Now on Tap的新功能,可以根据用户的输入智能推测出用户所需要的信息,减少用户的搜索次数,提高用户效率。 综上所述,RK3288 Android 6.0固件可谓是一款非常优秀的固件,它让基于RK3288处理器的设备平台能够拥有更为高效、便捷和安全的移动操作系统,提升了用户的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值