Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »


Uartlite Driver


Introduction

The LogiCORE™ IP AXI Universal Asynchronous Receiver Transmitter (UART) Lite core provides between UART signals and the Advanced Microcontroller Bus Architecture (AMBA®) AXI interface and also provides a controller interface for asynchronous serial data transfer. This soft LogiCORE™ IP core is designed to interface with the AXI4-Lite protocol.

HW IP Features

  • AXI4-Lite interface for register access and data transfers
  • Full duplex
  • 16-character transmit and receive FIFOs
  • Configurable number of data bits (5-8) in a character
  • Configurable parity bit (odd or even or none)
  • Configurable baud rate

Features supported in driver

  • AXI4-Lite interface for register access and data transfers
  • Full duplex
  • 16-character transmit and receive FIFOs
  • Configurable number of data bits (5-8) in a character
  • Configurable parity bit (odd or even or none)
  • Configurable baud rate

Missing Features, Known Issues and Limitations

  • None

Kernel Configuration

To enable the uartlite driver in the linux kernel you either have to integrate it or build it as kernel module (.ko). You can enable it with:
make menuconfig
---> Device Drivers ---> Character devices ---> Serial drivers ---> Xilinx uartlite serial port support
Or you can do this in the .config file with either of the following lines:
# integrate into the kernel
CONFIG_SERIAL_UARTLITE=y
# build as loadable module
CONFIG_SERIAL_UARTLITE=m
When using newer releases, and when more than one UART Lite is required in the system, the user should also configure the following configuration item
to increase the number of UART ports in the driver. The driver statically allocates port data structures based on this configuration item. The port-number device tree
property is used for each UART Lite device node and is used to index into a port data structure in the driver. The port-number is similar to the alias number such that
it is affected by the total number of UARTs in the system (including PS UARTs).
CONFIG_SERIAL_UARTLITE_NR_UARTS=<total number of UARTs in the system>

Devicetree


Here's how the devicetree entry could look like.
        uartlite_0@42C00000 {
            compatible = "xlnx,axi-uartlite-1.02.a";
            reg = <0x42C00000 0x10000>;
            interrupt-parent = <&&gic>;
            interrupts = <0 59 4>;
            clock = <100000000>;
        };
 
        uartlite_1@42C10000 {
            compatible = "xlnx,axi-uartlite-1.02.a";
            reg = <0x42C10000 0x10000>;
            interrupt-parent = <&&gic>;
            interrupts = <0 59 4>;
            clock = <100000000>;
        };
Note how you can use the same interrupt, but for that to work you must OR the interrupts from the uarts to the interrupt-input.

Vivado Block Design


Here's how the axi_uartlite can be instantiated twice in a Vivado Block Design.


Instead of connecting the interrupt outputs directly to IRQ_F2P they can also be OR-ed with the Utility Reduced Logic to connect them to only one interrupt channel. The interrupt outputs (irq_0, irq_1) generate a small positive going pulse for the rising edge sensitive interrupt input (IRQ_F2P).

Test procedure

The driver source file in the linux kernel at drivers/tty/serial/uartlite.c limits the number of supported UARTs to 16. If you need to increase that number, adjust this define near the top of the file:
#define ULITE_NR_UARTS 16
After that you of course have to rebuild the kernel and deploy it to your Zynq device.

Using the uartlite in Linux

With the FPGA binary loaded, the updated devicetree and updated kernel you should see one or more /dev/ttyULx devices.
Beware that linux puts all uarts in Canonical Mode, something you might not want in an embedded system. Chances are you want to use Non-Canonical or Raw Mode. Also don't use fopen / fprintf / fputs / etc. if you want raw access, use open / close / read / write instead.

$echo 123456789 > /dev/ttyUL0


Expected Output

U-Boot-PetaLinux> booti 0x80000 - 9x 0x7000000
## Flattened Device Tree blob at 07000000
   Booting using the fdt blob at 0x7000000
   Loading Device Tree to 0000000007ff7000, end 0000000007fff5fa ... OK
Starting kernel ...
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.0.0+ (anuragku@xhdl3763) (gcc version 4.8.2 20131014 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10) ) #76 SMP Tue Jan 12 20:52:18 IST 2016
[    0.000000] CPU: AArch64 Processor [410fd034] revision 4
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] alternatives: enabling workaround for ARM erratum 845719
[    0.000000] Early serial console at MMIO 0xff000000 (options '115200n8')
[    0.000000] bootconsole [uart0] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.0 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] PERCPU: Embedded 15 pages/cpu @ffffffc07ff93000 s24448 r8192 d28800 u61440
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 517120
[    0.000000] Kernel command line: earlycon=cdns,mmio,0xFF000000,115200n8
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] software IO TLB [mem 0x79e00000-0x7de00000] (64MB) mapped at [ffffffc079e00000-ffffffc07ddfffff]
[    0.000000] Memory: 1959376K/2097152K available (7080K kernel code, 572K rwdata, 2688K rodata, 28708K init, 488K bss, 137776K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vmalloc : 0xffffff8000000000 - 0xffffffbdffff0000   (   247 GB)
[    0.000000]     vmemmap : 0xffffffbe00000000 - 0xffffffbfc0000000   (     7 GB maximum)
[    0.000000]               0xffffffbe00000000 - 0xffffffbe01c00000   (    28 MB actual)
[    0.000000]     fixed   : 0xffffffbffabfe000 - 0xffffffbffac00000   (     8 KB)
[    0.000000]     PCI I/O : 0xffffffbffae00000 - 0xffffffbffbe00000   (    16 MB)
[    0.000000]     modules : 0xffffffbffc000000 - 0xffffffc000000000   (    64 MB)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc080000000   (  2048 MB)
[    0.000000]       .init : 0xffffffc000a0d000 - 0xffffffc002616000   ( 28708 KB)
[    0.000000]       .text : 0xffffffc000080000 - 0xffffffc000a0c2c4   (  9777 KB)
[    0.000000]       .data : 0xffffffc00261a000 - 0xffffffc0026a9000   (   572 KB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS:64 nr_irqs:64 0
[    0.000000] Architected cp15 timer(s) running at 100.00MHz (phys).
[    0.000004] sched_clock: 56 bits at 100MHz, resolution 10ns, wraps every 2748779069440ns
[    0.019047] console [hvc0] enabled
[    0.141119] bootconsole [uart0] disabled
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.0.0+ (anuragku@xhdl3763) (gcc version 4.8.2 20131014 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10) ) #76 SMP Tue Jan 12 20:52:18 IST 2016
[    0.000000] CPU: AArch64 Processor [410fd034] revision 4
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] alternatives: enabling workaround for ARM erratum 845719
[    0.000000] Early serial console at MMIO 0xff000000 (options '115200n8')
[    0.000000] bootconsole [uart0] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.0 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] PERCPU: Embedded 15 pages/cpu @ffffffc07ff93000 s24448 r8192 d28800 u61440
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 517120
[    0.000000] Kernel command line: earlycon=cdns,mmio,0xFF000000,115200n8
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] software IO TLB [mem 0x79e00000-0x7de00000] (64MB) mapped at [ffffffc079e00000-ffffffc07ddfffff]
[    0.000000] Memory: 1959376K/2097152K available (7080K kernel code, 572K rwdata, 2688K rodata, 28708K init, 488K bss, 137776K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vmalloc : 0xffffff8000000000 - 0xffffffbdffff0000   (   247 GB)
[    0.000000]     vmemmap : 0xffffffbe00000000 - 0xffffffbfc0000000   (     7 GB maximum)
[    0.000000]               0xffffffbe00000000 - 0xffffffbe01c00000   (    28 MB actual)
[    0.000000]     fixed   : 0xffffffbffabfe000 - 0xffffffbffac00000   (     8 KB)
[    0.000000]     PCI I/O : 0xffffffbffae00000 - 0xffffffbffbe00000   (    16 MB)
[    0.000000]     modules : 0xffffffbffc000000 - 0xffffffc000000000   (    64 MB)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc080000000   (  2048 MB)
[    0.000000]       .init : 0xffffffc000a0d000 - 0xffffffc002616000   ( 28708 KB)
[    0.000000]       .text : 0xffffffc000080000 - 0xffffffc000a0c2c4   (  9777 KB)
[    0.000000]       .data : 0xffffffc00261a000 - 0xffffffc0026a9000   (   572 KB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS:64 nr_irqs:64 0
[    0.000000] Architected cp15 timer(s) running at 100.00MHz (phys).
[    0.000004] sched_clock: 56 bits at 100MHz, resolution 10ns, wraps every 2748779069440ns
[    0.019047] console [hvc0] enabled
[    0.141119] bootconsole [uart0] disabled
[    0.261335] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=1000000)
[    0.498198] pid_max: default: 32768 minimum: 301
[    0.618470] Security Framework initialized
[    0.681326] AppArmor: AppArmor initialized
[    0.800758] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.925510] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    1.106526] hw perfevents: enabled with arm/armv8-pmuv3 PMU driver, 7 counters available
[    1.288495] EFI services will not be available.
[    1.408613] CPU1: Booted secondary processor
[    1.408617] Detected VIPT I-cache on CPU1
[    1.409031] CPU2: Booted secondary processor
[    1.409033] Detected VIPT I-cache on CPU2
[    1.409426] CPU3: Booted secondary processor
[    1.409429] Detected VIPT I-cache on CPU3
[    1.409468] Brought up 4 CPUs
[    1.787648] SMP: Total of 4 processors activated.
[    1.854980] alternatives: patching kernel code
[    1.917909] devtmpfs: initialized
[    2.043983] DMI not present or invalid.
[    2.169763] xor: measuring software checksum speed
[    2.397734]    8regs     :  2409.600 MB/sec
[    2.586714]    8regs_prefetch:  2111.200 MB/sec
[    2.776790]    32regs    :  2181.600 MB/sec
[    2.965393]    32regs_prefetch:  1986.000 MB/sec
[    3.053947] xor: using function: 8regs (2409.600 MB/sec)
[    3.186977] NET: Registered protocol family 16
[    3.391540] cpuidle: using governor ladder
[    3.568495] cpuidle: using governor menu
[    3.682461] vdso: 2 pages (1 code @ ffffffc002621000, 1 data @ ffffffc002620000)
[    3.874214] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    4.005922] DMA: preallocated 256 KiB pool for atomic allocations
[    4.415216] raid6: int64x1    416 MB/s
[    4.675107] raid6: int64x2    616 MB/s
[    4.923830] raid6: int64x4    883 MB/s
[    5.171899] raid6: int64x8    748 MB/s
[    5.418606] raid6: neonx1     625 MB/s
[    5.667767] raid6: neonx2     957 MB/s
[    5.914965] raid6: neonx4    1306 MB/s
[    6.162037] raid6: neonx8    1312 MB/s
[    6.240846] raid6: using algorithm neonx8 (1312 MB/s)
[    6.370861] raid6: using intx1 recovery algorithm
[    6.438664] arm-smmu fd800000.smmu: probing hardware configuration...
[    6.630269] arm-smmu fd800000.smmu: SMMUv2 with:
[    6.698307] arm-smmu fd800000.smmu:  stage 1 translation
[    6.828048] arm-smmu fd800000.smmu:  stage 2 translation
[    6.958083] arm-smmu fd800000.smmu:  nested translation
[    7.086559] arm-smmu fd800000.smmu:  address translation ops
[    7.216907] arm-smmu fd800000.smmu:  stream matching with 48 register groups, mask 0x7fff
[    7.410802] arm-smmu fd800000.smmu:  16 context banks (0 stage-2 only)
[    7.541367] arm-smmu fd800000.smmu:  Supported page sizes: 0x60211000
[    7.732855] arm-smmu fd800000.smmu:  Stage-1: 48-bit VA -> 48-bit IPA
[    7.866190] arm-smmu fd800000.smmu:  Stage-2: 48-bit IPA -> 48-bit PA
[    7.997950] arm-smmu fd800000.smmu: registered 0 master devices
[    8.127916] SCSI subsystem initialized
[    8.253724] usbcore: registered new interface driver usbfs
[    8.383089] usbcore: registered new interface driver hub
[    8.513028] usbcore: registered new device driver usb
[    8.641372] pps_core: LinuxPPS API ver. 1 registered
[    8.765822] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    8.964081] PTP clock support registered
[    9.091646] NetLabel: Initializing
[    9.217546] NetLabel:  domain hash size = 128
[    9.285129] NetLabel:  protocols = UNLABELED CIPSOv4
[    9.413422] NetLabel:  unlabeled traffic allowed by default
[    9.543645] Switched to clocksource arch_sys_counter
[    9.627714] AppArmor: AppArmor Filesystem Enabled
[    9.744048] NET: Registered protocol family 2
[    9.872013] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[   10.064557] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[   10.256007] TCP: Hash tables configured (established 16384 bind 16384)
[   10.448362] TCP: reno registered
[   10.514115] UDP hash table entries: 1024 (order: 3, 32768 bytes)
[   10.644605] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
[   10.775672] NET: Registered protocol family 1
[   10.903107] RPC: Registered named UNIX socket transport module.
[   11.034409] RPC: Registered udp transport module.
[   11.162788] RPC: Registered tcp transport module.
[   11.230779] RPC: Registered tcp NFSv4.1 backchannel transport module.
[   12.803526] kvm [1]: Using HYP init bounce page @790e5000
[   12.878592] kvm [1]: interrupt-controller@f9040000 IRQ5
[   13.008608] kvm [1]: timer IRQ3
[   13.135233] kvm [1]: Hyp mode initialized successfully
[   13.205234] futex hash table entries: 1024 (order: 4, 65536 bytes)
[   13.393329] audit: initializing netlink subsys (disabled)
[   13.521563] audit: type=2000 audit(6.680:1): initialized
[   13.651809] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[   13.839429] VFS: Disk quotas dquot_6.5.2
[   13.965348] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[   14.097729] NFS: Registering the id_resolver key type
[   14.225305] Key type id_resolver registered
[   14.353032] Key type id_legacy registered
[   14.420118] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[   14.612901] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[   14.744451] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[   14.877362] async_tx: api initialized (async)
[   15.004619] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[   15.196305] io scheduler noop registered
[   15.263020] io scheduler deadline registered
[   15.391944] io scheduler cfq registered (default)
[   15.459685] zynqmp_pm_probe power management API version error. Expected: v0.1 - Found: v0.0
[   15.655531] zynqmp_pm: probe of firmware failed with error -5
[   15.846785] xenfs: not registering filesystem on non-xen platform
[   16.039167] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[   16.230793] 800c0000.serial: ttyUL0 at MMIO 0x800c0000 (irq = 209, base_baud = 0) is a uartlite
[   16.485540] of_serial 800b0000.serial: FAILED to find out alias id
[   16.676807] 800b0000.serial: ttyS0 at MMIO 0x800b1000 (irq = 211, base_baud = 6250000) is a 16550A
[   16.933237] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 204, base_baud = 6250000) is a xuartps
[   18.013854] console [ttyPS0] enabled
[   18.103967] ff010000.serial: ttyPS1 at MMIO 0xff010000 (irq = 205, base_baud = 6250000) is a xuartps
[   18.364603] brd: module loaded
[   18.487438] loop: module loaded
[   18.610212] ahci-ceva fd0c0000.ahci: ceva,p0-cominit-params property not defined
[   18.799801] ahci-ceva: probe of fd0c0000.ahci failed with error -22
[   18.991838] mtdoops: mtd device (mtddev=name/number) must be supplied
[   19.186284] m25p80 spi0.0: found n25q128a11, expected m25p80
[   19.314482] m25p80 spi0.0: n25q128a11 (32768 Kbytes)
[   19.443255] 4 ofpart partitions found on MTD device spi0.0
[   19.572892] Creating 4 MTD partitions on "spi0.0":
[   19.700499] 0x000000000000-0x000000800000 : "boot"
[   19.829872] 0x000000800000-0x000000840000 : "bootenv"
[   19.958844] 0x000000840000-0x000001240000 : "kernel"
[   20.087092] 0x000001240000-0x000002000000 : "spare"
[   20.217333] libphy: Fixed MDIO Bus: probed
[   20.343212] CAN device driver interface
[   20.470547] libphy: MACB_mii_bus: probed
[   20.673840] macb ff0e0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0e0000 irq 16 (00:0a:35:00:22:01)
[   20.915766] macb ff0e0000.ethernet eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ff0e0000.etherne:15, irq=-1)
[   21.175319] xilinx-axipmon 800a0000.apm: Probed Xilinx APM
[   21.703588] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[   21.795708] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
[   21.989818] xhci-hcd xhci-hcd.0.auto: hcc params 0x0238f665 hci version 0x100 quirks 0x00010010
[   22.244675] xhci-hcd xhci-hcd.0.auto: irq 206, io mem 0xfe200000
[   22.435573] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[   22.627340] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   22.820640] usb usb1: Product: xHCI Host Controller
[   22.949752] usb usb1: Manufacturer: Linux 4.0.0+ xhci-hcd
[   23.079263] usb usb1: SerialNumber: xhci-hcd.0.auto
[   23.208006] hub 1-0:1.0: USB hub found
[   23.333221] hub 1-0:1.0: 1 port detected
[   23.461703] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[   23.592374] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
[   23.785618] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[   23.977269] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   24.170252] usb usb2: Product: xHCI Host Controller
[   24.297711] usb usb2: Manufacturer: Linux 4.0.0+ xhci-hcd
[   24.428364] usb usb2: SerialNumber: xhci-hcd.0.auto
[   24.558102] hub 2-0:1.0: USB hub found
[   24.683791] hub 2-0:1.0: 1 port detected
[   24.811828] usbcore: registered new interface driver uas
[   24.940926] usbcore: registered new interface driver usb-storage
[   25.132419] mousedev: PS/2 mouse device common for all mice
[   25.263701] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0
[   25.456324] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 192
[   25.646280] cdns-i2c ff030000.i2c: 400 kHz mmio ff030000 irq 193
[   25.837395] cdns-wdt fd4d0000.watchdog: input clock not found
[   26.028106] cdns-wdt: probe of fd4d0000.watchdog failed with error -2
[   26.218998] md: linear personality registered for level -1
[   26.349358] md: raid0 personality registered for level 0
[   26.478807] md: raid1 personality registered for level 1
[   26.607697] md: raid10 personality registered for level 10
[   26.737827] md: raid6 personality registered for level 6
[   26.867360] md: raid5 personality registered for level 5
[   26.997357] md: raid4 personality registered for level 4
[   27.125869] device-mapper: ioctl: 4.30.0-ioctl (2014-12-22) initialised: dm-devel@redhat.com
[   27.321191] Driver 'mmcblk' needs updating - please use bus_type methods
[   27.513219] sdhci: Secure Digital Host Controller Interface driver
[   27.703888] sdhci: Copyright(c) Pierre Ossman
[   27.831625] sdhci-pltfm: SDHCI platform and OF driver helper
[   27.963237] sdhci-arasan ff170000.sdhci: No vmmc regulator found
[   28.152417] sdhci-arasan ff170000.sdhci: No vqmmc regulator found
[   28.383652] mmc0: SDHCI controller on ff170000.sdhci [ff170000.sdhci] using ADMA 64-bit
[   28.536866] gpio-test: inside gpio_led_probe
[   28.664844] gpio-test amba_pl:gpio-test@0: invalid IRQ
[   28.789683] gpio-test: inside gpio_led_probe
[   28.917734] gpio-test amba_pl:gpio-test@1: invalid IRQ
[   29.046269] usbcore: registered new interface driver usbhid
[   29.176691] usbhid: USB HID core driver
[   29.304084] TCP: cubic registered
[   29.431188] Initializing XFRM netlink socket
[   29.559155] NET: Registered protocol family 10
[   29.687600] sit: IPv6 over IPv4 tunneling driver
[   29.815833] NET: Registered protocol family 17
[   29.943365] NET: Registered protocol family 15
[   30.072347] can: controller area network core (rev 20120528 abi 9)
[   30.264867] NET: Registered protocol family 29
[   30.392184] can: raw protocol (rev 20120528)
[   30.521149] can: broadcast manager protocol (rev 20120528 t)
[   30.650724] can: netlink gateway (rev 20130117) max_hops=1
[   30.779646] Key type dns_resolver registered
[   30.909169] Btrfs loaded
[   30.971489] AppArmor: AppArmor sha1 policy hashing enabled
[   31.101091] rtc_zynqmp ffa60000.rtc: setting system clock to 1970-03-24 05:28:21 UTC (7104501)
[   31.365533] Freeing unused kernel memory: 28708K (ffffffc000a0d000 - ffffffc002616000)
[   31.553277] Freeing alternatives memory: 8K (ffffffc002616000 - ffffffc002618000)
INIT: version 2.88 booting
Creating /dev/flash/* device nodes
[   32.054197] random: dd urandom read with 2 bits of entropy available
Starting internet superserver: inetd.
update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)
 Removing any system startu
INIT: Entering runlevel: 5
 
Configuring network interfaces... [   32.504044] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
udhcpc (v1.23.1) started
Sending discover...
Sending discover...
[   35.903965] macb ff0e0000.ethernet eth0: link up (1000/Full)
[   35.997491] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Sending discover...
Sending select for 10.10.70.3...
Lease of 10.10.70.3 obtained, lease time 600
/etc/udhcpc.d/50default: Adding DNS 172.19.128.1
/etc/udhcpc.d/50default: Adding DNS 172.19.129.1
done.
Built with PetaLinux v2015.4 (Yocto 1.8) Xilinx-ZC1751-DC2 /dev/ttyPS0
Xilinx-ZC1751-DC2 login: root
Password:
login[1427]: root login on 'ttyPS0'
root@Xilinx-ZC1751-DC2:~#
root@Xilinx-ZC1751-DC2:~# echo 123456789 > /dev/ttyUL0
[   70.634844] 123456789
root@Xilinx-ZC1751-DC2:~# echo 123456789abcd  > /dev/ttyUL0
[   75.774761] 123456789abcd

Mainline Status

This driver is currently in sync with mainline kernel 4.9 except for the following:
  • uartlite: Add structure for private data
  • uartlite: Add clock adaptation

Change Log

2016.3
  • None

2016.4
  • None

2017.1
Summary:
  • tty: serial: uartlite: Add structure for private data
  • tty: serial: uartlite: Add clock adaptation
Commits:
  • f221ad2 tty: serial: uartlite: Add structure for private data
  • 18f697c tty: serial: uartlite: Add clock adaptation

2017.2
  • None

2017.3
  • None

2017.4
  • None

2018.1
Summary:
  • uartlite: Adding a kernel parameter for the number of uartlites
Commits:
  • b44b96a uartlite: Adding a kernel parameter for the number of uartlites

2018.2
Summary:
  • tty: uartlite: Enable clocks at probe
  • tty: uartlite: Update the clock name

Commits:
  • 98ce4fa tty: uartlite: Enable clocks at probe
  • 8069fdtty: uartlite: Update the clock name
2018.3
Summary:
  • serial: uartlite: Use dynamic array for console port
  • serial: uartlite: Move uart register to probe
  • serial-uartlite: Add runtime support
  • serial-uartlite: Fix the unbind path
  • serial-uartlite: Change logic how console_port is setup
  • serial-uartlite: Use allocated structure instead of static ones

Commits:
  • a6ddea6 serial: uartlite: Use dynamic array for console port
  • a025703 tty: serial: uartlite: Move uart register to probe
  • e8302b7 serial-uartlite: Add runtime support
  • 5bb1cd2 serial-uartlite: Fix the unbind path
  • 9c5329b serial-uartlite: Change logic how console_port is setup
  • 472c0cf serial-uartlite: Use allocated structure instead of static ones
  • 967c635 serial-uartlite: Remove ULITE_NR_PORTS macro

Related Links

  • No labels