大家好:
我遇到了一个SPI设备驱动(Sitronix st7262)探测问题
在我们的硬件设计中,st7262(面板)通过 ecspi2 连接到 imx8mm
相关DTS
&ecspi2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2>;
fsl,spi-num-chipselects = <1>;
cs-gpios = <&gpio5 13 GPIO_AC
tiVE_LOW>;
dmas = <&sdma1 2 7 0>, <&sdma1 3 7 0>;
dma-names = "rx", "tx";
status = "okay";
panel@0 {
reg = <0>;
display-id = "840000";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lcd_module>;
compatible = "sitronix,st7262";
spi-max-frequency = <4000000>;
spi-bits-per-word = <8>;
spi-working-mode = <0>;
spi-cs-gpios = <&gpio5 13 GPIO_ACTIVE_HIGH>;
power-supply = <®_lcm_lcd_vdd>;
enable-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
backlight = <&backlight>;
pre-enable;
status = "okay";在驱动程序中(
panel-sitronix-st7262.c)
static int st7262_probe(struct spi_device *spi)
{
struct device *dev = &spi->dev;
struct device_node *np = dev->of_node;
struct st7262 *ctx;
struct device_node *timings = NULL;
int ret = 0;
dev_err(&spi->dev, "start st7262 probe\n");
ctx = devm_kzalloc(&spi->dev, sizeof(*ctx), GFP_KERNEL);
if (!ctx)
return -ENOMEM;
......
该驱动程序由 CONFIG_DRM_PANEL_SITRONIX_ST7262=m 使用 ko 构建
该驱动程序由 SharedBoardConfig.mk (i2c-imx.ko -->i2c-dev.ko -->spidev.ko ->spi-bitbang.ko ->spi-nxp-fspi.ko ->spi-imx .ko --> leds-lm3697.ko --> panel-sitronix-st7262.ko ...)
我
feq ($(IMX8MM_USES_GKI),true)
BOARD_VENDOR_RAMDISK_KERNEL_MODULES += \
....
$(KERNEL_OUT)/drivers/gpu/drm/panel/panel-sitronix-st7262.ko \
...
然而,当系统启动时,我可以看到 spi_imx 正在创建 spi0、spi1 总线,但我看不到驱动程序被探测(控制台应该打印“start st7262 probe”)
2.987023] spi_imx 30820000.spi: registered master spi0
[ 2.988160] spi spi0.0: spi_imx_setup: mode 0, 8 bpw, 4000000 hz
[ 2.988170] spi spi0.0: setup mode 0, 8 bits/w, 4000000 Hz max --> 0
[ 2.988415] spi_imx 30820000.spi: registered child spi0.0
[ 2.989033] spi_imx 30830000.spi: registered master spi1
[ 2.989828] spi spi1.0: spi_imx_setup: mode 0, 8 bpw, 4000000 hz
[ 2.989847] spi spi1.0: setup mode 0, 8 bits/w, 4000000 Hz max --> 0
[ 2.990357] spi_imx 30830000.spi: registered child spi1.0相同的文件和设置适用于我们之前的操作系统 (Android 12)
有人知道如何进一步调试吗?