diff options
-rw-r--r-- | conf/machine/quark.conf | 2 | ||||
-rw-r--r-- | recipes-bsp/grub-conf/files/grub.conf | 4 | ||||
-rw-r--r-- | recipes-kernel/linux/files/quark.cfg | 8 | ||||
-rw-r--r-- | recipes-kernel/linux/files/uart-1.0.patch | 44 | ||||
-rw-r--r-- | recipes-kernel/linux/linux-yocto-quark_3.8.bb | 1 |
5 files changed, 52 insertions, 7 deletions
diff --git a/conf/machine/quark.conf b/conf/machine/quark.conf index 476ffef..0b85b81 100644 --- a/conf/machine/quark.conf +++ b/conf/machine/quark.conf @@ -14,7 +14,7 @@ MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "" MACHINE_FEATURES = "efi usb pci" -SERIAL_CONSOLE = "115200 ttyQRK1" +SERIAL_CONSOLE = "115200 ttyS1" #SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1" EXTRA_IMAGEDEPENDS = "grub" diff --git a/recipes-bsp/grub-conf/files/grub.conf b/recipes-bsp/grub-conf/files/grub.conf index 803b9d8..7b403b8 100644 --- a/recipes-bsp/grub-conf/files/grub.conf +++ b/recipes-bsp/grub-conf/files/grub.conf @@ -4,9 +4,9 @@ timeout 5 color white/blue white/cyan title Quark X1000 kernel-SPI initrd-SPI IMR-On IO-APIC/HPET NoEMU - kernel --spi root=/dev/ram0 console=ttyQRK1,115200n8 earlycon=uart8250,mmio32,0x8010f000,115200n8 reboot=efi,warm apic=debug rw + kernel --spi root=/dev/ram0 console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x8010f000,115200n8 reboot=efi,warm apic=debug rw initrd --spi title Quark X1000 kernel-MassStorage iot-devkit on SD IMR-On IO-APIC/HPET NoEMU debug root (hd0,0) - kernel /bzImage root=/dev/mmcblk0p2 rootwait console=ttyQRK1,115200n8 earlycon=uart8250,mmio32,0x8010f000,115200n8 vmalloc=384M reboot=efi,warm apic=debug rw LABEL=boot debugshell=5 + kernel /bzImage root=/dev/mmcblk0p2 rootwait console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x8010f000,115200n8 vmalloc=384M reboot=efi,warm apic=debug rw LABEL=boot debugshell=5 diff --git a/recipes-kernel/linux/files/quark.cfg b/recipes-kernel/linux/files/quark.cfg index 2a4db12..fc4eeb9 100644 --- a/recipes-kernel/linux/files/quark.cfg +++ b/recipes-kernel/linux/files/quark.cfg @@ -1224,7 +1224,7 @@ CONFIG_SERIAL_8250=y # CONFIG_SERIAL_8250_PNP is not set CONFIG_SERIAL_8250_CONSOLE=y CONFIG_FIX_EARLYCON_MEM=y -CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_NR_UARTS=8 CONFIG_SERIAL_8250_RUNTIME_UARTS=2 CONFIG_SERIAL_8250_EXTENDED=y @@ -1247,8 +1247,8 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_ALTERA_JTAGUART is not set # CONFIG_SERIAL_ALTERA_UART is not set # CONFIG_SERIAL_IFX6X60 is not set -CONFIG_SERIAL_QUARK_UART=y -CONFIG_SERIAL_QUARK_UART_CONSOLE=y +CONFIG_SERIAL_QUARK_UART=m +CONFIG_SERIAL_QUARK_UART_CONSOLE=m # CONFIG_SERIAL_PCH_UART is not set # CONFIG_SERIAL_ARC is not set # CONFIG_TTY_PRINTK is not set @@ -2294,7 +2294,7 @@ CONFIG_DMADEVICES=y # # DMA Devices # -CONFIG_INTEL_MID_DMAC=y +CONFIG_INTEL_MID_DMAC=m # CONFIG_INTEL_IOATDMA is not set # CONFIG_TIMB_DMA is not set # CONFIG_PCH_DMA is not set diff --git a/recipes-kernel/linux/files/uart-1.0.patch b/recipes-kernel/linux/files/uart-1.0.patch new file mode 100644 index 0000000..06e8fdc --- /dev/null +++ b/recipes-kernel/linux/files/uart-1.0.patch @@ -0,0 +1,44 @@ +diff --git a/drivers/tty/serial/intel_quark_uart.c b/drivers/tty/serial/intel_quark_uart.c +index 5bb6a00..2297691 100755 +--- a/drivers/tty/serial/intel_quark_uart.c ++++ b/drivers/tty/serial/intel_quark_uart.c +@@ -769,6 +769,12 @@ static int handle_rx_to(struct x1000_port *priv) + return 0; + } while (rx_size == buf->size); + ++ if(!rx_size){ ++ quark_uart_hal_fifo_reset(priv, QUARK_UART_HAL_CLR_ALL_FIFO); ++ ret = quark_uart_hal_set_fifo(priv, QUARK_UART_HAL_DMA_MODE0, ++ QUARK_UART_HAL_FIFO_DIS, QUARK_UART_HAL_TRIGGER1); ++ return 0; ++ } + return QUARK_UART_HANDLED_RX_INT; + } + +@@ -1059,16 +1065,16 @@ static void quark_uart_work(struct work_struct *work) + return; + } + /* Configure TX */ +- priv->tx_conf.src_addr = sg_dma_address(priv->sg_tx_p); +- priv->tx_conf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; +- priv->tx_conf.src_maxburst = LNW_DMA_MSIZE_1; +- priv->tx_conf.dst_addr = QUARK_UART_AHB_REG_BASE + QUARK_UART_THR; /* Wants an AHB address */ +- priv->tx_conf.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; +- priv->tx_conf.dst_maxburst = LNW_DMA_MSIZE_4; +- priv->tx_conf.direction = DMA_MEM_TO_DEV; +- priv->tx_conf.device_fc = false; +- +- dmaengine_slave_config(priv->tx_chan, &priv->tx_conf); ++ priv->dmas_tx.dma_slave.src_addr = sg_dma_address(priv->sg_tx_p); ++ priv->dmas_tx.dma_slave.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; ++ priv->dmas_tx.dma_slave.src_maxburst = LNW_DMA_MSIZE_1; ++ priv->dmas_tx.dma_slave.dst_addr = QUARK_UART_AHB_REG_BASE + QUARK_UART_THR; /* Wants an AHB address */ ++ priv->dmas_tx.dma_slave.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE; ++ priv->dmas_tx.dma_slave.dst_maxburst = LNW_DMA_MSIZE_4; ++ priv->dmas_tx.dma_slave.direction = DMA_MEM_TO_DEV; ++ priv->dmas_tx.dma_slave.device_fc = false; ++ ++ dmaengine_slave_config(priv->tx_chan, &priv->dmas_tx.dma_slave); + desc = dmaengine_prep_slave_sg(priv->tx_chan, + priv->sg_tx_p, priv->nent, DMA_MEM_TO_DEV, + DMA_PREP_INTERRUPT | DMA_CTRL_ACK); diff --git a/recipes-kernel/linux/linux-yocto-quark_3.8.bb b/recipes-kernel/linux/linux-yocto-quark_3.8.bb index 8877cb1..c9bfd39 100644 --- a/recipes-kernel/linux/linux-yocto-quark_3.8.bb +++ b/recipes-kernel/linux/linux-yocto-quark_3.8.bb @@ -91,6 +91,7 @@ SRC_URI += "file://0019-Quark-SC-SPI-quark.patch" SRC_URI += "file://0020-Quark-IIO-quark.patch" SRC_URI += "file://0021-Quark-SPI-flash-quark.patch" SRC_URI += "file://0001-libtraceevent-Remove-hard-coded-include-to-usr-local.patch" +SRC_URI += "file://uart-1.0.patch" # list of kernel modules that will be auto-loaded for Quark X1000-based # platforms. |