增加 SPI 设备驱动示例.
Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
parent
12048b9dd9
commit
c524f83562
|
@ -0,0 +1,14 @@
|
|||
obj-m:= \
|
||||
demospi.o
|
||||
|
||||
demoplatform-objs:= \
|
||||
demo_spi.o
|
||||
|
||||
EXTRA_CFLAGS += \
|
||||
-I$(PWD)
|
||||
|
||||
all:
|
||||
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
|
||||
|
||||
clean:
|
||||
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
|
|
@ -0,0 +1,68 @@
|
|||
#include <linux/spi/spi.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
struct demo_spi_private {
|
||||
struct regmap *regmap;
|
||||
};
|
||||
|
||||
static const struct regmap_config demo_regmap = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
};
|
||||
|
||||
static int demo_spi_probe(struct spi_device *spi)
|
||||
{
|
||||
struct demo_spi_private *demo_spi;
|
||||
int ret;
|
||||
|
||||
demo_spi = devm_kzalloc(&spi->dev, sizeof(struct demo_spi_private),
|
||||
GFP_KERNEL);
|
||||
if (demo_spi == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
spi->bits_per_word = 8;
|
||||
spi->mode = SPI_MODE_0;
|
||||
spi->max_speed_hz = 1000000;
|
||||
|
||||
demo_spi->regmap = devm_regmap_init_spi(spi, &demo_regmap);
|
||||
if (IS_ERR(demo_spi->regmap))
|
||||
return PTR_ERR(demo_spi->regmap);
|
||||
|
||||
spi_set_drvdata(spi, demo_spi);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int demo_spi_remove(struct spi_device *spi)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id demo_of_match[] = {
|
||||
{ .compatible = "spi,demo", },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, demo_of_match);
|
||||
|
||||
static const struct spi_device_id demo_id_table[] = {
|
||||
{ "spidemo", 0 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(spi, demo_id_table);
|
||||
|
||||
static struct spi_driver demo_spi_driver = {
|
||||
.driver = {
|
||||
.name = "demo_spi",
|
||||
.of_match_table = demo_of_match,
|
||||
},
|
||||
.id_table = demo_id_table,
|
||||
.probe = demo_spi_probe,
|
||||
.remove = demo_spi_remove,
|
||||
};
|
||||
|
||||
module_spi_driver(demo_spi_driver);
|
||||
|
||||
MODULE_AUTHOR("Rick Chan <cy187lion@sina.com>");
|
||||
MODULE_DESCRIPTION("SPI driver demo");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_VERSION("1.0.0");
|
Loading…
Reference in New Issue