Linux下USB模拟ps2鼠标驱动

本文深入探讨Linux内核中的PS/2鼠标驱动,主要关注如何通过`psmouse-reset`函数调用`ps2_command()`、`ps2_sendbyte()`和`serio_write()`与硬件交互。讲解了`i8042_create_aux_port`函数及`i8042_aux_write`在初始化过程中的作用,并指出在某些情况下,由于初始化错误导致驱动加载失败。为解决这个问题,建议在实模式下利用INT 15h中断进行鼠标初始化,如在`arch/i386/boot/setup.S`中添加相应代码。
摘要由CSDN通过智能技术生成

在linu-kernel/drivers/input/mouse/psmouse-base.c是ps2鼠标驱动的主体,如psmouse_reset、psmouse_connect等函数具体实现在此文件之中。

简单地,拿psmouse_reset为例,调用ps2_command()->ps2_sendbyte()->serio_write()来完成对硬件的操作。而serio_write()在已经指定。

static int __devinit i8042_create_aux_port(void)
{
 struct serio *serio;
 struct i8042_port *port = &i8042_ports[I8042_AUX_PORT_NO];

 serio = kzalloc(sizeof(struct serio), GFP_KERNEL);
 if (!serio)
  return -ENOMEM;

 serio->id.type  = SERIO_8042;
 serio->write  = i8042_aux_write;
 serio->open  = i8042_open;
 serio->close  = i8042_close;
 serio->start  = i8042_start;
 serio->stop  = i8042_stop;
 serio->port_data = port;
 serio->dev.parent = &i8042_platform_device->dev;
 strlcpy(serio->name, "i8042 Aux Port", sizeof(serio->na

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值