#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. почему я не могу записывать конфигурации в память …. ??? у него есть защита памяти … ??? не могли бы вы предложить мне альтернативный способ .., ?