Raspbery pi не выполняет запись в память для инициализации функции alt0

#linux-kernel #raspberry-pi #linux-device-driver

#linux-ядро #raspberry-pi #linux-драйвер устройства

Вопрос:

Я пытаюсь написать драйвер raspy для вывода 4. при настройке функции alt0 raspy зависает, мне приходится перезапускать его снова.

 #define RPI_DQ_GPIO_PIN 4
#define FUN_ALT0_SET    0x4

ds18b20_gpio_function(RPI_DQ_GPIO_PIN, FUN_ALT0_SET);
  

и

 extern inline void ds18b20_gpio_function(u8 pin, u16 gpio_fun)
{
    u32 val;

    void __iomem *base_addr = (void __iomem *)(0xf2200000);

    u8 offset = (pin / 10) * 4;
    pin = (pin % 10) * 3;
    val =  gpio_fun << pin;

    printk("ds18b20_gpio_function : pin = %d, val = %x, base_address   offset = %xn", pin, val, base_addr   offset);

    write_to_reg(val, base_addr   offset);
}
  

и

 inline void write_to_reg(u32 b, volatile void __iomem *addr)
{
    printk(KERN_INFO "write_to_reg : address = %x, b = %ldn", addr, b);
    __raw_writel(b, addr);
    mb();
}
  

Я получил этот виртуальный адрес ioremap после dmesged драйвера gpio по умолчанию.
Как я могу это решить?
Любая помощь будет оценена.
Спасибо,

Комментарии:

1. А? Это область интересов pinctrl. Зачем вам нужно самостоятельно касаться регистров контроллера?

2. Я хотел бы изучить внутреннюю структуру потока кода. Так есть ли какой — нибудь способ сделать это … ???

3. у меня нет другого варианта. не могу ли я отключить драйвер по умолчанию и включить этот новый модуль в DT

4. Он едва ли будет работать нормально без установленного драйвера pinctrl.

5. почему я не могу записывать конфигурации в память …. ??? у него есть защита памяти … ??? не могли бы вы предложить мне альтернативный способ .., ?