Спидев читать EEPROM ID - PullRequest
0 голосов
/ 27 мая 2018

ОС: Linux Я пишу приложение spidev в пользовательском пространстве, чтобы прочитать идентификатор EEPROM.У меня есть запись в дереве устройств:

spi0: spi@ffda4000 {
    compatible = "snps,dw-apb-ssi";
    #address-cells = <1>;
    #size-cells = <0>;
    reg = <0xffda4000 0x100>;
    interrupt-parent = <&intc>;
    interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
    num-cs = <2>;
    cs-gpios = <&porta 7 GPIO_ACTIVE_HIGH>, <&porta 0 GPIO_ACTIVE_HIGH>;
    bus-num = <0>;
    tx-dma-channel = <&pdma 16>;
    rx-dma-channel = <&pdma 17>;
    clocks = <&spi_m_clk>;
    status = "disabled";
};

, а затем:

&spi0 {
    status = "okay";
    m25p10_spi@0 {
        compatible = "m25p10";
        reg = <0>;  /* chip select */
        spi-max-frequency = <20000000>;
        /* m25p,fast-read; */
        enable-dma = <0>;
    };
    spidev@0 {
        compatible = "rohm,dh2228fv";
        reg = <0>;  /* chip select */
        spi-max-frequency = <20000000>;
        enable-dma = <0>;
    };
};

Идея состоит в том, чтобы spidev находился в том же узле, что и m25p10, чтобы при открытии приложения из пользовательского пространства открывать "/dev/spidev0.0 ", на самом деле он разговаривает с m25p10.Но я не могу загрузить Linux.Что-то не так с этим подходом?

1 Ответ

0 голосов
/ 28 мая 2018

Это не будет работать.Одно устройство - одно определение в DT.

Кроме того, зачем вам нужно устройство spidev?У вас уже есть m25p10_spi, который должен отображаться как устройство MTD (что-то вроде /dev/mtd0), и не должно быть проблем с доступом к нему из пространства пользователя.

ОБНОВЛЕНИЕ:

Это выглядиткак OP хочет сохранить MTD и считывать уникальный идентификатор устройства с помощью команды RDID, которая не поддерживается текущим драйвером m25p10.

Я могу ошибаться, но для меня самым простым решением было бы расширить драйвер для создания sysfs запись с данными RDID, которые считываются во время исследования.

Некоторые ценные ресурсы:

...