工具与软件:
大家好、团队成员:
我正在尝试编写带有一些 附加提示音的自定义内核字符驱动器蜂鸣器。
我已实施以下更改:
- 在器件树中将引脚定义为 GPIO1_10 (E18)
- 使用上述引脚定义节点并将状态设置为"oke"
- 使用将自定义字符驱动程序编写为 Linux 可加载内核模块(LKM)(位于"drivers/misc/tfs_beon.c")以访问同一 GPIO GPIO_Request API
AM62数据表:- https://www.variscite.com/wp-content/uploads/2023/01/VAR-SOM-AM62_Datasheet.pdf
arch/arm64/boot/dts/ti/k3-am625-var-som-symphony.dts
/ {
/* Buzzer Enable */
tfs_buzzer_enable_gpio: tfs-buzzer-enable-gpio {
label = "BuzzerEnable";
linux,default-trigger = "default-on";
gpios = <&main_gpio0 22 GPIO_ACTIVE_HIGH>;
status = "okay";
};
/* Buzzer Tone */
tfs_buzzer_tone_gpio: tfs-buzzer-tone-gpio {
label = "BuzzerTone";
linux,default-trigger = "default-on";
gpios = <&main_gpio1 10 GPIO_ACTIVE_HIGH>;
status = "okay";
};
};
main_pmx0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&display_pins_default>;
display_pins_default: display-default-pins {
pinctrl-single,pins = <
/* Buzzer Pins */
AM62X_IOPAD(0x0058, PIN_OUTPUT_PULLUP, 7) /* (R23) GPMC0_AD7.GPIO0_22 */
AM62X_IOPAD(0x01a0, PIN_OUTPUT_PULLUP, 7) /* (E18) MCASP0_AXR0.GPIO1_10 */
>;
};
};
驱动程序/MISC./TFS_BANGER.c
static int buzzer_gpio_init(void)
{
int ret = -1;
int gpio_num = 378;
ret = gpio_request(gpio_num, "BUZZER_GPIO");
if (ret) {
if (ret == -EPROBE_DEFER) {
pr_info("GPIO %d request deferred, retrying later\n", gpio_num);
} else {
pr_err("Failed to request GPIO %d for BUZZER_GPIO: %d\n", gpio_num, ret);
}
return ret;
} else {
gpio_direction_output(gpio_num, 1);
gpio_set_value(gpio_num, 1); // default buzzer is disabled
buzzer_dev->status = BUZZER_DISABLE;
}
return 0;
}
驱动程序错误 :

GPIO_request()返回-517对应于-EPROBE_DEFER的代码。 此错误代码表示 GPIO 请求被推迟、因为所需资源尚不可用
GPIO_Info
