aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOng Boon Leong <boon.leong.ong@intel.com>2014-07-11 03:08:12 +0800
committerBrendan Le Foll <brendan.le.foll@intel.com>2014-11-10 15:07:23 +0000
commitb498b8fba39d36cf6f44060c4fe37db026284a44 (patch)
tree09a71a4d293e5d48b20f6f7225d0d69f311e8c67
parent25be7b641e057f40727f09931972bcbf2f698b7c (diff)
downloadmeta-intel-quark-b498b8fba39d36cf6f44060c4fe37db026284a44.tar.gz
meta-intel-quark-b498b8fba39d36cf6f44060c4fe37db026284a44.tar.bz2
meta-intel-quark-b498b8fba39d36cf6f44060c4fe37db026284a44.zip
meta-quark-bsp: linux-yocto-quark: use 8250 driver as early serial
This patch enables 8250 UART as early serial driver. This patch is adopted from Quark SW release v1.0.2. Signed-off-by: Ong Boon Leong <boon.leong.ong@intel.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
-rw-r--r--conf/machine/quark.conf2
-rw-r--r--recipes-bsp/grub-conf/files/grub.conf4
-rw-r--r--recipes-kernel/linux/files/quark.cfg8
-rw-r--r--recipes-kernel/linux/files/uart-1.0.patch44
-rw-r--r--recipes-kernel/linux/linux-yocto-quark_3.8.bb1
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.