вызов request_mem_region () завершается неудачно

Начальный адрес 0x4806E000 (базовый адрес UART4) уже присутствует в / proc / iomem с именем omap4-uart.

Как отключить регионы памяти, уже выделенные?

Изменить: Даже если request_mem_region успешно, консоль во время загрузки показывает это сообщение.

[    0.758514] Serial: 8250/16550 driver, 3 ports, IRQ sharing enabled
[    0.760040] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 104) is a OMAP UART0
[    0.760498] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 105) is a OMAP UART1
[    0.760955] omap_uart.2: ttyO2 at MMIO 0x48020000 (irq = 106) is a OMAP UART2
[    1.778808] console [ttyO2] enabled
[    1.782989] omap_uart omap_uart.3: [UART3]: failure [serial_omap_probe]: -22
[    1.790466] omap_uart: probe of omap_uart.3 failed with error -22

Я думаю, это означает, что ядро ​​все еще пытается настроить экземпляр uart4? Редактировать 2: во время программного сброса цикл while входит в бесконечный цикл

/* Pad Configuration */
    unsigned int pad_value = 0xFFF8FFF8;
    l = ioread32(pad_map);
    l &= pad_value;
    iowrite32(l,pad_map);
    printk(KERN_ALERT "pad configured\n");


    /* Software reset */

       printk(KERN_ALERT "reset check bit = %x\n",((serial_in(UART_OMAP_SYSC))));
       serial_out(UART_OMAP_SYSC,swreset);
       printk(KERN_ALERT "reset check bit = %x\n",((serial_in(UART_OMAP_SYSC))));
       readval = serial_in(UART_OMAP_SYSS);
       while((readval & 0x01)== 0);
       printk(KERN_ALERT "software reset completed\n");

Ответы на вопрос(2)

Ваш ответ на вопрос