一、前言
在开发中,有时候已经定版了,但是想做多一路pwm来调节某种功能,这个时候需要用到GPIO模拟pwm。
二、dts编写
blacklight {
compatible = "gpio-backlight";
pinctrl-names = "default";
label = "BLACKLIGHT1";
gpio-sim = <&pio PB 4 GPIO_ACTIVE_HIGH>;
status = "Okay";
};
三、驱动编写
#include <linux/gpio.h>
#include <linux/of_gpio.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/err.h>
#include <linux/pwm.h>
#include <linux/slab.h>
#include <linux/clk.h>
// #include <linux/adc.h>
#include <linux/iio/iio.h>
#include <linux/iio/machine.h>
#include <linux/iio/driver.h>
#include <linux/iio/consumer.h>
#include <linux/delay.h>
#include <linux/time.h>
#include <linux/timer.h>
#include <linux/input.h>
#include <linux/interrupt.h>
// #include <linux/io.h>
#include <linux/of_platform.h>
#include <linux/of_device.h>
#include <linux/types.h>
#include <linux/ioport.h>
#include <asm/irq.h>
#include <linux/of_irq.h>
#include <linux/of_address.h>
#include <linux/pm_wakeirq.h>
#include <linux/reset.h>
struct gpio_blacklight_dev {
in