高通平台tp驱动(二)

上一篇大概讲了一下gsl680驱动的初始化部分,这部分是比较基础的,下面就开始第二部分:gsl680驱动的前期工作

首先会对一开始声明的input_dev结构体进行一个申请操作,但是这部分是与Input子系统相关的,目前先记住他,不分析他。知道是申请input子系统以及赋值即可。留到第三篇讲解

input_dev = input_allocate_device();
input_dev->name = client->name;
input_dev->phys = "I2C";
input_dev->dev.parent = &client->dev;
input_dev->id.bustype = BUS_I2C;

然后就是与供电相关的初始化操作,

regulator_get有2个参数,一个是device结构体,一个是id,到这里不难看出来他的目的就是获取对应设备树上的vdd属性(与本篇主体关联度不是特别大的一些api我不会写那么多,避免喧宾夺主),并且当vdd属性设置成功后,会设置他的值,这个GSL_VTG_MIN_UV、GSL_VTG_MAX_UV一般是由厂商在驱动头文件内设置好的,毕竟硬件也是他们提供的。

int rc;
err = gsl_ts_power_init(ts_data, true);
    ts_data->vdd = regulator_get(&ts_data->client->dev,"vdd");//ben.tang 20190912-1 vdd replace ic
    if (IS_ERR(ts_data->vdd)) {
        rc = PTR_ERR(ts_data->vdd);
        dev_err(&ts_data->client->dev,
        "Regulator get failed vdd rc=%d\n", rc);
         return rc;
    }
    if (regulator_count_voltages(ts_data->vdd) > 0)
        rc = regulator_set_voltage(ts_data->vdd,GSL_I2C_VTG_MIN_UV,GSL_I2C_VTG_MAX_UV);


ts_data->vcc_i2c = regulator_get(&ts_data->client->dev,"vcc_i2c");
    if (IS_ERR(ts_data->vcc_i2c)) {
        rc = PTR_ERR(ts_data->vcc_i2c);
        dev_err(&ts_data->client->dev,
        "Regulator get failed vcc-i2c rc=%d\n", rc);
        goto reg_vdd_set_vtg;
    }
    if (regulator_count_voltages(ts_data->vcc_i2c) > 0)
         rc = regulator_set_voltage(ts_data->vcc_i2c,GSL_I2C_VTG_MIN_UV,GSL_I2C_VTG_MAX_UV);

供电gpio初始化后,接下来就需要进行使能操作,对我们上面获取到的vdd及vcc_i2c对应的gpio进行使能

err = gsl_ts_power_on(ts_data, true);{
        rc = regulator_enable(ts_data->vdd);
        if (rc) {
                dev_err(&ts_data->client->dev,
                        "Regulator vdd enable failed rc=%d\n", rc);
                return rc;
        }
        else{

        }
        udelay(50);
        rc = regulator_enable(ts_data->vcc_i2c);
        if (rc) {
                dev_err(&ts_data->client->dev,
                        "Regulator vcc_i2c enable failed rc=%d\n", rc);
                regulator_disable(ts_data->vdd);
        }
        else{

        }
}

后面的就是input子系统的处理了,这里先不讲。那根据上面我们分析的点,我们的设备树又可以更新了

 gsl@40 {
            compatible = "silead,gsl-tp";
            silead,rst-gpio = <&tlmm 87 0x0>;
            silead,irq-gpio = <&tlmm 88 0x2002>;
            vdd-supply = <&pm6125_l21>;
            vcc_i2c-supply = <&pm6125_l9>;
 }

在第三篇我会分析在gsl680驱动内input子系统的操作以及中断队列这两个比较重要的点,如果有不对的地方欢迎大佬指出!

高通平台WLAN驱动开发文档是用于指导开发人员在高通平台上开发WLAN驱动程序的文档。WLAN驱动程序是一种软件,用于控制和管理无线局域网(WLAN)设备的操作和功能。 该开发文档提供了关于WLAN驱动程序开发的详细信息,包括驱动程序的架构、功能、接口和具体的开发要求。它描述了WLAN设备与操作系统之间的通信方式,例如硬件抽象层(HAL)和操作系统驱动程序接口(OEM-OSI)等。此外,文档还提供了关于WLAN驱动程序编程接口(API)和相关函数的说明,以及如何实现WLAN功能集、网络管理和安全性等方面的指导。 开发人员可以根据这份文档中提供的信息,了解如何在高通平台上开发WLAN驱动程序,并且根据自己的需求进行定制和优化。文档中会包含一些常见问题和解决方案,以帮助开发人员克服开发过程中可能遇到的挑战。 由于WLAN驱动程序的开发涉及到硬件、操作系统和网络协议等多个领域的知识,因此该开发文档对于有经验的开发人员来说尤其有价值。通过合理利用这份文档,开发人员可以更高效地开发和调试WLAN驱动程序,从而提高WLAN设备的性能和稳定性。 总之,高通平台WLAN驱动开发文档是一份指导开发人员在高通平台上开发WLAN驱动程序的详细文档,通过阅读并按照其中的指导进行开发,开发人员可以更好地理解和掌握WLAN驱动程序的开发流程和技术要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值