Linux Kernel (6.6.47)

Linux Kernel (6.6.47)

 

The Linux kernel is the core component of the Linux operating system, serving as the central part that interacts directly with the computer's hardware. Developed by Linus Torvalds and the open-source community, the Linux kernel is released under the GNU General Public License (GPL) and is a key example of free and open-source software.

Linux is widely used in embedded systems, such as mobile phones, tablets, routers, TVs, and electronic game consoles. The Android operating system widely used on mobile devices is also built on the Linux core. Since Linux is free software, anyone can build a Linux package that meets their needs.

For further information, refer to:

Linux official web: LINUX.ORG

Linux 6.6.47 (LTS) is downloaded from: linux-6.6.47.tar.gz

Table of Contents

Features of Linux

The Linux kernel boasts several prominent features, including:

  1. Open Source: Linux is developed under the GNU General Public License (GPL), making its source code freely available for modification and redistribution.

  2. Modularity: The kernel is designed with a modular architecture, allowing for the addition or removal of features as needed.

  3. Multiplatform Support: Linux supports a wide range of hardware architectures, from desktop computers to embedded devices, servers, and supercomputers.

  4. Multitasking and Multiuser: Linux supports multitasking, enabling multiple processes to run simultaneously, and multiuser capabilities, allowing multiple users to interact with the system concurrently.

  5. Memory Management: The kernel efficiently manages system memory, including virtual memory, memory allocation, and memory protection mechanisms.

  6. Device Drivers: Linux includes a vast array of device drivers, providing support for a diverse range of hardware components, peripherals, and devices.

  7. Networking: Linux offers robust networking capabilities, supporting various networking protocols and technologies for communication.

  8. Security: The kernel incorporates numerous security features, including access controls, permissions, encryption, and secure communication protocols, to safeguard system integrity and data privacy.

  9. File Systems: Linux supports multiple file systems, including ext4, btrfs, xfs, and ntfs, and etc.

  10. Scalability: Linux scales effectively from small embedded devices to large-scale server environments.

These features collectively contribute to Linux's widespread adoption and success across diverse computing environments.

Supported Drivers for SP7350 Platform

The source files of the Linux kernel are centrally located within the "linux/kernel/" directory under the project's top directory. For the SP7350 platform, a wide array of device drivers is supported. These drivers are within the "drivers/" directory. Below is a reference table detailing the drivers along with their corresponding feature descriptions:

Drivers

Folders or files

Features

8-bit NAND

mtd/nand/raw/sp_paranand/

  1. Support MTD framework.

  2. Support read and write standard 2k/4k/8k ECC sectors.

  3. Support block and chip erase.

ADC (SAR12B)

iio/adc/sp-adc.c

  1. Support read 4 channels external voltage.

  2. Support IIO interface.

AXI Arbiter

soc/sunplus/

  1. Sunplus internal use for setting AXI bus.

AXI DM

misc/sunplus_dm_test.c

  1. Sunplus internal use for testing AXI bus.

AXI DMA

dma/dw-axi-dmac/

  1. Support Linux DMA Engine framework.

  2. Support memory-to-memory copy.

AXI Monitor

soc/sunplus/

  1. Sunplus internal use for monitoring AXI bus.

CB DMA

dma/sp_cbdma.c

  1. Sunplus internal use. 

Clock

clk/clk-sp7350.c

  1. Support Linux Common Clock Framework.

  2. Support clock functions for all devices.

CPUFreq

cpufreq/sp7350-cpufreq.c

  1. Support CPU frequency scaling.

Crypto Engine

crypto/sunplus/

  1. Support RSA-256/512/1024/2048 encryption.

  2. Support AES-128/192/256 encryption and decryption with ECB, CBC, CTR, modes

  3. Support MD5, SHA3-224/256/384/512.

  4. Support GHASH for AES GCM mode
    RSA.

  5. Support POLY1305.

  6. Support modular exponentiation.

Display

(framebuffer)

media/platform/sunplus/display/

sp7350/

  1. Support framebuffer.

  2. Support V4L2 framework

  3. Video input :

    1. Support 5 layers input video source, including 4 layers OSD and 1 layer image with scaling up and down.

    2. OSD layers (osd0, osd1, osd2, osd3):

      1. Support formats: ARGB8888, RGBA8888, ARGB4444, RGBA4444, ARGB1555, RGB565, YUY2, 8bpp

      2. Support source resolution upto 1920x1080.

    3. Image layer (vpp0):

      1. Supports formats: UYVY, NV12, NV24, NV16, YUY2

      2. Support up and down scaling up

      3. Support source resolution upto 3840x2880.

  4. Video output :

    1. Support MIPI/DSI TX and MIPI/CSI TX.

    2. MIPI/DSI TX:

      1. Support fromats: RGB888, RGB666_24BITS, RGB666_18BITS, RGB565

      2. Support resolution upto 1920x1080.

    3. MIPI/CSI TX:

      1. Support fromats: YUV422_20BITS, RGB888, RGB565

      2. Support resolution upto 3840x2880.

    4. Note that MIPI/DSI TX and MIPI/CSI TX share the same D-PHY.

    5. Support clock frequency up to 1.5G bps.

    6. Support 1, 2 and 4 data lanes.

  5. MIPI/DSI-TX supports:

    1. LT8912B MIPI to HDMI Bridge

    2. Raspberry Pi LCD (800x480) Panel

    3. TCXD024IBLON-2 LCD (240x320) Panel

    4. HXM0686TFT-001 LCD (480x1280) Panel

Display

(DRM)

drivers/gpu/drm/sunplus/sp7350/

  1. Support DRM framework.

  2. Support legacy framebuffer device

  3. Video input :

    1. Support 5 layers fixed input video source, including 4 layers OSD and 1 layer image with scaling up/down and blending.
      L6-OSD0: Cursor plane (not yet)
      L5-OSD1: Overlay plane
      L4-OSD2: Overlay plane
      L3-VPP0: Overlay (media) plane
      L1-OSD3: Primary plane

    2. OSD layers (osd0, osd1, osd2, osd3):

      1. Support formats: ARGB8888, RGBA8888, ARGB4444, RGBA4444, ARGB1555, RGB565, YUY2, 8bpp

      2. Support source resolution upto 1920x1080

      3. Support blend alpha and color-keying function.

    3. Image layer (vpp0):

      1. Supports formats: UYVY, NV12, NV24, NV16, YUY2

      2. Support up and down scaling up

      3. Support source resolution upto 3840x2880

      4. Support blend alpha function.

    4. Support crop and pan function for all layers.

  4. Video output :

    1. support MIPI/DSI TX.

    2. MIPI/DSI TX:

      1. Support formats: RGB888, RGB666_24BITS, RGB666_18BITS, RGB565

      2. Support resolution upto 1920x1080.

    3. MIPI/CSI TX( not yet):

      1. Support formats: YUV422_20BITS, RGB888, RGB565

      2. Support resolution upto 3840x2880.

    4. Note that MIPI/DSI TX and MIPI/CSI TX share the same D-PHY.

    5. Support clock frequency up to 1.5G bps.

    6. Support 1, 2 and 4 data lanes.

  5. MIPI/DSI-TX supports:

    1. LT8912B MIPI to HDMI Bridge

    2. Raspberry Pi LCD (800x480) Panel

    3. TCXD024IBLON-2 LCD (240x320) Panel

    4. HXM0686TFT-001 LCD (480x1280) Panel

eMMC

mmc/host/sunplus_mmc.*

  1. Support Linux MMC framework.

  2. Support read and write User Data Area.

  3. Support access RPMB partition.

  4. Support DDR52, HS200 and HS400 speeds.

  5. Support dma mode.

  6. Support 1.8V and 3.3V devices.

Ethernet

net/ethernet/stmicro/stmmac/

  1. Support Half-duplex / Full-duplex operations.

  2. Support RMON/MIB counters.

  3. Support IEEE 1588 time-stamping (PTP).

  4. Support ARP offloading.

  5. Support automatic CRC / PAD insertion and checking.

  6. Support checksum offload for received and transmitted packets.

  7. Support standard or jumbo Ethernet packets.

  8. Support multi-cast.

  9. Support remote wake-up detection.

  10. Support programmable burst length, threshold, queue size.

  11. Support ethtool operations.

  12. Support loading MAC address from OTP.

GDC

media/platform/sunplus/gdc/

  1. Only support 8-bit data.

  2. Supported image formats:
    Grayscale(L8)、I420、YV12、NV12、NV21.

  3. Support max 4K UHD resolution.

  4. Support four simultaneous geometric warp functions at video resolutions up to 4K UHD.

  5. Support four types of transformations:

    1. Equisolid projected to plane.

    2. Equisolid projected to cylinder.

    3. Equidistant projected to arbitrary plane.

    4. Custom.

  6. All transformation types have three common parameters: pan, tilt, and zoom.

I2C

i2c/busses/i2c-designware-*.c

  1. Support RX and TX transferring.

  2. Support 100kHz, 400kHz, 1.6M speeds.

Mailbox

mailbox/sunplus*.*

  1. Support Linux mailbox framework.

  2. Support communication between CA55 and CM4.

MIPI/CSI-RX

media/platform/sunplus/mipicsi/

  1. Support Linux V4L2 framework.

  2. Support RAW8, RAW10 and RAW12 formats.

  3. Support packed RAW10 and RAW12 formats output.

  4. Support enumerating camera supported formats.

  5. Support media control.

  6. Support virtual channel.

  7. Support 1, 2 and 4 data lanes.

NVMEM (OTP)

nvmem/sp-ocotp*.c

  1. Support read OTP.

PinCtl / GPIO

pinctrl/sunplus/pinctrl-*.*

pinctrl/sunplus/gpio-sp7350.*

  1. Support Linux pinctrl framework.

  2. Support generic helper bindings.

  3. Support pin-mux of all devices.

  4. Support all GPIO pins.

  5. Support interrupt pins.

PWM

pwm/pwm-sunplus.c

  1. Support set frequency and duty.

  2. Support set polarity.

  3. Support enable and disable.

Regulators

  1. regulator/rt5759-regulator.c

  2. regulator/sti8070x-regulator.c

  1. Support Linux regulator framework.

  2. CPU frequency scaling.

Remoteproc

remote/sp_remoteproc.c

  1. Support downloading firmware of CM4.

  2. Support start and stop CM4.

  3. Support rpmsg (virtual serial port).

Reset

reset/reset-sunplus.c

  1. Support reset functions for all devices.

HW RNG

char/hw_random/sp7350-rng.c

  1. Support generating random number.

RTC

rtc/rtc-sp7350.c

  1. Support set and read time.

  2. Support set and read alarm.

  3. Support alarm interrupt.

Semaphore

hwspinlock/sunplus_hwspinlock.c

  1. Support hardware lock and unlock.

SPI

spi/spi-dw*

  1. Support master mode RX and TX transferring.

  2. Support set clock frequency.

  3. Support mode 0, 1, 2 and 3.

  4. Support DMA mode.

SPI-NAND

mtd/nand/raw/sp_*

  1. Support Linux mtd framework.

  2. Support read and write standard 2k ECC sectors for 1 or 2 planes.

  3. Support read and write standard 4k ECC sectors for 1 plane only.

  4. Support block and chip erase.

  5. Support 4-bit operations.

  6. Support set clock frequency.

SD / SDIO

mmc/host/sunplus_sd3.*

  1. Support Linux MMC framework.

  2. Support read and write operations.

  3. Support DMA mode.

  4. Support SDR25, SDR50 and SDR104 speeds.

  5. Support dynamic voltage-switching.

SPI-NOR

mtd/spi-nor/controllers/

sp-spi-nor.c

  1. Support Linux MTD framework.

  2. Support read and write operations.

  3. Support block and chip erase.

  4. Support set clock frequency.

STC

misc/sunplus_stc.c

  1. Initialize the parent STC of timer in kernel space.

  2. Easier to manage timer groups.

  1. Set the frequency when timer select STC as clock source.

Thermal

thermal/sunplus_thermal.c

  1. Support Linux Thermal framework.

  2. Support Linux HW monitor.

  3. Support read temperature of chip.

  4. Chip calibration data stored in OTP.

Timer

misc/sunplus_timer.c

  1. Support use the HW timer in user space.

  1. Support the selection of clock sources (default select STC source).

  2. User-defined timer interrupt handler.

USB2.0 EHCI

usb/host/ehci*-sunplus.*

  1. Support high-speed read and write operation.

USB2.0 OHCI

usb/host/ohci*-sunplus.*

  1. Support full-speed read and write operation.

USB2.0 PHY

phy/sunplus/phy-sunplus-usb2.c

  1. PHY driver of USB2.0.

USB2.0 UDC

usb/gadget/udc/sunplus_udc2.*

  1. Support device mode.

USB2.0 OTG

usb/phy/otg-sp7350-sunplus.c

  1. Support role switch between host mode and device mode.

  2. Support only HNP and SRP.

USB3.0 DRD

usb/dw3/