Linux Kernel - 4.4

Last modified by Microchip on 2025/03/03 06:28

Linux 4.4 for AT91 source code

The Linux kernel for Atmel | SMART Processor Based PMUs (aka AT91) is distributed as a GIT tree hosted on GitHub as a fork of the official Linus Torvalds' git tree. The objective of the Atmel Linux team is to integrate all the AT91-related material in the official Linux Kernel.
Before completing this inclusion process, which can take time, this website provides the Linux4SAM Linux Kernel git tree for AT91 devices at:

https://github.com/linux4sam/linux-at91/tree/linux-4.4-at91

Tags

linux4sam_5.5 tag

Enhancements are added on top of the official v4.4 Linux kernel tag. Note as well that we re-integrate each and every stable kernel release on top of this Long Term Support (LTS) kernel revision. This means that each v4.4.x version is merged in our branch. Here is a little summary of the main enhancements:

  • Integration of stable kernel updates up to v4.4.26
  • SAMA5D2: ISC and camera sensors enhancements (ov7740) to be compatible with V4L2
  • SAMA5D2: ADC driver backport from Linux Mainline
  • SAMA5D2: add FIFO configuration for I2C
  • WILC1000 WIFI driver backport from a recent Linux "staging" directory content
  • HDMI on SAMA5D4 Xplained: verified functioning sii902x driver
  • maXTouch driver: stabilize and integrate driver enhancements from atmel-maxtouch github repository
  • fixes: LCD driver vertical scaling, OHCI power consumption, SDHCI non-removable devices handling

linux4sam_5.4 tag

  • SAMA5D2: chipID, LED, push button, shutdown controller, TRNG
  • SAMA5D2: NAND driver enhancements (32 bits ECC)
  • SAMA5D2: new I2S driver
  • ISI and camera sensors enhancements
  • adaptation and use of the Bosch M_CAN device driver
  • audio PLL clock driver
  • PMIC and charger ACT8945A driver
  • crypto engines enhancement
  • quad-SPI support: QSPI
  • power management: support for ULP1 mode
  • support for PDA 4.3", 7" screens
  • HDMI on sama5d4 Xplained: add sii902x driver
  • USART fractional baud rate support
  • fixes: DMA residue computation, HSMCI regulator, i2c hold time

Getting Kernel sources

To get the source code, you have to clone the repository:

$ git clone git://github.com/linux4sam/linux-at91.git
Cloning into 'linux-sama9x5-github'...
remote: Counting objects: 4524288, done.
remote: Compressing objects: 100% (721/721), done.
remote: Total 4524288 (delta 385), reused 1 (delta 1), pack-reused 4523564
Receiving objects: 100% (4524288/4524288), 1.22 GiB | 1.35 MiB/s, done.
Resolving deltas: 100% (3777338/3777338), done.
Checking connectivity... done.
Checking out files: 100% (49565/49565), done.

The source code has been taken from the master branch which is pointing on the latest branch we use.

hand Note that you can also add this Linux4SAM repository as a remote GIT repository to your usu

$ git remote add linux4sam git://github.com/linux4sam/linux-at91.git
$ git remote update linux4sam
Fetching linux4sam
From git://github.com/linux4sam/linux-at91
* [new branch]                linux-2.6.39-at91 -> linux4sam/linux-2.6.39-at91
* [new branch]                linux-3.10-at91 -> linux4sam/linux-3.10-at91
* [new branch]                linux-3.15-at91 -> linux4sam/linux-3.15-at91
* [new branch]                linux-3.18-at91 -> linux4sam/linux-3.18-at91
* [new branch]                linux-3.4.9-at91 -> linux4sam/linux-3.4.9-at91
* [new branch]                linux-3.6.9-at91 -> linux4sam/linux-3.6.9-at91
* [new branch]                linux-4.1-at91 -> linux4sam/linux-4.1-at91
* [new branch]                linux-4.4-at91 -> linux4sam/linux-4.4-at91
* [new branch]                master     -> linux4sam/master

If you want to use an other branch, you can list them and use one of them by doing this:

$ git branch -r
  origin/HEAD -> origin/master
  origin/linux-2.6.39-at91
  origin/linux-3.10-at91
  origin/linux-3.15-at91
  origin/linux-3.18-at91
  origin/linux-3.4.9-at91
  origin/linux-3.6.9-at91
  origin/linux-4.1-at91
  origin/linux-4.4-at91
  origin/master
$ git checkout origin/linux-4.4-at91 -b linux-4.4-at91
Branch linux-4.1-at91 set up to track remote branch linux-4.4-at91 from origin.
Switched to a new branch 'linux-4.4-at91'

Configure and Build the Linux kernel

Now you have to configure the Linux kernel according to your hardware. We have two default configuration at91 SoC in arch/arm/configs

arch/arm/configs/at91_dt_defconfig
arch/arm/configs/sama5_defconfig
  • at91_dt_defconfig: for at91sam ARM926 series chips
  • sama5_defconfig: for SAMA5 series chips
$ make ARCH=arm menuconfig

And build the Linux kernel image, before you build you need set up the cross compile toolchain, check this section.

$ make ARCH=arm

[..]

  Kernel: arch/arm/boot/Image is ready
  Kernel: arch/arm/boot/zImage is ready

Now you have an usable compressed kernel image zImage.

If you need an uImage you can run this additional step:

make ARCH=arm uImage LOADADDR=0x20008000

[..]

  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-4.1.0-linux4sam_5.3+
Created:      Fri Sep  9 17:02:45 2016
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    3441072 Bytes = 3360.42 kB = 3.28 MB
Load Address: 20008000
Entry Point:  20008000
  Image arch/arm/boot/uImage is ready
make ARCH=arm dtbs

[..]

  DTC     arch/arm/boot/dts/at91rm9200ek.dtb
  DTC     arch/arm/boot/dts/mpa1600.dtb
  DTC     arch/arm/boot/dts/animeo_ip.dtb
  DTC     arch/arm/boot/dts/at91-qil_a9260.dtb
  DTC     arch/arm/boot/dts/aks-cdu.dtb
  DTC     arch/arm/boot/dts/ethernut5.dtb
  DTC     arch/arm/boot/dts/evk-pro3.dtb
  DTC     arch/arm/boot/dts/tny_a9260.dtb
  DTC     arch/arm/boot/dts/usb_a9260.dtb
  DTC     arch/arm/boot/dts/at91sam9261ek.dtb
  DTC     arch/arm/boot/dts/at91sam9263ek.dtb
  DTC     arch/arm/boot/dts/tny_a9263.dtb
  DTC     arch/arm/boot/dts/usb_a9263.dtb
  DTC     arch/arm/boot/dts/at91-foxg20.dtb
  DTC     arch/arm/boot/dts/at91-kizbox.dtb
  DTC     arch/arm/boot/dts/at91sam9g20ek.dtb
  DTC     arch/arm/boot/dts/at91sam9g20ek_2mmc.dtb
  DTC     arch/arm/boot/dts/tny_a9g20.dtb
  DTC     arch/arm/boot/dts/usb_a9g20.dtb
  DTC     arch/arm/boot/dts/usb_a9g20_lpw.dtb
  DTC     arch/arm/boot/dts/at91sam9m10g45ek.dtb
  DTC     arch/arm/boot/dts/pm9g45.dtb
  DTC     arch/arm/boot/dts/at91sam9n12ek.dtb
  DTC     arch/arm/boot/dts/at91sam9rlek.dtb
  DTC     arch/arm/boot/dts/at91-ariag25.dtb
  DTC     arch/arm/boot/dts/at91-ariettag25.dtb
  DTC     arch/arm/boot/dts/at91-cosino_mega2560.dtb
  DTC     arch/arm/boot/dts/at91-kizboxmini.dtb
  DTC     arch/arm/boot/dts/at91sam9g15ek.dtb
  DTC     arch/arm/boot/dts/at91sam9g25ek.dtb
  DTC     arch/arm/boot/dts/at91sam9g35ek.dtb
  DTC     arch/arm/boot/dts/at91sam9x25ek.dtb
  DTC     arch/arm/boot/dts/at91sam9x35ek.dtb

If the building process is successful, the final images can be found under _arch/arm/boot/_ directory.

Recent FAQ