Merge branch 'master' into mvebu-kernel-update
This commit is contained in:
commit
91969d52bb
BIN
.github/README.gif
vendored
Normal file
BIN
.github/README.gif
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 176 KiB |
BIN
.github/armbian-logo.png
vendored
Normal file
BIN
.github/armbian-logo.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
240
README.md
240
README.md
@ -1,50 +1,226 @@
|
||||
# Armbian #
|
||||
<h3 align=center><a href="#armbian-build-tools"><img src=".github/armbian-logo.png" alt="Armbian logo" width="144"></a><br>
|
||||
build tools</h3>
|
||||
|
||||
Debian based Linux for ARM based single-board computers
|
||||
|
||||
[https://www.armbian.com](https://www.armbian.com "Armbian")
|
||||
<p align=right> </p>
|
||||
|
||||
[](https://armbian.lane-fu.com/jenkins/job/test-full/)
|
||||
|
||||
## Table of contents
|
||||
|
||||
- [What this project does?](#what-this-project-does)
|
||||
- [What do you need to get started?](#what-do-you-need-to-get-started)
|
||||
- [How to build an image or a kernel?](#how-to-build-an-image-or-a-kernel)
|
||||
- [Build parameter examples](#build-parameter-examples)
|
||||
- [Compare with industry standards](#compare-with-industry-standards)
|
||||
- [Where to download prebuilt images?](#where-to-download-prebuilt-images)
|
||||
- [Additional information](#additional-information)
|
||||
- [Build tools overview](#build-tools-overview)
|
||||
- [Support](#support)
|
||||
- [Contribute](#contribute)
|
||||
- [Social](#social)
|
||||
- [Credits](#credits)
|
||||
- [Sponsors](#sponsors)
|
||||
|
||||
<p align=right> </p>
|
||||
|
||||
## What this project does?
|
||||
|
||||
- builds custom Debian based Linux system optimised for [supported single board computers](https://www.armbian.com/download/),
|
||||
- covers root filesystem generation, kernel image compilation and bootloader compilation,
|
||||
- maintains low-level control software for a [selection of hardware](https://www.armbian.com/download/),
|
||||
- provides a consistent user experience by keeping system standards across different SBC platforms.
|
||||
|
||||
<p align=right> </p>
|
||||
|
||||
## What do you need to get started?
|
||||
|
||||
- x64 machine with at least 2GB of memory and ~30GB of disk space for the VM, container or native OS,
|
||||
- Ubuntu Bionic 18.04 / Focal 20.04 x64 for native building or any [Docker](https://docs.armbian.com/Developer-Guide_Building-with-Docker/) capable x64 Linux for containerised,
|
||||
- superuser rights (configured sudo or root access).
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## How to build an image or a kernel?
|
||||
|
||||
```text
|
||||
apt -y install git
|
||||
git clone https://github.com/armbian/build
|
||||
cd build
|
||||
./compile.sh
|
||||
```
|
||||
<a href="#how-to-build-an-image-or-a-kernel"><img src=".github/README.gif" alt="Armbian logo" width="100%"></a>
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## Build parameter examples
|
||||
|
||||
Show work in progress areas in interactive mode:
|
||||
|
||||
```text
|
||||
./compile.sh EXPERT="yes"
|
||||
```
|
||||
|
||||
Run build tools inside Docker container:
|
||||
|
||||
```text
|
||||
./compile.sh docker
|
||||
```
|
||||
|
||||
Build minimal CLI Debian buster based image for Odroid XU4. Use modern kernel and write image to the SD card:
|
||||
|
||||
```text
|
||||
./compile.sh BOARD="odroidxu4" BRANCH="current" RELEASE="buster" CARD_DEVICE="/dev/sda" \
|
||||
KERNEL_ONLY="no" KERNEL_CONFIGURE="no" INSTALL_HEADERS="yes" BUILD_DESKTOP="no" BUILD_MINIMAL="yes"
|
||||
```
|
||||
|
||||
[Build parameters, advanced build options, user defined configuration, build with Docker?](#additional-information)
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## Compare with industry standards
|
||||
|
||||
Check similarity, advantages and disadvantages compared with leading industry standard build software.
|
||||
|
||||
Function | Armbian | Yocto | Buildroot |
|
||||
|:--|:--|:--|:--|
|
||||
| Target | general purpose | embedded | embedded / IOT |
|
||||
| U-boot and kernel | compiled from sources | compiled from sources | compiled from sources |
|
||||
| Hardware support maintenance | complete | outside | outside |
|
||||
| Root file system | Debian or Ubuntu based| custom | custom |
|
||||
| Package manager | APT | any | none |
|
||||
| Configurability | limited | large | large |
|
||||
| Initramfs support | yes | yes | yes |
|
||||
| Getting started | quick | very slow | slow |
|
||||
| Cross compilation | yes | yes | yes |
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## Where to download prebuilt images?
|
||||
|
||||
https://www.armbian.com/download/
|
||||
|
||||
Armbian [releases](https://docs.armbian.com/Release_Changelog/) quarterly at the end of [February, May, August, November](https://github.com/armbian/documentation/blob/master/docs/Process_Release-Model.md). You are welcome to propose changes to our default [images build list](https://github.com/armbian/build/blob/master/config/targets.conf).
|
||||
|
||||
|
||||
# How to build an image or a kernel?
|
||||
|
||||
Supported build environment is **Ubuntu Bionic 18.04 x64** ([minimal iso image](http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso)).
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
- guest inside a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or other virtualization software,
|
||||
- guest managed by [Vagrant](https://docs.armbian.com/Developer-Guide_Using-Vagrant/). This uses Virtualbox (as above) but does so in an easily repeatable way,
|
||||
- inside a [Docker](https://docs.armbian.com/Developer-Guide_Building-with-Docker/), [systemd-nspawn](https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html) or other container environment [(example)](https://github.com/armbian/build/pull/255#issuecomment-205045273),
|
||||
- running natively on a dedicated PC or a server (**not** recommended),
|
||||
- **25GB disk space** or more and **2GB RAM** or more available for the VM, container or native OS,
|
||||
- superuser rights (configured `sudo` or root access).
|
||||
## Additional information
|
||||
|
||||
**Execution**
|
||||
- [Build parameters and advanced build options](https://docs.armbian.com/Developer-Guide_Build-Options/),
|
||||
- [Make use of user defined configurations](https://docs.armbian.com/Developer-Guide_User-Configurations/),
|
||||
- [Docker](https://docs.armbian.com/Developer-Guide_Building-with-Docker/) and [Vagrant](https://docs.armbian.com/Developer-Guide_Using-Vagrant/) building guides,
|
||||
- Engage in [Armbian build framework forums](https://forum.armbian.com/forum/4-development/),
|
||||
- Check [Jira project management application](https://armbian.atlassian.net/browse/AR) status,
|
||||
- Make use of [central project search engine](https://www.armbian.com/search),
|
||||
- Browse [IRC channel logs](http://irc.armbian.com) or interact at #armbian on [freenode](https://freenode.net/).
|
||||
|
||||
apt -y install git
|
||||
git clone https://github.com/armbian/build
|
||||
cd build
|
||||
./compile.sh
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
Make sure that full path to the build script does not contain spaces.
|
||||
## Build tools overview
|
||||
|
||||
You will be prompted with a selection menu for a build option, a board name, a kernel branch and an OS release. Please check the documentation for [advanced options](https://docs.armbian.com/Developer-Guide_Build-Options/) and [additional customization](https://docs.armbian.com/Developer-Guide_User-Configurations/).
|
||||
```text
|
||||
├── cache Work / cache directory
|
||||
│ ├── rootfs Compressed vanilla Debian and Ubuntu rootfilesystem cache
|
||||
│ ├── sources Kernel, u-boot and various drivers sources. Mainly C code
|
||||
│ ├── toolchains External cross compilers from Linaro™ or ARM™
|
||||
├── config Packages repository configurations
|
||||
│ ├── targets.conf Board build target configuration
|
||||
│ ├── boards Board configurations
|
||||
│ ├── bootenv Initial boot loaders environments per family
|
||||
│ ├── bootscripts Initial Boot loaders scripts per family
|
||||
│ ├── kernel Kernel build configurations per family
|
||||
│ ├── sources Kernel and u-boot sources locations and scripts
|
||||
│ ├── templates User configuration templates which populate userpatches
|
||||
│ └── torrents External compiler and rootfs cache torrents
|
||||
├── lib Main build tools libraries
|
||||
├── output Build artifact
|
||||
│ └── deb Deb packages
|
||||
│ └── images Bootable images - RAW or compressed
|
||||
│ └── debug Patch and build logs
|
||||
│ └── config Kernel configuration export location
|
||||
│ └── patch Created patches location
|
||||
├── packages Support scripts, binary blobs, packages
|
||||
│ ├── blobs Wallpapers, various configs, closed source bootloaders
|
||||
│ ├── bsp Scripts and configs overlay for rootfs
|
||||
│ └── extras-buildpkgs Optional compilation and packaging engine
|
||||
├── patch Collection of patches
|
||||
│ ├── atf ARM trusted firmware
|
||||
│ ├── kernel Linux kernel patches
|
||||
| | └── family-branch Per kernel family and branch
|
||||
│ ├── misc Linux kernel packaging patches
|
||||
│ └── u-boot Universal boot loader patches
|
||||
| ├── u-boot-board For specific board
|
||||
| └── u-boot-family For entire kernel family
|
||||
└── userpatches User: configuration patching area
|
||||
├── lib.config User: tools common config/override file
|
||||
├── config-default.conf User: default user config file
|
||||
├── customize-image.sh User: script will execute just before closing the image
|
||||
├── atf User: ARM trusted firmware
|
||||
├── kernel User: Linux kernel per kernel family
|
||||
├── misc User: various
|
||||
└── u-boot User: universal boot loader patches
|
||||
```
|
||||
|
||||
Build process uses caching for the compilation and the debootstrap process, so consecutive runs with similar settings will be much faster.
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
# How to report issues?
|
||||
## Support
|
||||
|
||||
Please read [this](https://github.com/igorpecovnik/lib/blob/master/.github/ISSUE_TEMPLATE.md) notice first before opening an issue.
|
||||
- Have you found a bug in the **build tools**?
|
||||
|
||||
# How to contribute?
|
||||
Try to recreate it with a clean build tools clone. Then search for [existing and closed issues](https://github.com/armbian/build/issues). If you don't find it there, [open a new issue](https://github.com/armbian/build/issues/new).
|
||||
|
||||
- Do you have troubles **elsewhere**?
|
||||
|
||||
Armbian is free software and provides **best effort help** through [community forums](https://forum.armbian.com/). If you can't find answer there and/or with help of [general project search](https://www.armbian.com/search) engine, consider [hiring an expert](https://www.debian.org/consultants/).
|
||||
|
||||
- [Fork](https://help.github.com/articles/fork-a-repo/) the project
|
||||
- Make one or more well commented and clean commits to the repository.
|
||||
- Perform a [pull request](https://help.github.com/articles/creating-a-pull-request/) in github's web interface.
|
||||
- Personalized support?
|
||||
|
||||
If it is a new feature request, don't start the coding first. Remember to [open an issue](https://guides.github.com/features/issues/) to discuss the new feature.
|
||||
It is limited to active project supporters and sponsors. The shortest way to become one and receive our attention is a four figure [donation to our non-profit project](https://www.armbian.com/donate).
|
||||
|
||||
If you are struggling, check [this detailed step by step guide on contributing](https://www.exchangecore.com/blog/contributing-concrete5-github/).
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## Where to get more info?
|
||||
## Contribute
|
||||
|
||||
- [Documentation](https://docs.armbian.com/Developer-Guide_Build-Preparation/ "Developer resources")
|
||||
- [Prebuilt images](https://www.armbian.com/download/ "Download section")
|
||||
- [Support forums](https://forum.armbian.com/ "Armbian support forum")
|
||||
- Adding a new feature?
|
||||
|
||||
You are welcome to suggest or contribute directly to the code with a pull request. In case your proposed changes are large, remember to discuss them prior to development.
|
||||
|
||||
- Join development?
|
||||
|
||||
Join regulars on their active missions, start maintaining any part of the code: patches, drivers or scripted applications like [armbian-config](https://github.com/armbian/config), address [community wishes](https://github.com/armbian/build/issues),
|
||||
|
||||
- Help elsewhere?
|
||||
|
||||
Maintain and develop [documentation](https://github.com/armbian/documentation), [CI](https://github.com/armbian/ci-testing-tools), [autotests](https://github.com/armbian/autotests), [seed torrents](https://forum.armbian.com/topic/4198-seed-our-torrents/), help on [forum moderating](https://forum.armbian.com/topic/12631-help-on-forum-moderating/), [project administration](https://forum.armbian.com/forum/39-armbian-project-administration/), [costs](https://www.armbian.com/donate).
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## Social
|
||||
|
||||
- [Participate in Armbian forums](https://forum.armbian.com),
|
||||
- Chat with fellow users on IRC [#armbian](https://webchat.freenode.net/?channels=armbian) on Freenode,
|
||||
- Follow [@armbian on Twitter](https://twitter.com/armbian) or [LinkedIN](https://www.linkedin.com/company/armbian).
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## Credits
|
||||
|
||||
- [Current and past contributors](https://github.com/armbian/build/graphs/contributors), our families and friends,
|
||||
- [Support staff that keeps forums usable](https://forum.armbian.com/members/2-moderators/),
|
||||
- [Individuals that help with their ideas](https://forum.armbian.com/), reports and [donations](https://www.armbian.com/donate).
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
## Sponsors
|
||||
|
||||
Most of the project is sponsored with a work done by volunteer collaborators, while some part of the project costs are being covered by the industry. We would not be able to get this far without their help.
|
||||
|
||||
[Do you want to see yourself below?](https://www.armbian.com/#contact)
|
||||
|
||||
<img src="https://www.armbian.com/wp-content/uploads/2018/03/orangepi-logo-150x150.png" alt="Armbian logo" width="144" height="144"><img src="https://www.armbian.com/wp-content/uploads/2018/02/friendlyelec-logo-150x150.png" alt="Armbian logo" width="144" height="144">
|
||||
<img src="https://www.armbian.com/wp-content/uploads/2018/03/kspace-150x150.png" width="144" height="144">
|
||||
<img src="https://www.armbian.com/wp-content/uploads/2018/02/olimex-logo-150x150.png" width="144" height="144">
|
||||
<img src="https://www.armbian.com/wp-content/uploads/2018/03/helios4_logo-150x150.png" width="144" height="144">
|
||||
|
||||
<p align=right><a href=#table-of-contents>⇧</a></p>
|
||||
|
||||
@ -2,5 +2,5 @@
|
||||
BOARD_NAME="Banana Pi M2U"
|
||||
BOARDFAMILY="sun8i"
|
||||
BOOTCONFIG="Bananapi_M2_Ultra_defconfig"
|
||||
OVERLAY_PREFIX=""
|
||||
OVERLAY_PREFIX="sun8i-r40"
|
||||
KERNEL_TARGET="current,dev"
|
||||
|
||||
@ -2,5 +2,6 @@
|
||||
BOARD_NAME="La Frite"
|
||||
BOARDFAMILY="meson-gxl"
|
||||
BOOTCONFIG="libretech-ac_defconfig"
|
||||
BOOT_FDT_FILE="amlogic/meson-gxl-s805x-libretech-ac.dtb"
|
||||
KERNEL_TARGET="current,dev"
|
||||
FULL_DESKTOP="yes"
|
||||
|
||||
@ -2,7 +2,5 @@
|
||||
BOARD_NAME="NanoPi M4V2"
|
||||
BOARDFAMILY="rk3399"
|
||||
BOOTCONFIG="nanopi-m4v2-rk3399_defconfig"
|
||||
MODULES=""
|
||||
MODULES_NEXT=""
|
||||
KERNEL_TARGET="legacy,current,dev"
|
||||
FULL_DESKTOP="yes"
|
||||
|
||||
@ -2,7 +2,5 @@
|
||||
BOARD_NAME="OrangePi 4"
|
||||
BOARDFAMILY="rk3399"
|
||||
BOOTCONFIG="orangepi-4-rk3399_defconfig"
|
||||
MODULES=""
|
||||
MODULES_NEXT=""
|
||||
KERNEL_TARGET="legacy,current,dev"
|
||||
FULL_DESKTOP="yes"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
BOARD_NAME="Pinebook Pro"
|
||||
BOARDFAMILY="rockchip64"
|
||||
BOOTCONFIG="pinebook_pro-rk3399_defconfig"
|
||||
BOOT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb"
|
||||
DESKTOP_AUTOLOGIN="no"
|
||||
KERNEL_TARGET="legacy,current,dev"
|
||||
FULL_DESKTOP="yes"
|
||||
|
||||
@ -2,13 +2,5 @@
|
||||
BOARD_NAME="ROC-RK3399-PC"
|
||||
BOARDFAMILY="rk3399"
|
||||
BOOTCONFIG="roc-pc-rk3399_defconfig"
|
||||
#
|
||||
MODULES=""
|
||||
MODULES_NEXT=""
|
||||
#
|
||||
KERNEL_TARGET="legacy,current,dev"
|
||||
CLI_TARGET="buster,bionic:default"
|
||||
DESKTOP_TARGET="buster,bionic:default"
|
||||
#
|
||||
CLI_BETA_TARGET="buster,bionic:dev"
|
||||
DESKTOP_BETA_TARGET=""
|
||||
FULL_DESKTOP="yes"
|
||||
|
||||
@ -2,5 +2,6 @@
|
||||
BOARD_NAME="xt-q8l-v10"
|
||||
BOARDFAMILY="rockchip"
|
||||
BOOTCONFIG="xt-q8l-v10-rk3288_defconfig"
|
||||
BOOT_FDT_FILE="rk3288-xt-q8l-v10.dtb"
|
||||
MODULES_LEGACY="hci_uart rfcomm hidp"
|
||||
KERNEL_TARGET="legacy,current,dev"
|
||||
|
||||
@ -2,6 +2,6 @@
|
||||
BOARD_NAME="Z28 PRO"
|
||||
BOARDFAMILY="rockchip64"
|
||||
BOOTCONFIG="rock64-rk3328_defconfig"
|
||||
MODULES_LEGACY=""
|
||||
BOOT_FDT_FILE="rockchip/rk3328-z28pro.dtb"
|
||||
KERNEL_TARGET="legacy,current"
|
||||
FULL_DESKTOP="yes"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 5.4.6 Kernel Configuration
|
||||
# Linux/arm 5.4.19 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@ -908,6 +908,7 @@ CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
CONFIG_HAVE_EXIT_THREAD=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS=8
|
||||
CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
|
||||
CONFIG_HAVE_COPY_THREAD_TLS=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
|
||||
@ -4451,7 +4451,6 @@ CONFIG_LEDS_TRIGGER_AUDIO=m
|
||||
# CONFIG_INFINIBAND is not set
|
||||
CONFIG_EDAC_ATOMIC_SCRUB=y
|
||||
CONFIG_EDAC_SUPPORT=y
|
||||
# CONFIG_EDAC is not set
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 4.14.167 Kernel Configuration
|
||||
# Linux/arm 4.14.170 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 5.5.1 Kernel Configuration
|
||||
# Linux/arm 5.4.18 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@ -21,6 +21,7 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y
|
||||
#
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# CONFIG_COMPILE_TEST is not set
|
||||
# CONFIG_HEADER_TEST is not set
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_BUILD_SALT=""
|
||||
@ -178,6 +179,7 @@ CONFIG_UID16=y
|
||||
CONFIG_MULTIUSER=y
|
||||
# CONFIG_SGETMASK_SYSCALL is not set
|
||||
CONFIG_SYSFS_SYSCALL=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_POSIX_TIMERS=y
|
||||
CONFIG_PRINTK=y
|
||||
@ -501,6 +503,7 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
#
|
||||
CONFIG_CPUFREQ_DT=m
|
||||
CONFIG_CPUFREQ_DT_PLATDEV=y
|
||||
CONFIG_ARM_BIG_LITTLE_CPUFREQ=m
|
||||
# CONFIG_QORIQ_CPUFREQ is not set
|
||||
# end of CPU Frequency scaling
|
||||
|
||||
@ -592,9 +595,7 @@ CONFIG_CRYPTO_GHASH_ARM_CE=m
|
||||
CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m
|
||||
CONFIG_CRYPTO_CRC32_ARM_CE=m
|
||||
CONFIG_CRYPTO_CHACHA20_NEON=m
|
||||
CONFIG_CRYPTO_POLY1305_ARM=m
|
||||
CONFIG_CRYPTO_NHPOLY1305_NEON=m
|
||||
CONFIG_CRYPTO_CURVE25519_NEON=m
|
||||
# CONFIG_VIRTUALIZATION is not set
|
||||
|
||||
#
|
||||
@ -647,6 +648,7 @@ CONFIG_HAVE_COPY_THREAD_TLS=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_64BIT_TIME=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
@ -655,6 +657,7 @@ CONFIG_STRICT_KERNEL_RWX=y
|
||||
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_STRICT_MODULE_RWX=y
|
||||
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
# CONFIG_LOCK_EVENT_COUNTS is not set
|
||||
|
||||
#
|
||||
@ -684,7 +687,6 @@ CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODULES_TREE_LOOKUP=y
|
||||
CONFIG_BLOCK=y
|
||||
CONFIG_BLK_SCSI_REQUEST=y
|
||||
CONFIG_BLK_CGROUP_RWSTAT=y
|
||||
CONFIG_BLK_DEV_BSG=y
|
||||
# CONFIG_BLK_DEV_BSGLIB is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
@ -810,7 +812,6 @@ CONFIG_UNIX_SCM=y
|
||||
CONFIG_UNIX_DIAG=m
|
||||
CONFIG_TLS=m
|
||||
# CONFIG_TLS_DEVICE is not set
|
||||
# CONFIG_TLS_TOE is not set
|
||||
CONFIG_XFRM=y
|
||||
CONFIG_XFRM_OFFLOAD=y
|
||||
CONFIG_XFRM_ALGO=m
|
||||
@ -1299,7 +1300,6 @@ CONFIG_RDS_TCP=m
|
||||
# CONFIG_RDS_DEBUG is not set
|
||||
CONFIG_TIPC=m
|
||||
CONFIG_TIPC_MEDIA_UDP=y
|
||||
CONFIG_TIPC_CRYPTO=y
|
||||
CONFIG_TIPC_DIAG=m
|
||||
CONFIG_ATM=m
|
||||
CONFIG_ATM_CLIP=m
|
||||
@ -1329,7 +1329,6 @@ CONFIG_NET_DSA_TAG_DSA=m
|
||||
CONFIG_NET_DSA_TAG_EDSA=m
|
||||
CONFIG_NET_DSA_TAG_MTK=m
|
||||
CONFIG_NET_DSA_TAG_KSZ=m
|
||||
CONFIG_NET_DSA_TAG_OCELOT=m
|
||||
CONFIG_NET_DSA_TAG_QCA=m
|
||||
CONFIG_NET_DSA_TAG_LAN9303=m
|
||||
CONFIG_NET_DSA_TAG_SJA1105=m
|
||||
@ -1711,7 +1710,6 @@ CONFIG_FW_LOADER=y
|
||||
CONFIG_EXTRA_FIRMWARE=""
|
||||
# CONFIG_FW_LOADER_USER_HELPER is not set
|
||||
# CONFIG_FW_LOADER_COMPRESS is not set
|
||||
CONFIG_FW_CACHE=y
|
||||
# end of Firmware loader
|
||||
|
||||
CONFIG_WANT_DEV_COREDUMP=y
|
||||
@ -1843,7 +1841,39 @@ CONFIG_EEPROM_93CX6=m
|
||||
#
|
||||
# Intel MIC & related support
|
||||
#
|
||||
|
||||
#
|
||||
# Intel MIC Bus Driver
|
||||
#
|
||||
|
||||
#
|
||||
# SCIF Bus Driver
|
||||
#
|
||||
|
||||
#
|
||||
# VOP Bus Driver
|
||||
#
|
||||
# CONFIG_VOP_BUS is not set
|
||||
|
||||
#
|
||||
# Intel MIC Host Driver
|
||||
#
|
||||
|
||||
#
|
||||
# Intel MIC Card Driver
|
||||
#
|
||||
|
||||
#
|
||||
# SCIF Driver
|
||||
#
|
||||
|
||||
#
|
||||
# Intel MIC Coprocessor State Management (COSM) Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# VOP Driver
|
||||
#
|
||||
# end of Intel MIC & related support
|
||||
|
||||
# CONFIG_ECHO is not set
|
||||
@ -1965,6 +1995,10 @@ CONFIG_ATM_DRIVERS=y
|
||||
# CONFIG_ATM_DUMMY is not set
|
||||
# CONFIG_ATM_TCP is not set
|
||||
|
||||
#
|
||||
# CAIF transport drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Distributed Switch Architecture drivers
|
||||
#
|
||||
@ -2077,6 +2111,7 @@ CONFIG_ADIN_PHY=m
|
||||
# CONFIG_AMD_PHY is not set
|
||||
# CONFIG_AQUANTIA_PHY is not set
|
||||
CONFIG_AX88796B_PHY=m
|
||||
# CONFIG_AT803X_PHY is not set
|
||||
CONFIG_BCM7XXX_PHY=m
|
||||
# CONFIG_BCM87XX_PHY is not set
|
||||
CONFIG_BCM_NET_PHYLIB=m
|
||||
@ -2088,7 +2123,6 @@ CONFIG_BCM_NET_PHYLIB=m
|
||||
CONFIG_DP83TC811_PHY=m
|
||||
# CONFIG_DP83848_PHY is not set
|
||||
# CONFIG_DP83867_PHY is not set
|
||||
CONFIG_DP83869_PHY=m
|
||||
CONFIG_FIXED_PHY=y
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_INTEL_XWAY_PHY is not set
|
||||
@ -2102,7 +2136,6 @@ CONFIG_MICROCHIP_T1_PHY=m
|
||||
# CONFIG_MICROSEMI_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_NXP_TJA11XX_PHY is not set
|
||||
# CONFIG_AT803X_PHY is not set
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
CONFIG_REALTEK_PHY=m
|
||||
# CONFIG_RENESAS_PHY is not set
|
||||
@ -2786,13 +2819,10 @@ CONFIG_PPS_CLIENT_GPIO=m
|
||||
#
|
||||
CONFIG_PTP_1588_CLOCK=y
|
||||
CONFIG_DP83640_PHY=m
|
||||
CONFIG_PTP_1588_CLOCK_IDTCM=m
|
||||
# end of PTP clock support
|
||||
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_GENERIC_PINCTRL_GROUPS=y
|
||||
CONFIG_PINMUX=y
|
||||
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
|
||||
CONFIG_PINCONF=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
# CONFIG_DEBUG_PINCTRL is not set
|
||||
@ -2805,7 +2835,6 @@ CONFIG_PINCTRL_STMFX=m
|
||||
# CONFIG_PINCTRL_RK805 is not set
|
||||
# CONFIG_PINCTRL_OCELOT is not set
|
||||
CONFIG_PINCTRL_MADERA=m
|
||||
CONFIG_PINCTRL_EQUILIBRIUM=m
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIOLIB_FASTPATH_LIMIT=512
|
||||
@ -2901,7 +2930,6 @@ CONFIG_W1_SLAVE_DS2413=m
|
||||
CONFIG_W1_SLAVE_DS2406=m
|
||||
CONFIG_W1_SLAVE_DS2423=m
|
||||
# CONFIG_W1_SLAVE_DS2805 is not set
|
||||
CONFIG_W1_SLAVE_DS2430=m
|
||||
CONFIG_W1_SLAVE_DS2431=m
|
||||
CONFIG_W1_SLAVE_DS2433=m
|
||||
# CONFIG_W1_SLAVE_DS2433_CRC is not set
|
||||
@ -3009,9 +3037,6 @@ CONFIG_SENSORS_JC42=m
|
||||
CONFIG_SENSORS_POWR1220=m
|
||||
CONFIG_SENSORS_LINEAGE=m
|
||||
CONFIG_SENSORS_LTC2945=m
|
||||
CONFIG_SENSORS_LTC2947=m
|
||||
CONFIG_SENSORS_LTC2947_I2C=m
|
||||
CONFIG_SENSORS_LTC2947_SPI=m
|
||||
CONFIG_SENSORS_LTC2990=m
|
||||
CONFIG_SENSORS_LTC4151=m
|
||||
CONFIG_SENSORS_LTC4215=m
|
||||
@ -3092,7 +3117,6 @@ CONFIG_SENSORS_TMP103=m
|
||||
# CONFIG_SENSORS_TMP108 is not set
|
||||
CONFIG_SENSORS_TMP401=m
|
||||
CONFIG_SENSORS_TMP421=m
|
||||
CONFIG_SENSORS_TMP513=m
|
||||
CONFIG_SENSORS_VT1211=m
|
||||
CONFIG_SENSORS_W83773G=m
|
||||
CONFIG_SENSORS_W83781D=m
|
||||
@ -3114,10 +3138,12 @@ CONFIG_THERMAL_OF=y
|
||||
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
|
||||
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
|
||||
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
|
||||
# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
|
||||
# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
|
||||
CONFIG_THERMAL_GOV_STEP_WISE=y
|
||||
# CONFIG_THERMAL_GOV_BANG_BANG is not set
|
||||
# CONFIG_THERMAL_GOV_USER_SPACE is not set
|
||||
# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
|
||||
CONFIG_CPU_THERMAL=y
|
||||
# CONFIG_CLOCK_THERMAL is not set
|
||||
# CONFIG_DEVFREQ_THERMAL is not set
|
||||
@ -3721,11 +3747,9 @@ CONFIG_VIDEO_THS8200=m
|
||||
#
|
||||
CONFIG_VIDEO_APTINA_PLL=m
|
||||
CONFIG_VIDEO_SMIAPP_PLL=m
|
||||
CONFIG_VIDEO_HI556=m
|
||||
# CONFIG_VIDEO_IMX214 is not set
|
||||
# CONFIG_VIDEO_IMX258 is not set
|
||||
CONFIG_VIDEO_IMX274=m
|
||||
CONFIG_VIDEO_IMX290=m
|
||||
# CONFIG_VIDEO_IMX319 is not set
|
||||
# CONFIG_VIDEO_IMX355 is not set
|
||||
CONFIG_VIDEO_OV2640=m
|
||||
@ -4048,12 +4072,12 @@ CONFIG_DRM_DEBUG_MM=y
|
||||
# CONFIG_DRM_DEBUG_SELFTEST is not set
|
||||
CONFIG_DRM_KMS_HELPER=y
|
||||
CONFIG_DRM_KMS_FB_HELPER=y
|
||||
# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
CONFIG_DRM_FBDEV_OVERALLOC=100
|
||||
# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
|
||||
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
|
||||
# CONFIG_DRM_DP_CEC is not set
|
||||
CONFIG_DRM_TTM=m
|
||||
CONFIG_DRM_GEM_CMA_HELPER=y
|
||||
CONFIG_DRM_KMS_CMA_HELPER=y
|
||||
CONFIG_DRM_GEM_SHMEM_HELPER=y
|
||||
@ -4074,7 +4098,6 @@ CONFIG_DRM_I2C_NXP_TDA9950=m
|
||||
# CONFIG_DRM_HDLCD is not set
|
||||
# CONFIG_DRM_MALI_DISPLAY is not set
|
||||
CONFIG_DRM_KOMEDA=m
|
||||
# CONFIG_DRM_KOMEDA_ERROR_PRINT is not set
|
||||
# end of ARM devices
|
||||
|
||||
#
|
||||
@ -4240,7 +4263,7 @@ CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
CONFIG_BACKLIGHT_GENERIC=y
|
||||
CONFIG_BACKLIGHT_PWM=y
|
||||
CONFIG_BACKLIGHT_QCOM_WLED=m
|
||||
CONFIG_BACKLIGHT_PM8941_WLED=m
|
||||
# CONFIG_BACKLIGHT_ADP8860 is not set
|
||||
# CONFIG_BACKLIGHT_ADP8870 is not set
|
||||
# CONFIG_BACKLIGHT_LM3630A is not set
|
||||
@ -4382,9 +4405,6 @@ CONFIG_SND_SOC_I2C_AND_SPI=m
|
||||
# CONFIG_SND_SOC_ADAU1761_I2C is not set
|
||||
# CONFIG_SND_SOC_ADAU1761_SPI is not set
|
||||
# CONFIG_SND_SOC_ADAU7002 is not set
|
||||
CONFIG_SND_SOC_ADAU7118=m
|
||||
CONFIG_SND_SOC_ADAU7118_HW=m
|
||||
CONFIG_SND_SOC_ADAU7118_I2C=m
|
||||
# CONFIG_SND_SOC_AK4104 is not set
|
||||
# CONFIG_SND_SOC_AK4118 is not set
|
||||
CONFIG_SND_SOC_AK4458=m
|
||||
@ -4418,7 +4438,6 @@ CONFIG_SND_SOC_CS4341=m
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CS53L30 is not set
|
||||
# CONFIG_SND_SOC_CX2072X is not set
|
||||
CONFIG_SND_SOC_DA7213=m
|
||||
# CONFIG_SND_SOC_DMIC is not set
|
||||
CONFIG_SND_SOC_HDMI_CODEC=m
|
||||
# CONFIG_SND_SOC_ES7134 is not set
|
||||
@ -4468,8 +4487,6 @@ CONFIG_SND_SOC_SSM2305=m
|
||||
# CONFIG_SND_SOC_STA350 is not set
|
||||
# CONFIG_SND_SOC_STI_SAS is not set
|
||||
# CONFIG_SND_SOC_TAS2552 is not set
|
||||
CONFIG_SND_SOC_TAS2562=m
|
||||
CONFIG_SND_SOC_TAS2770=m
|
||||
# CONFIG_SND_SOC_TAS5086 is not set
|
||||
# CONFIG_SND_SOC_TAS571X is not set
|
||||
# CONFIG_SND_SOC_TAS5720 is not set
|
||||
@ -4948,7 +4965,6 @@ CONFIG_MMC_TEST=y
|
||||
# CONFIG_MMC_DEBUG is not set
|
||||
# CONFIG_MMC_ARMMMCI is not set
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_IO_ACCESSORS=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
# CONFIG_MMC_SDHCI_OF_ARASAN is not set
|
||||
CONFIG_MMC_SDHCI_OF_ASPEED=m
|
||||
@ -4956,7 +4972,6 @@ CONFIG_MMC_SDHCI_OF_ASPEED=m
|
||||
CONFIG_MMC_SDHCI_OF_DWCMSHC=m
|
||||
CONFIG_MMC_SDHCI_CADENCE=m
|
||||
# CONFIG_MMC_SDHCI_F_SDH30 is not set
|
||||
CONFIG_MMC_SDHCI_MILBEAUT=m
|
||||
# CONFIG_MMC_SPI is not set
|
||||
CONFIG_MMC_DW=y
|
||||
CONFIG_MMC_DW_PLTFM=y
|
||||
@ -4988,7 +5003,6 @@ CONFIG_LEDS_CLASS=y
|
||||
# CONFIG_LEDS_BCM6358 is not set
|
||||
# CONFIG_LEDS_CPCAP is not set
|
||||
CONFIG_LEDS_CR0014114=m
|
||||
CONFIG_LEDS_EL15203000=m
|
||||
# CONFIG_LEDS_LM3530 is not set
|
||||
CONFIG_LEDS_LM3532=m
|
||||
# CONFIG_LEDS_LM3642 is not set
|
||||
@ -5194,7 +5208,6 @@ CONFIG_PL330_DMA=y
|
||||
# CONFIG_QCOM_HIDMA_MGMT is not set
|
||||
# CONFIG_QCOM_HIDMA is not set
|
||||
# CONFIG_DW_DMAC is not set
|
||||
CONFIG_SF_PDMA=m
|
||||
|
||||
#
|
||||
# DMA Clients
|
||||
@ -5335,7 +5348,6 @@ CONFIG_FB_TFT_PCD8544=m
|
||||
CONFIG_FB_TFT_RA8875=m
|
||||
CONFIG_FB_TFT_S6D02A1=m
|
||||
CONFIG_FB_TFT_S6D1121=m
|
||||
CONFIG_FB_TFT_SEPS525=m
|
||||
CONFIG_FB_TFT_SH1106=m
|
||||
CONFIG_FB_TFT_SSD1289=m
|
||||
CONFIG_FB_TFT_SSD1305=m
|
||||
@ -5376,13 +5388,13 @@ CONFIG_HMS_PROFINET=m
|
||||
# CONFIG_USB_WUSB_CBAF is not set
|
||||
# CONFIG_UWB is not set
|
||||
CONFIG_EXFAT_FS=m
|
||||
CONFIG_EXFAT_DONT_MOUNT_VFAT=y
|
||||
CONFIG_EXFAT_DISCARD=y
|
||||
# CONFIG_EXFAT_DELAYED_SYNC is not set
|
||||
# CONFIG_EXFAT_KERNEL_DEBUG is not set
|
||||
# CONFIG_EXFAT_DEBUG_MSG is not set
|
||||
CONFIG_EXFAT_DEFAULT_CODEPAGE=437
|
||||
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
|
||||
CONFIG_WFX=m
|
||||
# CONFIG_GOLDFISH is not set
|
||||
CONFIG_MFD_CROS_EC=y
|
||||
CONFIG_CHROME_PLATFORMS=y
|
||||
@ -5394,7 +5406,6 @@ CONFIG_CROS_EC_CHARDEV=m
|
||||
CONFIG_CROS_EC_LIGHTBAR=m
|
||||
CONFIG_CROS_EC_VBC=m
|
||||
CONFIG_CROS_EC_DEBUGFS=m
|
||||
CONFIG_CROS_EC_SENSORHUB=m
|
||||
CONFIG_CROS_EC_SYSFS=m
|
||||
CONFIG_CROS_USBPD_LOGGER=m
|
||||
# CONFIG_MELLANOX_PLATFORM is not set
|
||||
@ -5496,7 +5507,6 @@ CONFIG_ROCKCHIP_IOMMU=y
|
||||
#
|
||||
# NXP/Freescale QorIQ SoC drivers
|
||||
#
|
||||
# CONFIG_FSL_RCPM is not set
|
||||
# end of NXP/Freescale QorIQ SoC drivers
|
||||
|
||||
#
|
||||
@ -5594,7 +5604,6 @@ CONFIG_HID_SENSOR_ACCEL_3D=m
|
||||
# CONFIG_AD7124 is not set
|
||||
# CONFIG_AD7266 is not set
|
||||
# CONFIG_AD7291 is not set
|
||||
CONFIG_AD7292=m
|
||||
# CONFIG_AD7298 is not set
|
||||
# CONFIG_AD7476 is not set
|
||||
CONFIG_AD7606=m
|
||||
@ -5803,9 +5812,6 @@ CONFIG_ADIS16460=m
|
||||
# CONFIG_ADIS16480 is not set
|
||||
# CONFIG_BMI160_I2C is not set
|
||||
# CONFIG_BMI160_SPI is not set
|
||||
CONFIG_FXOS8700=m
|
||||
CONFIG_FXOS8700_I2C=m
|
||||
CONFIG_FXOS8700_SPI=m
|
||||
# CONFIG_KMX61 is not set
|
||||
# CONFIG_INV_MPU6050_I2C is not set
|
||||
# CONFIG_INV_MPU6050_SPI is not set
|
||||
@ -5819,7 +5825,6 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y
|
||||
# Light sensors
|
||||
#
|
||||
# CONFIG_ADJD_S311 is not set
|
||||
CONFIG_ADUX1020=m
|
||||
# CONFIG_AL3320A is not set
|
||||
# CONFIG_APDS9300 is not set
|
||||
# CONFIG_APDS9960 is not set
|
||||
@ -5858,7 +5863,6 @@ CONFIG_TSL2772=m
|
||||
# CONFIG_US5182D is not set
|
||||
# CONFIG_VCNL4000 is not set
|
||||
# CONFIG_VCNL4035 is not set
|
||||
CONFIG_VEML6030=m
|
||||
# CONFIG_VEML6070 is not set
|
||||
# CONFIG_VL6180 is not set
|
||||
# CONFIG_ZOPT2201 is not set
|
||||
@ -5971,7 +5975,6 @@ CONFIG_MB1232=m
|
||||
#
|
||||
# Temperature sensors
|
||||
#
|
||||
CONFIG_LTC2983=m
|
||||
# CONFIG_MAXIM_THERMOCOUPLE is not set
|
||||
CONFIG_HID_SENSOR_TEMP=m
|
||||
# CONFIG_MLX90614 is not set
|
||||
@ -6024,7 +6027,6 @@ CONFIG_PHY_MAPPHONE_MDM6600=m
|
||||
CONFIG_PHY_ROCKCHIP_DP=y
|
||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set
|
||||
CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m
|
||||
# CONFIG_PHY_ROCKCHIP_PCIE is not set
|
||||
# CONFIG_PHY_ROCKCHIP_TYPEC is not set
|
||||
CONFIG_PHY_ROCKCHIP_USB=y
|
||||
@ -6057,7 +6059,6 @@ CONFIG_DAX=y
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_ROCKCHIP_OTP=m
|
||||
|
||||
#
|
||||
# HW tracing support
|
||||
@ -6275,6 +6276,24 @@ CONFIG_PSTORE_RAM=y
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
# CONFIG_EROFS_FS is not set
|
||||
CONFIG_AUFS_FS=m
|
||||
CONFIG_AUFS_BRANCH_MAX_127=y
|
||||
# CONFIG_AUFS_BRANCH_MAX_511 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_1023 is not set
|
||||
# CONFIG_AUFS_BRANCH_MAX_32767 is not set
|
||||
CONFIG_AUFS_SBILIST=y
|
||||
# CONFIG_AUFS_HNOTIFY is not set
|
||||
# CONFIG_AUFS_EXPORT is not set
|
||||
# CONFIG_AUFS_XATTR is not set
|
||||
# CONFIG_AUFS_FHSM is not set
|
||||
# CONFIG_AUFS_RDU is not set
|
||||
# CONFIG_AUFS_DIRREN is not set
|
||||
# CONFIG_AUFS_SHWH is not set
|
||||
# CONFIG_AUFS_BR_RAMFS is not set
|
||||
# CONFIG_AUFS_BR_FUSE is not set
|
||||
CONFIG_AUFS_BR_HFSPLUS=y
|
||||
CONFIG_AUFS_BDEV_LOOP=y
|
||||
# CONFIG_AUFS_DEBUG is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V2=y
|
||||
@ -6384,7 +6403,6 @@ CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
# CONFIG_DLM is not set
|
||||
# CONFIG_UNICODE is not set
|
||||
CONFIG_IO_WQ=y
|
||||
# end of File systems
|
||||
|
||||
#
|
||||
@ -6452,8 +6470,8 @@ CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_ALGAPI2=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_SKCIPHER=y
|
||||
CONFIG_CRYPTO_SKCIPHER2=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_BLKCIPHER2=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
@ -6486,7 +6504,6 @@ CONFIG_CRYPTO_DH=m
|
||||
CONFIG_CRYPTO_ECC=y
|
||||
CONFIG_CRYPTO_ECDH=y
|
||||
CONFIG_CRYPTO_ECRDSA=m
|
||||
CONFIG_CRYPTO_CURVE25519=m
|
||||
|
||||
#
|
||||
# Authenticated Encryption with Associated Data
|
||||
@ -6530,8 +6547,6 @@ CONFIG_CRYPTO_VMAC=m
|
||||
CONFIG_CRYPTO_CRC32C=y
|
||||
CONFIG_CRYPTO_CRC32=y
|
||||
CONFIG_CRYPTO_XXHASH=y
|
||||
CONFIG_CRYPTO_BLAKE2B=y
|
||||
CONFIG_CRYPTO_BLAKE2S=m
|
||||
CONFIG_CRYPTO_CRCT10DIF=y
|
||||
CONFIG_CRYPTO_GHASH=y
|
||||
CONFIG_CRYPTO_POLY1305=m
|
||||
@ -6543,6 +6558,7 @@ CONFIG_CRYPTO_RMD160=m
|
||||
CONFIG_CRYPTO_RMD256=m
|
||||
CONFIG_CRYPTO_RMD320=m
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_SHA3=m
|
||||
@ -6554,9 +6570,11 @@ CONFIG_CRYPTO_WP512=m
|
||||
#
|
||||
# Ciphers
|
||||
#
|
||||
CONFIG_CRYPTO_LIB_AES=y
|
||||
CONFIG_CRYPTO_AES=y
|
||||
CONFIG_CRYPTO_AES_TI=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_LIB_ARC4=y
|
||||
CONFIG_CRYPTO_ARC4=y
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_BLOWFISH_COMMON=m
|
||||
@ -6564,6 +6582,7 @@ CONFIG_CRYPTO_CAMELLIA=m
|
||||
CONFIG_CRYPTO_CAST_COMMON=m
|
||||
CONFIG_CRYPTO_CAST5=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
CONFIG_CRYPTO_LIB_DES=y
|
||||
CONFIG_CRYPTO_DES=y
|
||||
CONFIG_CRYPTO_FCRYPT=m
|
||||
CONFIG_CRYPTO_KHAZAD=m
|
||||
@ -6603,27 +6622,6 @@ CONFIG_CRYPTO_USER_API_RNG=m
|
||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||
# CONFIG_CRYPTO_STATS is not set
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
|
||||
#
|
||||
# Crypto library routines
|
||||
#
|
||||
CONFIG_CRYPTO_LIB_AES=y
|
||||
CONFIG_CRYPTO_LIB_ARC4=y
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=m
|
||||
CONFIG_CRYPTO_LIB_BLAKE2S=m
|
||||
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m
|
||||
CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m
|
||||
CONFIG_CRYPTO_LIB_CHACHA=m
|
||||
CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=m
|
||||
CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m
|
||||
CONFIG_CRYPTO_LIB_CURVE25519=m
|
||||
CONFIG_CRYPTO_LIB_DES=y
|
||||
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9
|
||||
CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=m
|
||||
CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m
|
||||
CONFIG_CRYPTO_LIB_POLY1305=m
|
||||
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
|
||||
CONFIG_CRYPTO_LIB_SHA256=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set
|
||||
# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set
|
||||
@ -6631,8 +6629,6 @@ CONFIG_CRYPTO_DEV_ROCKCHIP=m
|
||||
CONFIG_CRYPTO_DEV_VIRTIO=m
|
||||
CONFIG_CRYPTO_DEV_SAFEXCEL=m
|
||||
CONFIG_CRYPTO_DEV_CCREE=m
|
||||
CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m
|
||||
# CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set
|
||||
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
||||
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
|
||||
CONFIG_X509_CERTIFICATE_PARSER=y
|
||||
@ -6729,7 +6725,6 @@ CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_DMA_DECLARE_COHERENT=y
|
||||
CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
|
||||
CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y
|
||||
CONFIG_DMA_NONCOHERENT_MMAP=y
|
||||
CONFIG_DMA_REMAP=y
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
@ -6755,9 +6750,6 @@ CONFIG_CLZ_TAB=y
|
||||
CONFIG_MPILIB=y
|
||||
CONFIG_LIBFDT=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_HAVE_GENERIC_VDSO=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_VDSO_32=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
@ -6782,8 +6774,6 @@ CONFIG_CONSOLE_LOGLEVEL_QUIET=4
|
||||
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_DYNAMIC_DEBUG is not set
|
||||
CONFIG_SYMBOLIC_ERRNAME=y
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
# end of printk and dmesg options
|
||||
|
||||
#
|
||||
@ -6794,6 +6784,7 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_FRAME_WARN=1024
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
# CONFIG_READABLE_ASM is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_INSTALL is not set
|
||||
CONFIG_OPTIMIZE_INLINING=y
|
||||
# CONFIG_DEBUG_SECTION_MISMATCH is not set
|
||||
@ -6803,19 +6794,9 @@ CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
|
||||
# end of Compile-time checks and compiler options
|
||||
|
||||
#
|
||||
# Generic Kernel Debugging Instruments
|
||||
#
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0
|
||||
CONFIG_MAGIC_SYSRQ_SERIAL=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
# CONFIG_UBSAN is not set
|
||||
CONFIG_UBSAN_ALIGNMENT=y
|
||||
# end of Generic Kernel Debugging Instruments
|
||||
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_MISC=y
|
||||
|
||||
@ -6834,7 +6815,6 @@ CONFIG_PAGE_EXTENSION=y
|
||||
CONFIG_HAVE_DEBUG_KMEMLEAK=y
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_SCHED_STACK_END_CHECK is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
|
||||
# CONFIG_DEBUG_VIRTUAL is not set
|
||||
@ -6845,30 +6825,29 @@ CONFIG_CC_HAS_KASAN_GENERIC=y
|
||||
CONFIG_KASAN_STACK=1
|
||||
# end of Memory Debugging
|
||||
|
||||
CONFIG_ARCH_HAS_KCOV=y
|
||||
CONFIG_CC_HAS_SANCOV_TRACE_PC=y
|
||||
# CONFIG_KCOV is not set
|
||||
# CONFIG_DEBUG_SHIRQ is not set
|
||||
|
||||
#
|
||||
# Debug Oops, Lockups and Hangs
|
||||
# Debug Lockups and Hangs
|
||||
#
|
||||
# CONFIG_PANIC_ON_OOPS is not set
|
||||
CONFIG_PANIC_ON_OOPS_VALUE=0
|
||||
CONFIG_PANIC_TIMEOUT=0
|
||||
# CONFIG_SOFTLOCKUP_DETECTOR is not set
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
|
||||
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
|
||||
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1
|
||||
# CONFIG_WQ_WATCHDOG is not set
|
||||
# end of Debug Oops, Lockups and Hangs
|
||||
# end of Debug Lockups and Hangs
|
||||
|
||||
#
|
||||
# Scheduler Debugging
|
||||
#
|
||||
# CONFIG_PANIC_ON_OOPS is not set
|
||||
CONFIG_PANIC_ON_OOPS_VALUE=0
|
||||
CONFIG_PANIC_TIMEOUT=0
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SCHED_INFO=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# end of Scheduler Debugging
|
||||
|
||||
# CONFIG_SCHED_STACK_END_CHECK is not set
|
||||
# CONFIG_DEBUG_TIMEKEEPING is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
|
||||
@ -6893,17 +6872,11 @@ CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_STACKTRACE=y
|
||||
# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
|
||||
#
|
||||
# Debug kernel data structures
|
||||
#
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_DEBUG_PLIST is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
|
||||
# end of Debug kernel data structures
|
||||
|
||||
CONFIG_DEBUG_CREDENTIALS=y
|
||||
|
||||
#
|
||||
@ -6919,6 +6892,8 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
|
||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
|
||||
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_NOP_TRACER=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
@ -6956,20 +6931,22 @@ CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
# CONFIG_FUNCTION_PROFILER is not set
|
||||
CONFIG_FTRACE_MCOUNT_RECORD=y
|
||||
# CONFIG_FTRACE_STARTUP_TEST is not set
|
||||
# CONFIG_TRACE_EVENT_INJECT is not set
|
||||
# CONFIG_TRACEPOINT_BENCHMARK is not set
|
||||
# CONFIG_RING_BUFFER_BENCHMARK is not set
|
||||
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
|
||||
# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
|
||||
# CONFIG_TRACE_EVAL_MAP_FILE is not set
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
# CONFIG_MEMTEST is not set
|
||||
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
# CONFIG_UBSAN is not set
|
||||
CONFIG_UBSAN_ALIGNMENT=y
|
||||
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
# CONFIG_IO_STRICT_DEVMEM is not set
|
||||
|
||||
#
|
||||
# arm Debugging
|
||||
#
|
||||
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
||||
# CONFIG_DEBUG_WX is not set
|
||||
CONFIG_UNWINDER_FRAME_POINTER=y
|
||||
@ -6979,18 +6956,4 @@ CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
|
||||
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
# CONFIG_CORESIGHT is not set
|
||||
# end of arm Debugging
|
||||
|
||||
#
|
||||
# Kernel Testing and Coverage
|
||||
#
|
||||
# CONFIG_KUNIT is not set
|
||||
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
CONFIG_ARCH_HAS_KCOV=y
|
||||
CONFIG_CC_HAS_SANCOV_TRACE_PC=y
|
||||
# CONFIG_KCOV is not set
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
# CONFIG_MEMTEST is not set
|
||||
# end of Kernel Testing and Coverage
|
||||
# end of Kernel hacking
|
||||
|
||||
@ -1 +0,0 @@
|
||||
linux-rockchip-current.config
|
||||
6996
config/kernel/linux-rockchip-dev.config
Normal file
6996
config/kernel/linux-rockchip-dev.config
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 5.4.13 Kernel Configuration
|
||||
# Linux/arm64 5.4.19 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@ -1465,20 +1465,29 @@ CONFIG_BT_LEDS=y
|
||||
#
|
||||
# Bluetooth device drivers
|
||||
#
|
||||
CONFIG_BT_BCM=m
|
||||
# CONFIG_BT_HCIBTUSB is not set
|
||||
# CONFIG_BT_HCIBTSDIO is not set
|
||||
CONFIG_BT_HCIUART=m
|
||||
# CONFIG_BT_HCIUART_H4 is not set
|
||||
CONFIG_BT_HCIUART_SERDEV=y
|
||||
CONFIG_BT_HCIUART_H4=y
|
||||
CONFIG_BT_HCIUART_NOKIA=m
|
||||
# CONFIG_BT_HCIUART_BCSP is not set
|
||||
# CONFIG_BT_HCIUART_ATH3K is not set
|
||||
# CONFIG_BT_HCIUART_LL is not set
|
||||
# CONFIG_BT_HCIUART_3WIRE is not set
|
||||
# CONFIG_BT_HCIUART_INTEL is not set
|
||||
# CONFIG_BT_HCIUART_BCM is not set
|
||||
# CONFIG_BT_HCIUART_QCA is not set
|
||||
# CONFIG_BT_HCIUART_AG6XX is not set
|
||||
# CONFIG_BT_HCIUART_MRVL is not set
|
||||
# CONFIG_BT_HCIBCM203X is not set
|
||||
# CONFIG_BT_HCIBPA10X is not set
|
||||
# CONFIG_BT_HCIBFUSB is not set
|
||||
# CONFIG_BT_HCIVHCI is not set
|
||||
# CONFIG_BT_MRVL is not set
|
||||
CONFIG_BT_MTKSDIO=m
|
||||
CONFIG_BT_MTKUART=m
|
||||
# end of Bluetooth device drivers
|
||||
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
@ -2370,7 +2379,9 @@ CONFIG_NET_VENDOR_QLOGIC=y
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
# CONFIG_QED is not set
|
||||
CONFIG_NET_VENDOR_QUALCOMM=y
|
||||
CONFIG_QCA7000=m
|
||||
# CONFIG_QCA7000_SPI is not set
|
||||
CONFIG_QCA7000_UART=m
|
||||
CONFIG_QCOM_EMAC=m
|
||||
# CONFIG_RMNET is not set
|
||||
CONFIG_NET_VENDOR_RDC=y
|
||||
@ -2898,6 +2909,7 @@ CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
|
||||
# CONFIG_INPUT_DRV260X_HAPTICS is not set
|
||||
# CONFIG_INPUT_DRV2665_HAPTICS is not set
|
||||
# CONFIG_INPUT_DRV2667_HAPTICS is not set
|
||||
CONFIG_INPUT_RAVE_SP_PWRBUTTON=m
|
||||
# CONFIG_RMI4_CORE is not set
|
||||
|
||||
#
|
||||
@ -2993,7 +3005,7 @@ CONFIG_SERIAL_FSL_LINFLEXUART=m
|
||||
# end of Serial drivers
|
||||
|
||||
CONFIG_SERIAL_MCTRL_GPIO=y
|
||||
# CONFIG_SERIAL_DEV_BUS is not set
|
||||
CONFIG_SERIAL_DEV_BUS=m
|
||||
CONFIG_TTY_PRINTK=m
|
||||
CONFIG_TTY_PRINTK_LEVEL=6
|
||||
CONFIG_HVC_DRIVER=y
|
||||
@ -3540,6 +3552,7 @@ CONFIG_BD70528_WATCHDOG=m
|
||||
# CONFIG_GPIO_WATCHDOG is not set
|
||||
# CONFIG_XILINX_WATCHDOG is not set
|
||||
# CONFIG_ZIIRAVE_WATCHDOG is not set
|
||||
CONFIG_RAVE_SP_WATCHDOG=m
|
||||
# CONFIG_ARM_SP805_WATCHDOG is not set
|
||||
# CONFIG_ARM_SBSA_WATCHDOG is not set
|
||||
# CONFIG_CADENCE_WATCHDOG is not set
|
||||
@ -3671,6 +3684,7 @@ CONFIG_MFD_ROHM_BD70528=m
|
||||
# CONFIG_MFD_STPMIC1 is not set
|
||||
CONFIG_MFD_STMFX=m
|
||||
CONFIG_MFD_VEXPRESS_SYSREG=y
|
||||
CONFIG_RAVE_SP_CORE=m
|
||||
# end of Multifunction device drivers
|
||||
|
||||
CONFIG_REGULATOR=y
|
||||
@ -4651,6 +4665,7 @@ CONFIG_BACKLIGHT_LP855X=y
|
||||
# CONFIG_BACKLIGHT_LV5207LP is not set
|
||||
# CONFIG_BACKLIGHT_BD6107 is not set
|
||||
# CONFIG_BACKLIGHT_ARCXCNN is not set
|
||||
CONFIG_BACKLIGHT_RAVE_SP=m
|
||||
# end of Backlight & LCD device support
|
||||
|
||||
CONFIG_VIDEOMODE_HELPERS=y
|
||||
@ -6186,6 +6201,7 @@ CONFIG_XILINX_XADC=m
|
||||
# CONFIG_BME680 is not set
|
||||
# CONFIG_CCS811 is not set
|
||||
# CONFIG_IAQCORE is not set
|
||||
CONFIG_PMS7003=m
|
||||
CONFIG_SENSIRION_SGP30=m
|
||||
CONFIG_SPS30=m
|
||||
# CONFIG_VZ89X is not set
|
||||
@ -6571,6 +6587,7 @@ CONFIG_RAS=y
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_NVMEM_SYSFS=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_RAVE_SP_EEPROM=m
|
||||
|
||||
#
|
||||
# HW tracing support
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 5.4.16 Kernel Configuration
|
||||
# Linux/arm 5.4.20 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@ -2557,7 +2557,7 @@ CONFIG_RTLWIFI=m
|
||||
CONFIG_RTLWIFI_USB=m
|
||||
# CONFIG_RTLWIFI_DEBUG is not set
|
||||
CONFIG_RTL8192C_COMMON=m
|
||||
# CONFIG_RTL8XXXU is not set
|
||||
CONFIG_RTL8XXXU=m
|
||||
CONFIG_RTL8723CS=m
|
||||
CONFIG_RTW88=m
|
||||
CONFIG_WLAN_VENDOR_RSI=y
|
||||
@ -4439,8 +4439,8 @@ CONFIG_DRM_TOSHIBA_TC358764=m
|
||||
# CONFIG_DRM_TOSHIBA_TC358767 is not set
|
||||
# CONFIG_DRM_TI_TFP410 is not set
|
||||
CONFIG_DRM_TI_SN65DSI86=m
|
||||
CONFIG_DRM_ANALOGIX_DP_I2C=m
|
||||
CONFIG_DRM_ANALOGIX_ANX6345=m
|
||||
CONFIG_DRM_ANALOGIX_DP=m
|
||||
# CONFIG_DRM_I2C_ADV7511 is not set
|
||||
CONFIG_DRM_DW_HDMI=y
|
||||
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
|
||||
@ -4737,8 +4737,10 @@ CONFIG_SND_SOC_PCM3060_I2C=m
|
||||
CONFIG_SND_SOC_PCM3060_SPI=m
|
||||
# CONFIG_SND_SOC_PCM3168A_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM3168A_SPI is not set
|
||||
# CONFIG_SND_SOC_PCM512x_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
CONFIG_SND_SOC_PCM5102A=m
|
||||
CONFIG_SND_SOC_PCM512x=m
|
||||
CONFIG_SND_SOC_PCM512x_I2C=m
|
||||
CONFIG_SND_SOC_PCM512x_SPI=m
|
||||
CONFIG_SND_SOC_RK3328=m
|
||||
# CONFIG_SND_SOC_RT5616 is not set
|
||||
# CONFIG_SND_SOC_RT5631 is not set
|
||||
|
||||
@ -2525,7 +2525,7 @@ CONFIG_RTLWIFI=m
|
||||
CONFIG_RTLWIFI_USB=m
|
||||
# CONFIG_RTLWIFI_DEBUG is not set
|
||||
CONFIG_RTL8192C_COMMON=m
|
||||
# CONFIG_RTL8XXXU is not set
|
||||
CONFIG_RTL8XXXU=m
|
||||
CONFIG_RTL8723CS=m
|
||||
CONFIG_RTW88=m
|
||||
CONFIG_WLAN_VENDOR_RSI=y
|
||||
@ -3411,7 +3411,7 @@ CONFIG_MFD_SUN4I_GPADC=m
|
||||
# CONFIG_MFD_ATMEL_HLCDC is not set
|
||||
# CONFIG_MFD_BCM590XX is not set
|
||||
# CONFIG_MFD_BD9571MWV is not set
|
||||
# CONFIG_MFD_AC100 is not set
|
||||
CONFIG_MFD_AC100=m
|
||||
CONFIG_MFD_AC200=m
|
||||
CONFIG_MFD_AXP20X=y
|
||||
CONFIG_MFD_AXP20X_I2C=y
|
||||
@ -4716,8 +4716,10 @@ CONFIG_SND_SOC_PCM3060_I2C=m
|
||||
CONFIG_SND_SOC_PCM3060_SPI=m
|
||||
# CONFIG_SND_SOC_PCM3168A_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM3168A_SPI is not set
|
||||
# CONFIG_SND_SOC_PCM512x_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
CONFIG_SND_SOC_PCM5102A=m
|
||||
CONFIG_SND_SOC_PCM512x=m
|
||||
CONFIG_SND_SOC_PCM512x_I2C=m
|
||||
CONFIG_SND_SOC_PCM512x_SPI=m
|
||||
CONFIG_SND_SOC_RK3328=m
|
||||
# CONFIG_SND_SOC_RT5616 is not set
|
||||
# CONFIG_SND_SOC_RT5631 is not set
|
||||
@ -5357,6 +5359,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_DRV_ABB5ZES3 is not set
|
||||
CONFIG_RTC_DRV_ABEOZ9=m
|
||||
# CONFIG_RTC_DRV_ABX80X is not set
|
||||
CONFIG_RTC_DRV_AC100=m
|
||||
CONFIG_RTC_DRV_DS1307=m
|
||||
# CONFIG_RTC_DRV_DS1307_CENTURY is not set
|
||||
# CONFIG_RTC_DRV_DS1374 is not set
|
||||
|
||||
@ -2417,7 +2417,7 @@ CONFIG_RTLWIFI=m
|
||||
CONFIG_RTLWIFI_USB=m
|
||||
# CONFIG_RTLWIFI_DEBUG is not set
|
||||
CONFIG_RTL8192C_COMMON=m
|
||||
# CONFIG_RTL8XXXU is not set
|
||||
CONFIG_RTL8XXXU=m
|
||||
CONFIG_RTL8723CS=m
|
||||
CONFIG_WLAN_VENDOR_RSI=y
|
||||
# CONFIG_RSI_91X is not set
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 5.4.16 Kernel Configuration
|
||||
# Linux/arm64 5.4.20 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
@ -4178,8 +4178,8 @@ CONFIG_DRM_TOSHIBA_TC358764=m
|
||||
# CONFIG_DRM_TOSHIBA_TC358767 is not set
|
||||
# CONFIG_DRM_TI_TFP410 is not set
|
||||
CONFIG_DRM_TI_SN65DSI86=m
|
||||
CONFIG_DRM_ANALOGIX_DP_I2C=m
|
||||
CONFIG_DRM_ANALOGIX_ANX6345=m
|
||||
CONFIG_DRM_ANALOGIX_DP=m
|
||||
# CONFIG_DRM_I2C_ADV7511 is not set
|
||||
CONFIG_DRM_DW_HDMI=y
|
||||
CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
|
||||
@ -4471,6 +4471,7 @@ CONFIG_SND_SOC_PCM3060_I2C=m
|
||||
CONFIG_SND_SOC_PCM3060_SPI=m
|
||||
# CONFIG_SND_SOC_PCM3168A_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM3168A_SPI is not set
|
||||
# CONFIG_SND_SOC_PCM5102A is not set
|
||||
# CONFIG_SND_SOC_PCM512x_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
CONFIG_SND_SOC_RK3328=m
|
||||
|
||||
@ -3339,7 +3339,7 @@ CONFIG_MFD_SUN4I_GPADC=y
|
||||
# CONFIG_MFD_ATMEL_HLCDC is not set
|
||||
# CONFIG_MFD_BCM590XX is not set
|
||||
CONFIG_MFD_BD9571MWV=m
|
||||
# CONFIG_MFD_AC100 is not set
|
||||
CONFIG_MFD_AC100=m
|
||||
CONFIG_MFD_AC200=m
|
||||
CONFIG_MFD_AXP20X=y
|
||||
CONFIG_MFD_AXP20X_I2C=y
|
||||
@ -4456,6 +4456,7 @@ CONFIG_SND_SOC_PCM3060_I2C=m
|
||||
CONFIG_SND_SOC_PCM3060_SPI=m
|
||||
# CONFIG_SND_SOC_PCM3168A_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM3168A_SPI is not set
|
||||
CONFIG_SND_SOC_PCM5102A=m
|
||||
# CONFIG_SND_SOC_PCM512x_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
CONFIG_SND_SOC_RK3328=m
|
||||
@ -5145,6 +5146,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
CONFIG_RTC_DRV_ABB5ZES3=m
|
||||
CONFIG_RTC_DRV_ABEOZ9=m
|
||||
CONFIG_RTC_DRV_ABX80X=m
|
||||
CONFIG_RTC_DRV_AC100=m
|
||||
CONFIG_RTC_DRV_DS1307=m
|
||||
CONFIG_RTC_DRV_DS1307_CENTURY=y
|
||||
CONFIG_RTC_DRV_DS1374=m
|
||||
|
||||
@ -50,10 +50,8 @@ case $BRANCH in
|
||||
|
||||
dev)
|
||||
|
||||
KERNELSOURCE='https://github.com/ayufan-rock64/linux-mainline-kernel'
|
||||
KERNELBRANCH='tag:5.4.0-rc1-1120-ayufan'
|
||||
KERNELDIR='linux-rockchip64'
|
||||
KERNELPATCHDIR='rockchip64-'$BRANCH
|
||||
KERNELBRANCH="branch:linux-5.5.y"
|
||||
LINUXFAMILY=rockchip64
|
||||
LINUXCONFIG='linux-rockchip64-'$BRANCH
|
||||
|
||||
@ -107,20 +105,8 @@ atf_custom_postprocess()
|
||||
family_tweaks()
|
||||
{
|
||||
|
||||
[[ $BOARD == firefly-rk3399 ]] && echo "fdtfile=rockchip/rk3399-firefly.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == nanopct4 ]] && echo "fdtfile=rockchip/rk3399-nanopc-t4.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == nanopim4 ]] && echo "fdtfile=rockchip/rk3399-nanopi-m4.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == nanopim4v2 ]] && echo "fdtfile=rockchip/rk3399-nanopi-m4v2.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == nanopineo4 ]] && echo "fdtfile=rockchip/rk3399-nanopi-neo4.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == orangepi-rk3399 ]] && echo "fdtfile=rockchip/rk3399-orangepi.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == orangepi4 ]] && echo "fdtfile=rockchip/rk3399-orangepi-4.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == pinebook-pro ]] && echo "fdtfile=rockchip/rk3399-pinebook-pro.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == roc-rk3399-pc ]] && echo "fdtfile=rockchip/rk3399-roc-pc.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
[[ $BOARD == rockpi-4* ]] && echo "fdtfile=rockchip/rk3399-rock-pi-4.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
|
||||
if [[ $BOARD == z28pro ]]; then
|
||||
|
||||
echo "fdtfile=rockchip/rk3328-z28pro.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
chroot $SDCARD /bin/bash -c "systemctl --no-reload enable z28pro-bluetooth.service >/dev/null 2>&1"
|
||||
|
||||
elif [[ -f $SDCARD/lib/systemd/system/rk3399-bluetooth.service ]]; then
|
||||
|
||||
@ -10,8 +10,7 @@ case $BRANCH in
|
||||
legacy)
|
||||
|
||||
KERNELBRANCH='branch:linux-4.19.y'
|
||||
KERNELPATCHDIR='sunxi-next'
|
||||
|
||||
KERNELPATCHDIR='sunxi-'$BRANCH
|
||||
;;
|
||||
|
||||
current)
|
||||
|
||||
@ -13,7 +13,7 @@ case $BRANCH in
|
||||
legacy)
|
||||
|
||||
KERNELBRANCH='branch:linux-4.19.y'
|
||||
|
||||
KERNELPATCHDIR='sunxi-'$BRANCH
|
||||
;;
|
||||
|
||||
current)
|
||||
|
||||
@ -8,11 +8,7 @@ fi
|
||||
|
||||
family_tweaks()
|
||||
{
|
||||
|
||||
if [[ $BOARD == lafrite ]]; then
|
||||
echo "fdtfile=amlogic/meson-gxl-s805x-libretech-ac.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
fi
|
||||
|
||||
:
|
||||
}
|
||||
|
||||
uboot_custom_postprocess()
|
||||
|
||||
@ -75,7 +75,6 @@ family_tweaks()
|
||||
fi
|
||||
|
||||
if [[ $BOARD == xt-q8l-v10 ]]; then
|
||||
echo "fdtfile=rk3288-xt-q8l-v10.dtb" >> $SDCARD/boot/armbianEnv.txt
|
||||
mkdir -p $SDCARD/etc/firmware/
|
||||
ln -sf /lib/firmware/brcm/BCM4330B1.hcd $SDCARD/etc/firmware
|
||||
chroot $SDCARD /bin/bash -c "systemctl --no-reload enable ap6330-bluetooth.service >/dev/null 2>&1"
|
||||
|
||||
@ -13,6 +13,7 @@ case $BRANCH in
|
||||
KERNELSOURCE='https://github.com/ayufan-rock64/linux-kernel'
|
||||
KERNELBRANCH='tag:4.4.202-1237-rockchip-ayufan'
|
||||
KERNELDIR='linux-rockchip64'
|
||||
KERNEL_USE_GCC='< 8.0'
|
||||
|
||||
;;
|
||||
|
||||
|
||||
@ -16,3 +16,8 @@ family_tweaks_s()
|
||||
echo "kernel.sysrq = 0" >> $SDCARD/etc/sysctl.d/sysrq.conf
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ $BOARD == teres-a64 ]]; then
|
||||
BOOTBRANCH='tag:v2020.01'
|
||||
BOOTPATCHDIR='u-boot-sunxi-dev'
|
||||
fi
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
source "${BASH_SOURCE%/*}/include/sunxi_common.inc"
|
||||
OVERLAY_PREFIX='sun8i-h3'
|
||||
|
||||
if [[ -z ${OVERLAY_PREFIX} ]]; then
|
||||
OVERLAY_PREFIX='sun8i-h3'
|
||||
fi
|
||||
|
||||
[[ -z $CPUMIN ]] && CPUMIN=480000
|
||||
[[ -z $CPUMAX ]] && CPUMAX=1400000
|
||||
|
||||
@ -363,6 +363,14 @@ orangepi3 current stretch cli stable yes
|
||||
orangepi3 current bionic desktop stable yes
|
||||
orangepi3 current bullseye cli stable yes
|
||||
|
||||
# Orangepi 4
|
||||
|
||||
orangepi4 legacy buster cli stable yes
|
||||
orangepi4 legacy bullseye cli stable yes
|
||||
orangepi4 legacy bionic desktop stable yes
|
||||
orangepi4 current buster desktop stable yes
|
||||
orangepi4 current bionic minimal stable yes
|
||||
|
||||
# orangepi-r1
|
||||
|
||||
orangepi-r1 current buster cli stable yes
|
||||
@ -616,10 +624,8 @@ tritium-h5 current bionic cli stable yes
|
||||
|
||||
# xt-q8l-v10
|
||||
|
||||
xt-q8l-v10 legacy buster cli stable yes
|
||||
xt-q8l-v10 legacy bionic desktop stable yes
|
||||
xt-q8l-v10 current bionic minimal stable yes
|
||||
xt-q8l-v10 current bullseye minimal stable yes
|
||||
xt-q8l-v10 current bionic desktop stable yes
|
||||
xt-q8l-v10 current buster minimal stable yes
|
||||
|
||||
# Z28 pro
|
||||
|
||||
|
||||
@ -13,10 +13,10 @@ RUN apt update && DEBIAN_FRONTEND=noninteractive apt -y upgrade && \
|
||||
qemu-user-static u-boot-tools uuid-dev zlib1g-dev unzip libusb-1.0-0-dev parted pkg-config libncurses5-dev whiptail \
|
||||
debian-keyring debian-archive-keyring f2fs-tools libfile-fcntllock-perl rsync libssl-dev nfs-kernel-server btrfs-progs \
|
||||
ncurses-term p7zip-full kmod dosfstools libc6-dev-armhf-cross fakeroot xxd \
|
||||
curl patchutils python liblz4-tool libpython2.7-dev linux-base swig libpython-dev \
|
||||
curl patchutils python liblz4-tool libpython2.7-dev linux-base swig libpython-dev python3-dev \
|
||||
systemd-container udev g++-5-arm-linux-gnueabihf lib32stdc++6 cpio tzdata psmisc acl \
|
||||
libc6-i386 lib32ncurses5 lib32tinfo5 locales ncurses-base zlib1g:i386 pixz bison libbison-dev flex libfl-dev \
|
||||
pigz aptly aria2 cryptsetup cryptsetup-bin --no-install-recommends
|
||||
pigz aptly aria2 cryptsetup cryptsetup-bin python3-distutils --no-install-recommends
|
||||
RUN locale-gen en_US.UTF-8
|
||||
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' TERM=screen
|
||||
WORKDIR /root/armbian
|
||||
|
||||
@ -209,7 +209,7 @@ function build_all()
|
||||
# unset also board related variables
|
||||
unset BOARDFAMILY DESKTOP_AUTOLOGIN DEFAULT_CONSOLE FULL_DESKTOP MODULES_CURRENT MODULES_LEGACY MODULES_DEV \
|
||||
BOOTCONFIG MODULES_BLACKLIST_LEGACY MODULES_BLACKLIST_CURRENT MODULES_BLACKLIST_DEV DEFAULT_OVERLAYS SERIALCON \
|
||||
BUILD_MINIMAL RELEASE ATFBRANCH
|
||||
BUILD_MINIMAL RELEASE ATFBRANCH BOOT_FDT_FILE
|
||||
|
||||
read -r BOARD BRANCH RELEASE BUILD_TARGET BUILD_STABILITY BUILD_IMAGE <<< "${line}"
|
||||
|
||||
@ -226,14 +226,16 @@ function build_all()
|
||||
# small optimisation. we only (try to) build needed kernels
|
||||
if [[ $KERNEL_ONLY == yes ]]; then
|
||||
|
||||
array_contains ARRAY "${BOARDFAMILY}${BRANCH}${BUILD_STABILITY}" && continue
|
||||
LINUXFAMILY="${BOARDFAMILY}"
|
||||
source "${SRC}/config/sources/families/${BOARDFAMILY}.conf" 2> /dev/null
|
||||
array_contains ARRAY "${LINUXFAMILY}${BRANCH}${BUILD_STABILITY}" && continue
|
||||
|
||||
elif [[ $BUILD_IMAGE == no ]] ; then
|
||||
|
||||
continue
|
||||
|
||||
fi
|
||||
ARRAY+=("${BOARDFAMILY}${BRANCH}${BUILD_STABILITY}")
|
||||
ARRAY+=("${LINUXFAMILY}${BRANCH}${BUILD_STABILITY}")
|
||||
|
||||
BUILD_DESKTOP="no"
|
||||
BUILD_MINIMAL="no"
|
||||
|
||||
@ -78,6 +78,7 @@ create_chroot()
|
||||
mkdir -p $target_dir/var/lock
|
||||
fi
|
||||
chroot $target_dir /bin/bash -c "/usr/sbin/update-ccache-symlinks"
|
||||
[[ $release == focal ]] && chroot $target_dir /bin/bash -c "ln -s /usr/bin/python3 /usr/bin/python"
|
||||
touch $target_dir/root/.debootstrap-complete
|
||||
display_alert "Debootstrap complete" "$release/$arch" "info"
|
||||
} #############################################################################
|
||||
|
||||
@ -19,8 +19,8 @@ REVISION=$(cat ${SRC}/VERSION)"$SUBREVISION" # all boards have same revision
|
||||
TZDATA=$(cat /etc/timezone) # Timezone for target is taken from host or defined here.
|
||||
USEALLCORES=yes # Use all CPU cores for compiling
|
||||
EXIT_PATCHING_ERROR="" # exit patching if failed
|
||||
[[ -z $HOST ]] && HOST="$(echo "$BOARD" | cut -f1 -d-)" # set hostname to the board
|
||||
ROOTFSCACHE_VERSION=17
|
||||
[[ -z $HOST ]] && HOST="$BOARD" # set hostname to the board
|
||||
ROOTFSCACHE_VERSION=18
|
||||
CHROOT_CACHE_VERSION=7
|
||||
BUILD_REPOSITORY_URL=$(git remote get-url $(git remote 2>/dev/null) 2>/dev/null)
|
||||
BUILD_REPOSITORY_COMMIT=$(git describe --match=d_e_a_d_b_e_e_f --always --dirty 2>/dev/null)
|
||||
@ -99,7 +99,7 @@ source "${SRC}/config/sources/families/${LINUXFAMILY}.conf"
|
||||
|
||||
if [[ -f $USERPATCHES_PATH/sources/families/$LINUXFAMILY.conf ]]; then
|
||||
display_alert "Adding user provided $LINUXFAMILY overrides"
|
||||
source "$USERPATCHES_PATH/sources/${LINUXFAMILY}.conf"
|
||||
source "$USERPATCHES_PATH/sources/families/${LINUXFAMILY}.conf"
|
||||
fi
|
||||
|
||||
# load architecture defaults
|
||||
@ -163,7 +163,7 @@ if [[ "$BUILD_MINIMAL" != "yes" ]]; then
|
||||
PACKAGE_LIST_ADDITIONAL="$PACKAGE_LIST_ADDITIONAL alsa-utils btrfs-progs dosfstools iotop iozone3 stress screen \
|
||||
ntfs-3g vim pciutils evtest pv libfuse2 libdigest-sha-perl \
|
||||
libproc-processtable-perl aptitude dnsutils f3 haveged hdparm rfkill vlan bash-completion \
|
||||
hostapd git ethtool unzip ifenslave command-not-found libpam-systemd iperf3 \
|
||||
hostapd git ethtool unzip ifenslave libpam-systemd iperf3 \
|
||||
software-properties-common libnss-myhostname f2fs-tools avahi-autoipd iputils-arping qrencode sunxi-tools"
|
||||
fi
|
||||
|
||||
@ -189,7 +189,7 @@ case $RELEASE in
|
||||
xenial)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
DEBOOTSTRAP_LIST+=" btrfs-tools"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db sysbench"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db sysbench command-not-found"
|
||||
PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless paprefs numix-icon-theme libgnome2-perl \
|
||||
pulseaudio-module-gconf onboard"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser language-selector-gnome system-config-printer-common \
|
||||
@ -199,7 +199,7 @@ case $RELEASE in
|
||||
stretch)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
DEBOOTSTRAP_LIST+=" rng-tools"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr sysbench"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr sysbench command-not-found"
|
||||
PACKAGE_LIST_DESKTOP+=" paman libgcr-3-common gcj-jre-headless paprefs dbus-x11 libgnome2-perl pulseaudio-module-gconf onboard"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium system-config-printer-common system-config-printer leafpad mirage"
|
||||
;;
|
||||
@ -207,7 +207,7 @@ case $RELEASE in
|
||||
bionic)
|
||||
DEBOOTSTRAP_COMPONENTS="main,universe"
|
||||
DEBOOTSTRAP_LIST+=" rng-tools"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher command-not-found"
|
||||
PACKAGE_LIST_DESKTOP+=" xserver-xorg-input-all paprefs dbus-x11 libgnome2-perl pulseaudio-module-gconf onboard"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium-browser system-config-printer-common system-config-printer \
|
||||
language-selector-gnome leafpad mirage"
|
||||
@ -216,7 +216,7 @@ case $RELEASE in
|
||||
buster)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
DEBOOTSTRAP_LIST+=" rng-tools"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher command-not-found"
|
||||
PACKAGE_LIST_DESKTOP+=" paprefs dbus-x11 numix-icon-theme onboard"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" chromium system-config-printer-common system-config-printer mirage"
|
||||
;;
|
||||
@ -224,7 +224,7 @@ case $RELEASE in
|
||||
bullseye)
|
||||
DEBOOTSTRAP_COMPONENTS="main"
|
||||
DEBOOTSTRAP_LIST+=" rng-tools"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher"
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher command-not-found"
|
||||
PACKAGE_LIST_DESKTOP+=" paprefs dbus-x11 numix-icon-theme"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" firefox-esr system-config-printer-common system-config-printer"
|
||||
;;
|
||||
@ -236,7 +236,7 @@ case $RELEASE in
|
||||
[[ -z $BUILD_MINIMAL || $BUILD_MINIMAL == no ]] && PACKAGE_LIST_RELEASE="man-db kbd net-tools gnupg2 dirmngr networkd-dispatcher"
|
||||
PACKAGE_LIST_DESKTOP+=" xserver-xorg-input-all paprefs dbus-x11 pulseaudio-module-gsettings onboard"
|
||||
PACKAGE_LIST_DESKTOP_RECOMMENDS+=" firefox system-config-printer-common system-config-printer \
|
||||
language-selector-gnome mirage"
|
||||
language-selector-gnome viewnior"
|
||||
;;
|
||||
|
||||
eoan)
|
||||
|
||||
@ -99,17 +99,29 @@ debootstrap_ng()
|
||||
#
|
||||
create_rootfs_cache()
|
||||
{
|
||||
local packages_hash=$(get_package_list_hash)
|
||||
local cache_type=$(if [[ ${BUILD_DESKTOP} == yes ]]; then echo "desktop"; elif [[ ${BUILD_MINIMAL} == yes ]]; then echo "minimal"; else echo "cli";fi)
|
||||
local cache_name=${RELEASE}-${cache_type}-${ARCH}.$packages_hash.tar.lz4
|
||||
local cache_fname=${SRC}/cache/rootfs/${cache_name}
|
||||
local display_name=${RELEASE}-${cache_type}-${ARCH}.${packages_hash:0:3}...${packages_hash:29}.tar.lz4
|
||||
# seek last cache, proceed to previous otherwise build it
|
||||
for ((n=0;n<2;n++)); do
|
||||
|
||||
display_alert "Checking for local cache" "$display_name" "info"
|
||||
if [[ ! -f $cache_fname && "$ROOT_FS_CREATE_ONLY" != "force" ]]; then
|
||||
display_alert "searching on servers"
|
||||
download_and_verify "_rootfs" "$cache_name"
|
||||
fi
|
||||
local packages_hash=$(get_package_list_hash "$(($ROOTFSCACHE_VERSION - $n))")
|
||||
local cache_type=$(if [[ ${BUILD_DESKTOP} == yes ]]; then echo "desktop"; elif [[ ${BUILD_MINIMAL} == yes ]]; then echo "minimal"; else echo "cli";fi)
|
||||
local cache_name=${RELEASE}-${cache_type}-${ARCH}.$packages_hash.tar.lz4
|
||||
local cache_fname=${SRC}/cache/rootfs/${cache_name}
|
||||
local display_name=${RELEASE}-${cache_type}-${ARCH}.${packages_hash:0:3}...${packages_hash:29}.tar.lz4
|
||||
|
||||
display_alert "Checking for local cache" "$display_name" "info"
|
||||
|
||||
if [[ ! -f $cache_fname && "$ROOT_FS_CREATE_ONLY" != "force" ]]; then
|
||||
display_alert "searching on servers"
|
||||
download_and_verify "_rootfs" "$cache_name"
|
||||
fi
|
||||
|
||||
if [[ -f $cache_fname ]]; then
|
||||
break
|
||||
else
|
||||
display_alert "not found: try to use previous cache"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if [[ -f $cache_fname && "$ROOT_FS_CREATE_ONLY" != "force" ]]; then
|
||||
local date_diff=$(( ($(date +%s) - $(stat -c %Y $cache_fname)) / 86400 ))
|
||||
|
||||
@ -177,6 +177,9 @@ install_common()
|
||||
[[ -n $DEFAULT_OVERLAYS && -f $SDCARD/boot/armbianEnv.txt ]] && \
|
||||
echo "overlays=${DEFAULT_OVERLAYS//,/ }" >> "${SDCARD}"/boot/armbianEnv.txt
|
||||
|
||||
[[ -n $BOOT_FDT_FILE && -f $SDCARD/boot/armbianEnv.txt ]] && \
|
||||
echo "fdtfile=${BOOT_FDT_FILE}" >> "${SDCARD}/boot/armbianEnv.txt"
|
||||
|
||||
# initial date for fake-hwclock
|
||||
date -u '+%Y-%m-%d %H:%M:%S' > "${SDCARD}"/etc/fake-hwclock.data
|
||||
|
||||
@ -225,7 +228,7 @@ install_common()
|
||||
|
||||
if [[ $WIREGUARD == yes ]]; then
|
||||
# install wireguard tools
|
||||
chroot "${SDCARD}" /bin/bash -c "apt -y -qq install wireguard-tools" >> "${DEST}"/debug/install.log 2>&1
|
||||
chroot "${SDCARD}" /bin/bash -c "apt -y -qq install wireguard-tools --no-install-recommends" >> "${DEST}"/debug/install.log 2>&1
|
||||
fi
|
||||
|
||||
# install board support package
|
||||
|
||||
@ -119,7 +119,7 @@ exit_with_error()
|
||||
|
||||
get_package_list_hash()
|
||||
{
|
||||
( printf '%s\n' $PACKAGE_LIST | sort -u; printf '%s\n' $PACKAGE_LIST_EXCLUDE | sort -u; echo "$ROOTFSCACHE_VERSION" ) \
|
||||
( printf '%s\n' $PACKAGE_LIST | sort -u; printf '%s\n' $PACKAGE_LIST_EXCLUDE | sort -u; echo "$1" ) \
|
||||
| md5sum | cut -d' ' -f 1
|
||||
}
|
||||
|
||||
@ -574,7 +574,7 @@ repo-manipulate() {
|
||||
serve)
|
||||
# display repository content
|
||||
display_alert "Serving content" "common utils" "ext"
|
||||
aptly serve -listen=$(ip -f inet addr | grep -Po 'inet \K[\d.]+' | grep -v 127.0.0.1):8080 -config="${SCRIPTPATH}"config/${REPO_CONFIG}
|
||||
aptly serve -listen=$(ip -f inet addr | grep -Po 'inet \K[\d.]+' | grep -v 127.0.0.1 | head -1):8080 -config="${SCRIPTPATH}"config/${REPO_CONFIG}
|
||||
exit 0
|
||||
;;
|
||||
show)
|
||||
@ -589,6 +589,41 @@ repo-manipulate() {
|
||||
echo "done."
|
||||
exit 0
|
||||
;;
|
||||
|
||||
unique)
|
||||
IFS=$'\n'
|
||||
while true; do
|
||||
LIST=()
|
||||
for release in "${DISTROS[@]}"; do
|
||||
LIST+=( $(aptly repo show -with-packages -config="${SCRIPTPATH}"config/${REPO_CONFIG} "${release}" | tail -n +7) )
|
||||
LIST+=( $(aptly repo show -with-packages -config="${SCRIPTPATH}"config/${REPO_CONFIG} "${release}-desktop" | tail -n +7) )
|
||||
done
|
||||
LIST+=( $(aptly repo show -with-packages -config="${SCRIPTPATH}"config/${REPO_CONFIG} utils | tail -n +7) )
|
||||
LIST=( $(echo "${LIST[@]}" | tr ' ' '\n' | sort -u))
|
||||
new_list=()
|
||||
# create a human readable menu
|
||||
for ((n=0;n<$((${#LIST[@]}));n++));
|
||||
do
|
||||
new_list+=( "${LIST[$n]}" )
|
||||
new_list+=( "" )
|
||||
done
|
||||
LIST=("${new_list[@]}")
|
||||
LIST_LENGTH=$((${#LIST[@]}/2));
|
||||
exec 3>&1
|
||||
TARGET_VERSION=$(dialog --cancel-label "Cancel" --backtitle "BACKTITLE" --no-collapse --title "Switch from and reboot" --clear --menu "Delete" $((9+${LIST_LENGTH})) 82 65 "${LIST[@]}" 2>&1 1>&3)
|
||||
exitstatus=$?;
|
||||
exec 3>&-
|
||||
if [[ $exitstatus -eq 0 ]]; then
|
||||
for release in "${DISTROS[@]}"; do
|
||||
aptly repo remove -config="${SCRIPTPATH}"config/${REPO_CONFIG} "${release}" "$TARGET_VERSION"
|
||||
aptly repo remove -config="${SCRIPTPATH}"config/${REPO_CONFIG} "${release}-desktop" "$TARGET_VERSION"
|
||||
done
|
||||
aptly repo remove -config="${SCRIPTPATH}"config/${REPO_CONFIG} "utils" "$TARGET_VERSION"
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
;;
|
||||
update)
|
||||
# display full help test
|
||||
# run repository update
|
||||
@ -599,6 +634,7 @@ repo-manipulate() {
|
||||
;;
|
||||
purge)
|
||||
for release in "${DISTROS[@]}"; do
|
||||
aptly repo remove -config=${BLTPATH}config/aptly.conf "${release}" 'Name (% linux-*dev*)'
|
||||
repo-remove-old-packages "$release" "armhf" "3"
|
||||
repo-remove-old-packages "$release" "arm64" "3"
|
||||
repo-remove-old-packages "$release" "all" "3"
|
||||
@ -733,15 +769,15 @@ prepare_host()
|
||||
gawk gcc-arm-linux-gnueabihf qemu-user-static u-boot-tools uuid-dev zlib1g-dev unzip libusb-1.0-0-dev fakeroot \
|
||||
parted pkg-config libncurses5-dev whiptail debian-keyring debian-archive-keyring f2fs-tools libfile-fcntllock-perl rsync libssl-dev \
|
||||
nfs-kernel-server btrfs-progs ncurses-term p7zip-full kmod dosfstools libc6-dev-armhf-cross \
|
||||
curl patchutils liblz4-tool libpython2.7-dev linux-base swig aptly acl \
|
||||
curl patchutils liblz4-tool libpython2.7-dev linux-base swig aptly acl python3-dev \
|
||||
locales ncurses-base pixz dialog systemd-container udev lib32stdc++6 libc6-i386 lib32ncurses5 lib32tinfo5 \
|
||||
bison libbison-dev flex libfl-dev cryptsetup gpgv1 gnupg1 cpio aria2 pigz dirmngr"
|
||||
bison libbison-dev flex libfl-dev cryptsetup gpgv1 gnupg1 cpio aria2 pigz dirmngr python3-distutils"
|
||||
|
||||
local codename=$(lsb_release -sc)
|
||||
|
||||
# Getting ready for Ubuntu 20.04
|
||||
if [[ $codename == focal ]]; then
|
||||
hostdeps+=" python2 python3 libpython3-dev"
|
||||
hostdeps+=" python2 python3"
|
||||
ln -fs /usr/bin/python2.7 /usr/bin/python2
|
||||
ln -fs /usr/bin/python2.7 /usr/bin/python
|
||||
else
|
||||
|
||||
@ -300,8 +300,7 @@ if [[ $KERNEL_ONLY != yes && -z $RELEASE ]]; then
|
||||
distro_menu "xenial"
|
||||
distro_menu "bionic"
|
||||
distro_menu "eoan"
|
||||
# chroot completly broken atm, disable for now
|
||||
# distro_menu "focal"
|
||||
distro_menu "focal"
|
||||
|
||||
RELEASE=$(dialog --stdout --title "Choose a release" --backtitle "$backtitle" \
|
||||
--menu "Select the target OS release package base" $TTY_Y $TTY_X $((TTY_Y - 8)) "${options[@]}")
|
||||
|
||||
@ -160,16 +160,15 @@ create_board_package()
|
||||
|
||||
EOF
|
||||
|
||||
if [[ $RELEASE == bionic ]]; then
|
||||
cat <<-EOF >> "${destination}"/DEBIAN/postinst
|
||||
# temporally disable acceleration in Bionic due to broken mesa packages
|
||||
if [ -n "\$(cat /etc/X11/xorg.conf.d/01-armbian-defaults.conf 2> /dev/null | grep AccelMethod)" ]; then
|
||||
sed -i '/\Device/,/^\[/ s/AccelMethod".*/AccelMethod"\t "none"/' /etc/X11/xorg.conf.d/01-armbian-defaults.conf
|
||||
else
|
||||
sed -i '/\Device/a \\\tOption\t\t\t"AccelMethod" "none"' /etc/X11/xorg.conf.d/01-armbian-defaults.conf
|
||||
fi
|
||||
EOF
|
||||
fi
|
||||
# if [[ $RELEASE == bionic ]]; then
|
||||
# cat <<-EOF >> "${destination}"/DEBIAN/postinst
|
||||
# # temporally disable acceleration in Bionic due to broken mesa packages
|
||||
# echo 'Section "Device"
|
||||
# Identifier "Default Device"
|
||||
# Option "AccelMethod" "none"
|
||||
# EndSection' >> /etc/X11/xorg.conf.d/01-armbian-defaults.conf
|
||||
# EOF
|
||||
# fi
|
||||
|
||||
# install bootscripts if they are not present. Fix upgrades from old images
|
||||
if [[ $FORCE_BOOTSCRIPT_UPDATE == yes ]]; then
|
||||
@ -285,10 +284,6 @@ fi
|
||||
cp "${SRC}"/packages/bsp/mpv/mpv_mainline.conf "${destination}"/etc/mpv/mpv.conf
|
||||
fi
|
||||
|
||||
# disable power savings on wireless connections by default
|
||||
mkdir -p "${destination}"/usr/lib/NetworkManager/conf.d/
|
||||
cp "${SRC}"/packages/bsp/zz-override-wifi-powersave-off.conf "${destination}"/usr/lib/NetworkManager/conf.d/
|
||||
|
||||
# execute $LINUXFAMILY-specific tweaks
|
||||
[[ $(type -t family_tweaks_bsp) == function ]] && family_tweaks_bsp
|
||||
|
||||
|
||||
@ -1,2 +0,0 @@
|
||||
[device]
|
||||
wifi.scan-rand-mac-address=no
|
||||
@ -0,0 +1,5 @@
|
||||
[connection]
|
||||
wifi.mac-address-randomization=1
|
||||
|
||||
[device]
|
||||
wifi.scan-rand-mac-address=no
|
||||
@ -8,8 +8,3 @@ Section "ServerFlags"
|
||||
Option "SuspendTime" "0"
|
||||
Option "OffTime" "0"
|
||||
EndSection
|
||||
Section "Device"
|
||||
Identifier "Default Device"
|
||||
Driver "modesetting"
|
||||
Option "AccelMethod" "glamor"
|
||||
EndSection
|
||||
|
||||
@ -41,4 +41,6 @@ if [[ -n $DISTRIBUTION_STATUS && $DISTRIBUTION_STATUS != supported ]]; then
|
||||
UNSUPPORTED_TEXT+="unsupported ($DISTRIBUTION_CODENAME) userspace!"
|
||||
fi
|
||||
|
||||
[[ -n $UNSUPPORTED_TEXT ]] && echo -e "\e[0;91mNo end-user support: \x1B[0m$UNSUPPORTED_TEXT \e[0;91m\n"
|
||||
if [[ -n $UNSUPPORTED_TEXT ]]; then
|
||||
echo -e "\e[0;91mNo end-user support: \x1B[0m$UNSUPPORTED_TEXT\n"
|
||||
fi
|
||||
|
||||
@ -4,10 +4,16 @@ local package_repo="https://github.com/hishamhm/htop"
|
||||
local package_ref="tag:2.2.0"
|
||||
|
||||
local package_upstream_version="2.2.0-3"
|
||||
local package_builddeps="debhelper dpkg-dev libhwloc-dev libncurses5-dev libncursesw5-dev pkg-config python-minimal:native"
|
||||
local package_builddeps="debhelper dpkg-dev libhwloc-dev libncurses5-dev libncursesw5-dev pkg-config"
|
||||
local package_install_target="htop"
|
||||
local package_component="${release}-utils"
|
||||
|
||||
if [[ $release == focal ]]; then
|
||||
package_builddeps+=" python3-minimal:native"
|
||||
else
|
||||
package_builddeps+=" python-minimal:native"
|
||||
fi
|
||||
|
||||
package_checkbuild()
|
||||
{
|
||||
[[ $release != stretch && $release != bionic && $release != jessie ]]
|
||||
|
||||
@ -10,8 +10,7 @@ Build-Depends: debhelper,
|
||||
libkvm-dev [kfreebsd-any],
|
||||
libncurses5-dev,
|
||||
libncursesw5-dev,
|
||||
pkg-config,
|
||||
python-minimal:native
|
||||
pkg-config
|
||||
Standards-Version: 4.1.4
|
||||
Homepage: https://hisham.hm/htop/
|
||||
Vcs-Browser: https://salsa.debian.org/debian/htop
|
||||
|
||||
@ -127,22 +127,23 @@ index 6854f5867d51..a5e88c3e6d25 100644
|
||||
/**
|
||||
* drm_gem_object_lookup - look up a GEM object from its handle
|
||||
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
|
||||
index d74442d71048..486ca51d5662 100644
|
||||
index 5906c80c4..4dd94482c 100644
|
||||
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
|
||||
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
|
||||
@@ -130,9 +130,9 @@ panfrost_lookup_bos(struct drm_device *dev,
|
||||
@@ -144,9 +144,10 @@ panfrost_lookup_bos(struct drm_device *dev,
|
||||
if (!job->implicit_fences)
|
||||
return -ENOMEM;
|
||||
|
||||
- return drm_gem_objects_lookup(file_priv,
|
||||
- (void __user *)(uintptr_t)args->bo_handles,
|
||||
- job->bo_count, &job->bos);
|
||||
+ return drm_gem_objects_lookup_user(file_priv,
|
||||
+ (void __user *)(uintptr_t)args->bo_handles,
|
||||
+ job->bo_count, &job->bos);
|
||||
}
|
||||
- ret = drm_gem_objects_lookup(file_priv,
|
||||
- (void __user *)(uintptr_t)args->bo_handles,
|
||||
- job->bo_count, &job->bos);
|
||||
+ ret = drm_gem_objects_lookup_user(file_priv,
|
||||
+ (void __user *)(uintptr_t)args->bo_handles,
|
||||
+ job->bo_count, &job->bos);
|
||||
+
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/**
|
||||
diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h
|
||||
index 6aaba14f5972..354fc8d240e4 100644
|
||||
--- a/include/drm/drm_gem.h
|
||||
|
||||
@ -1,167 +0,0 @@
|
||||
From patchwork Mon Jan 6 19:29:50 2020
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Corentin Labbe <clabbe.montjoie@gmail.com>
|
||||
X-Patchwork-Id: 11319983
|
||||
Return-Path:
|
||||
<SRS0=3EmA=23=lists.infradead.org=linux-amlogic-bounces+patchwork-linux-amlogic=patchwork.kernel.org@kernel.org>
|
||||
Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org
|
||||
[172.30.200.123])
|
||||
by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 03E37930
|
||||
for <patchwork-linux-amlogic@patchwork.kernel.org>;
|
||||
Mon, 6 Jan 2020 19:30:00 +0000 (UTC)
|
||||
Received: from bombadil.infradead.org (bombadil.infradead.org
|
||||
[198.137.202.133])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
||||
(No client certificate requested)
|
||||
by mail.kernel.org (Postfix) with ESMTPS id D525E207FD
|
||||
for <patchwork-linux-amlogic@patchwork.kernel.org>;
|
||||
Mon, 6 Jan 2020 19:29:59 +0000 (UTC)
|
||||
Authentication-Results: mail.kernel.org;
|
||||
dkim=pass (2048-bit key) header.d=lists.infradead.org
|
||||
header.i=@lists.infradead.org header.b="mBnjrc6G";
|
||||
dkim=fail reason="signature verification failed" (2048-bit key)
|
||||
header.d=gmail.com header.i=@gmail.com header.b="MFDHoVhh"
|
||||
DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D525E207FD
|
||||
Authentication-Results: mail.kernel.org;
|
||||
dmarc=fail (p=none dis=none) header.from=gmail.com
|
||||
Authentication-Results: mail.kernel.org;
|
||||
spf=none
|
||||
smtp.mailfrom=linux-amlogic-bounces+patchwork-linux-amlogic=patchwork.kernel.org@lists.infradead.org
|
||||
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
|
||||
d=lists.infradead.org; s=bombadil.20170209; h=Sender:
|
||||
Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:
|
||||
List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To
|
||||
:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:
|
||||
Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:
|
||||
List-Owner; bh=89cgIB5HlDb2I4iTttzHAUYk94MUSAaT2AEXpvjAJDE=; b=mBnjrc6Gy9iAMT
|
||||
lne+XSeI6NxcyEGKoOUifNWQxjVbY0MarlOXLwHW5fhiiIjO3TpUSgch81QI3heZ5DmyogE41IjS2
|
||||
LKmbxz8p9YREJ0X/KxjoSxhrN8E66qu+CVp0I4dxfLnTNxEiVcvIPK8ZrhxargF+CExe2RuVkMNzo
|
||||
hXBWXi20rUPCgUw9j+9ZC/bImvuoE9vWy0BvQrNWywasTi0UDUQLhabXW+27fgRkMDlbtC2v4LxmM
|
||||
5lgH+Iol9hHzW73U1EXRMwy7qlA6oGbLM1ommJAykyT1prFzOxOo32KQpjlLU5b2z/UyS/fn+GX+D
|
||||
s+RlgYD2z17y1d8aC65g==;
|
||||
Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org)
|
||||
by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux))
|
||||
id 1ioY4d-0008AS-Jo; Mon, 06 Jan 2020 19:29:59 +0000
|
||||
Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344])
|
||||
by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux))
|
||||
id 1ioY4b-00089n-4m
|
||||
for linux-amlogic@lists.infradead.org; Mon, 06 Jan 2020 19:29:58 +0000
|
||||
Received: by mail-wm1-x344.google.com with SMTP id c127so12589591wme.1
|
||||
for <linux-amlogic@lists.infradead.org>;
|
||||
Mon, 06 Jan 2020 11:29:55 -0800 (PST)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
|
||||
h=from:to:cc:subject:date:message-id:mime-version
|
||||
:content-transfer-encoding;
|
||||
bh=9Ur3CxFG0cQbKNwUJ75Zx2lXsthVwW+wWDfRyfXmnKM=;
|
||||
b=MFDHoVhhfNfJOoS+7B7TS0SyZvJrXkAmv9gGVyRrLcFaG6lMwTT7g8Nw48eUSo/ihd
|
||||
iE09TrqHNUuJ1yrNx8eqPe/Bf6gJegD+DVCBYVFa3za5W8hLkWvdoLTpZDEEiHtar4+Q
|
||||
pKqqaX4vnkREBw8bLnRfq2kh5v610vdQecjHN/TN8/sSUkLUv+JvKm8Jsa/rdrblmhq0
|
||||
uhLdN8vIor7xFd3r94ysMJs7hOqQZN08M/sKaaagiqHpkuGpBI7l5slMNOoFkja7LlFr
|
||||
5lUstKr4VwNTFvhDrVj8RMeFN1GPti+JFk5/Hjf9t0KfwFGuOpMcuYVstzFEf8e8EJkN
|
||||
F22Q==
|
||||
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=1e100.net; s=20161025;
|
||||
h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version
|
||||
:content-transfer-encoding;
|
||||
bh=9Ur3CxFG0cQbKNwUJ75Zx2lXsthVwW+wWDfRyfXmnKM=;
|
||||
b=qQPhdUPoMsvsgU9d2CukIwU9859TqatMH1SnTrZvkekTdxmntIRxFea1Dk2WreO0bt
|
||||
pCD2n/L1u/S54H6MrTatwUoLSJIAJejD2g3CwmzlqlCdu3yEGqzvgSVOpCkMx5i0/NVU
|
||||
7G1wK9F6//q0DBPuQ/Jmrrf4zRQC9B5p0LNbwK4uoZE6mjD4e0kksw74U4sdGwaAycmH
|
||||
tS8sM4mLinfSdoVNcmCk7itJHz50cofmJi7m7y1Rg516xiQVRRTjyFlV60m2s+szXvXs
|
||||
+LvACnlw15R2/Afntx6ItBWkaSU7IXUZOtyEubgG0EA74mnlltHrGZA3qS+53V47/gti
|
||||
bQLQ==
|
||||
X-Gm-Message-State: APjAAAVfuqk7uAKGGw84URMNJS9uSoCXyf4sG0XPXD6739T3y9rglZlQ
|
||||
CQ2OfZAGcNs0ZtfmrRUt1Fc=
|
||||
X-Google-Smtp-Source:
|
||||
APXvYqyQllloLFr5JAArKfaDOfayLtkqaScpZ+uJ6DkBjZ3d+DoyF58NzIDEURVT4mhNYEGilCH9JA==
|
||||
X-Received: by 2002:a1c:1dd7:: with SMTP id d206mr34934742wmd.5.1578338994696;
|
||||
Mon, 06 Jan 2020 11:29:54 -0800 (PST)
|
||||
Received: from Red.localdomain ([2a01:cb1d:147:7200:2e56:dcff:fed2:c6d6])
|
||||
by smtp.googlemail.com with ESMTPSA id
|
||||
g21sm23802398wmh.17.2020.01.06.11.29.53
|
||||
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
|
||||
Mon, 06 Jan 2020 11:29:54 -0800 (PST)
|
||||
From: Corentin Labbe <clabbe.montjoie@gmail.com>
|
||||
To: davem@davemloft.net, herbert@gondor.apana.org.au, narmstrong@baylibre.com
|
||||
Subject: [PATCH] crypto: amlogic: fix removal of module
|
||||
Date: Mon, 6 Jan 2020 20:29:50 +0100
|
||||
Message-Id: <20200106192950.23475-1-clabbe.montjoie@gmail.com>
|
||||
X-Mailer: git-send-email 2.24.1
|
||||
MIME-Version: 1.0
|
||||
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
|
||||
X-CRM114-CacheID: sfid-20200106_112957_186126_D53DE925
|
||||
X-CRM114-Status: UNSURE ( 9.71 )
|
||||
X-CRM114-Notice: Please train this message.
|
||||
X-Spam-Score: -0.2 (/)
|
||||
X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary:
|
||||
Content analysis details: (-0.2 points)
|
||||
pts rule name description
|
||||
---- ----------------------
|
||||
--------------------------------------------------
|
||||
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
|
||||
no trust [2a00:1450:4864:20:0:0:0:344 listed in]
|
||||
[list.dnswl.org]
|
||||
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
|
||||
provider (clabbe.montjoie[at]gmail.com)
|
||||
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
|
||||
-0.0 SPF_PASS SPF: sender matches SPF record
|
||||
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
|
||||
-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
|
||||
author's domain
|
||||
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
|
||||
not necessarily
|
||||
valid
|
||||
-0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from
|
||||
envelope-from domain
|
||||
X-BeenThere: linux-amlogic@lists.infradead.org
|
||||
X-Mailman-Version: 2.1.29
|
||||
Precedence: list
|
||||
List-Id: <linux-amlogic.lists.infradead.org>
|
||||
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-amlogic>,
|
||||
<mailto:linux-amlogic-request@lists.infradead.org?subject=unsubscribe>
|
||||
List-Archive: <http://lists.infradead.org/pipermail/linux-amlogic/>
|
||||
List-Post: <mailto:linux-amlogic@lists.infradead.org>
|
||||
List-Help: <mailto:linux-amlogic-request@lists.infradead.org?subject=help>
|
||||
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-amlogic>,
|
||||
<mailto:linux-amlogic-request@lists.infradead.org?subject=subscribe>
|
||||
Cc: linux-amlogic@lists.infradead.org,
|
||||
Corentin Labbe <clabbe.montjoie@gmail.com>, linux-crypto@vger.kernel.org,
|
||||
linux-kernel@vger.kernel.org
|
||||
Sender: "linux-amlogic" <linux-amlogic-bounces@lists.infradead.org>
|
||||
Errors-To:
|
||||
linux-amlogic-bounces+patchwork-linux-amlogic=patchwork.kernel.org@lists.infradead.org
|
||||
|
||||
Removing the driver cause an oops due to the fact we clean an extra
|
||||
channel.
|
||||
Let's give the right index to the cleaning function.
|
||||
Fixes: 48fe583fe541 ("crypto: amlogic - Add crypto accelerator for amlogic GXL")
|
||||
|
||||
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
|
||||
---
|
||||
drivers/crypto/amlogic/amlogic-gxl-core.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/amlogic/amlogic-gxl-core.c
|
||||
index fa05fce1c0de..9d4ead2f7ebb 100644
|
||||
--- a/drivers/crypto/amlogic/amlogic-gxl-core.c
|
||||
+++ b/drivers/crypto/amlogic/amlogic-gxl-core.c
|
||||
@@ -289,7 +289,7 @@ static int meson_crypto_probe(struct platform_device *pdev)
|
||||
error_alg:
|
||||
meson_unregister_algs(mc);
|
||||
error_flow:
|
||||
- meson_free_chanlist(mc, MAXFLOW);
|
||||
+ meson_free_chanlist(mc, MAXFLOW - 1);
|
||||
clk_disable_unprepare(mc->busclk);
|
||||
return err;
|
||||
}
|
||||
@@ -304,7 +304,7 @@ static int meson_crypto_remove(struct platform_device *pdev)
|
||||
|
||||
meson_unregister_algs(mc);
|
||||
|
||||
- meson_free_chanlist(mc, MAXFLOW);
|
||||
+ meson_free_chanlist(mc, MAXFLOW - 1);
|
||||
|
||||
clk_disable_unprepare(mc->busclk);
|
||||
return 0;
|
||||
3992
patch/kernel/odroidxu4-current/03-patch-5.4.17-18.patch
Normal file
3992
patch/kernel/odroidxu4-current/03-patch-5.4.17-18.patch
Normal file
File diff suppressed because it is too large
Load Diff
15537
patch/kernel/odroidxu4-current/03-patch-5.4.18-19.patch
Normal file
15537
patch/kernel/odroidxu4-current/03-patch-5.4.18-19.patch
Normal file
File diff suppressed because it is too large
Load Diff
9416
patch/kernel/odroidxu4-legacy/patch-4.14.167-168-alt.patch
Normal file
9416
patch/kernel/odroidxu4-legacy/patch-4.14.167-168-alt.patch
Normal file
File diff suppressed because it is too large
Load Diff
1600
patch/kernel/odroidxu4-legacy/patch-4.14.168-169.patch
Normal file
1600
patch/kernel/odroidxu4-legacy/patch-4.14.168-169.patch
Normal file
File diff suppressed because it is too large
Load Diff
3128
patch/kernel/odroidxu4-legacy/patch-4.14.169-170.patch
Normal file
3128
patch/kernel/odroidxu4-legacy/patch-4.14.169-170.patch
Normal file
File diff suppressed because it is too large
Load Diff
5145
patch/kernel/rk3399-legacy/patch-4.4.211-212.patch
Normal file
5145
patch/kernel/rk3399-legacy/patch-4.4.211-212.patch
Normal file
File diff suppressed because it is too large
Load Diff
1559
patch/kernel/rk3399-legacy/patch-4.4.212-213.patch
Normal file
1559
patch/kernel/rk3399-legacy/patch-4.4.212-213.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,9 @@
|
||||
diff --git a/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts b/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts
|
||||
new file mode 100644
|
||||
index 000000000..539e445b4
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts 2019-08-03 13:55:48.719992666 +0000
|
||||
@@ -0,0 +1,982 @@
|
||||
+++ b/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts
|
||||
@@ -0,0 +1,1061 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2014, 2015 FUKAUMI Naoki <naobsd@gmail.com>
|
||||
+ * 2018 Paolo Sabatino <paolo.sabatino@gm**l.com>
|
||||
@ -53,7 +56,7 @@
|
||||
+ model = "XT-Q8L-V10-RK3288";
|
||||
+ compatible = "generic,xt-q8l-v10-rk3288", "rockchip,rk3288";
|
||||
+
|
||||
+ memory {
|
||||
+ memory@0 {
|
||||
+ reg = <0x0 0x0 0x0 0x80000000>;
|
||||
+ device_type = "memory";
|
||||
+ };
|
||||
@ -83,7 +86,7 @@
|
||||
+ clock-frequency = <125000000>;
|
||||
+ clock-output-names = "ext_gmac";
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Handle the IR receiver using the gpio-ir-receiver kernel module.
|
||||
+ * This works flawlessy, the original xt-q8l-v10 remote uses a NEC
|
||||
@ -97,13 +100,13 @@
|
||||
+ pinctrl-0 = <&ir_int>;
|
||||
+ linux,rc-map-name = "rc-xt-q8l-v10";
|
||||
+ wakeup-source;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ keys: gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwr_key>;
|
||||
+
|
||||
@ -115,7 +118,7 @@
|
||||
+ wakeup-source;
|
||||
+ debounce-interval = <100>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
@ -127,7 +130,7 @@
|
||||
+ so while there is mass storage access it turns red and
|
||||
+ when it is idle is blue
|
||||
+ */
|
||||
+ gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
|
||||
+ gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
|
||||
+ label = "power";
|
||||
+ linux,default-trigger = "mmc0";
|
||||
+ pinctrl-names = "default";
|
||||
@ -162,7 +165,12 @@
|
||||
+ regulator-name = "vcc_flash";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ /*gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>;
|
||||
+ states = <1800000 0>,
|
||||
+ <3300000 1>;
|
||||
+ */
|
||||
+ vin-supply = <&vcc_io>;
|
||||
+ startup-delay-us = <100000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_host_5v: usb-host-regulator {
|
||||
@ -171,8 +179,8 @@
|
||||
+ regulator-name = "vcc_host_5v";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-boot-on;
|
||||
+ enable-active-high;
|
||||
+ regulator-boot-on;
|
||||
+ enable-active-high;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ };
|
||||
+
|
||||
@ -200,6 +208,13 @@
|
||||
+ post-power-on-delay-ms = <100>;
|
||||
+ };
|
||||
+
|
||||
+ emmc_pwrseq: emmc-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-emmc";
|
||||
+ pinctrl-0 = <&emmc_reset>;
|
||||
+ pinctrl-names = "default";
|
||||
+ reset-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ * Sound taken from tinkerboard device tree, adapted to q8.
|
||||
+ */
|
||||
@ -217,27 +232,27 @@
|
||||
+ sound-dai = <&i2s>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ soundcard-spdif {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "SPDIF";
|
||||
+ simple-audio-card,dai-link@1 {
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&spdif>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&spdif_out>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spdif_out: spdif-out {
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ };
|
||||
+ soundcard-spdif {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "SPDIF";
|
||||
+ simple-audio-card,dai-link@1 {
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&spdif>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&spdif_out>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spdif_out: spdif-out {
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
+
|
||||
@ -303,8 +318,8 @@
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_gpu: syr828@41 {
|
||||
@ -318,8 +333,8 @@
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ hym8563: hym8563@51 {
|
||||
@ -351,7 +366,7 @@
|
||||
+ wakeup-source;
|
||||
+
|
||||
+ regulators {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Regulator controlling DDR memory - always on
|
||||
+ */
|
||||
@ -360,9 +375,12 @@
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -374,9 +392,12 @@
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -390,9 +411,12 @@
|
||||
+ regulator-min-microvolt = <1100000>;
|
||||
+ regulator-max-microvolt = <1100000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -405,9 +429,12 @@
|
||||
+ regulator-min-microvolt = <2000000>;
|
||||
+ regulator-max-microvolt = <2000000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -416,13 +443,16 @@
|
||||
+ */
|
||||
+ vccio_sd: REG5 {
|
||||
+ regulator-name = "vccio_sd";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -434,9 +464,12 @@
|
||||
+ regulator-min-microvolt = <1000000>;
|
||||
+ regulator-max-microvolt = <1000000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -449,9 +482,14 @@
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ The regulator can be set off in suspend, but kernel 5.4 modifications
|
||||
+ to enable suspend for ACT8865 device break the ACT8846
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -463,9 +501,14 @@
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on; // Turn this on to get SPDIF!
|
||||
+
|
||||
+ /*
|
||||
+ The regulator can be set off in suspend, but kernel 5.4 modifications
|
||||
+ to enable suspend for ACT8865 device break the ACT8846
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -475,9 +518,13 @@
|
||||
+ regulator-name = "vcc_lan";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -489,9 +536,13 @@
|
||||
+ regulator-min-microvolt = <1000000>;
|
||||
+ regulator-max-microvolt = <1000000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -503,9 +554,13 @@
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -518,9 +573,14 @@
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ The regulator can be set off in suspend, but kernel 5.4 modifications
|
||||
+ to enable suspend for ACT8865 device break the ACT8846
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
@ -535,7 +595,7 @@
|
||||
+};
|
||||
+
|
||||
+&i2c4 {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Here should go the RK1000 audio codec parts, but seems that
|
||||
+ * there is no driver in linux kernel at the moment, so we can't
|
||||
@ -545,7 +605,7 @@
|
||||
+ * http://dl.radxa.com/rock/docs/hw/ds/RK1000-S%20DATASHEET%20V14.pdf
|
||||
+ */
|
||||
+ status = "okay";
|
||||
+
|
||||
+
|
||||
+};
|
||||
+
|
||||
+&i2c5 {
|
||||
@ -575,12 +635,12 @@
|
||||
+ bias-pull-up;
|
||||
+ drive-strength = <8>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
|
||||
+ bias-pull-up;
|
||||
+ drive-strength = <8>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ pcfg_pull_none_8ma: pcfg-pull-none-8ma {
|
||||
+ bias-disable;
|
||||
+ drive-strength = <8>;
|
||||
@ -594,18 +654,18 @@
|
||||
+ pcfg_wl_int: pcfg-wl-int {
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ act8846 {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Original q8 device tree says:
|
||||
+ * - gpio0 11 HIGH -> power hold
|
||||
+ * - gpio7 1 LOW -> possibly pmic-vsel, we don't care
|
||||
+ */
|
||||
+ * - gpio7 1 LOW -> possibly pmic-vsel, we don't care
|
||||
+ */
|
||||
+ pmic_vsel: pmic-vsel {
|
||||
+ rockchip,pins = <7 1 RK_FUNC_GPIO &pcfg_output_low>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ pwr_hold: pwr-hold {
|
||||
+ rockchip,pins = <0 11 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
@ -650,7 +710,7 @@
|
||||
+ };
|
||||
+
|
||||
+ sdmmc {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Copied from firefly board definition to give more drive to
|
||||
+ * the sdmmc pins. The Q8 seems to be quite able to drive
|
||||
@ -701,14 +761,22 @@
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+ wireless-bluetooth {
|
||||
+ uart0_gpios: uart0-gpios {
|
||||
+ rockchip,pins = <4 19 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ emmc {
|
||||
+
|
||||
+ emmc_reset: emmc-reset {
|
||||
+ rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
+
|
||||
+&saradc {
|
||||
@ -717,24 +785,34 @@
|
||||
+};
|
||||
+
|
||||
+&emmc {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * eMMC seems to be 52Mhz device on q8 devices, so set it here
|
||||
+ * vmmc-supply and vqmmc-supply are removed because they hang
|
||||
+ * u-boot >= v2018.03
|
||||
+ * From the original q8l firmware and eMMC datasheet it also should
|
||||
+ * support DDR highspeed mode, but using mmc-ddr-3_3v or mmc-ddr-1_8v
|
||||
+ * properties are not working
|
||||
+ * eMMC is a 52Mhz DDR device on q8 devices, so set it here.
|
||||
+ * Setting default-sample-rate to 180 degrees is very important,
|
||||
+ * otherwise the eMMC is not stable and may not be able to negotiate
|
||||
+ * the right clock.
|
||||
+ * Despite the code already seems to use 180 degree phase when
|
||||
+ * MMC + 8bit bus is set, we need to set default phase here too.
|
||||
+ *
|
||||
+ * Huge hint came from this patch:
|
||||
+ * https://patchwork.kernel.org/patch/11129183/
|
||||
+ *
|
||||
+ */
|
||||
+ clock-frequency = <50000000>;
|
||||
+
|
||||
+ broken-cd;
|
||||
+ bus-width = <8>;
|
||||
+ cap-mmc-highspeed;
|
||||
+
|
||||
+ disable-wp;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>;
|
||||
+ pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
|
||||
+
|
||||
+ vmmc-supply = <&vcc_io>;
|
||||
+ vqmmc-supply = <&vcc_flash>;
|
||||
+
|
||||
+ mmc-pwrseq = <&emmc_pwrseq>;
|
||||
+ mmc-ddr-1_8v;
|
||||
+ rockchip,default-sample-phase = <180>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+};
|
||||
@ -746,9 +824,7 @@
|
||||
+ cap-mmc-highspeed;
|
||||
+ cap-sd-highspeed;
|
||||
+ cd-gpios = <&gpio6 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
+ cd-debounce-delay-ms = <200>;
|
||||
+ post-power-on-delay-ms = <50>;
|
||||
+ supports-cqe;
|
||||
+ cd-debounce-delay-ms = <500>;
|
||||
+ disable-wp;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
|
||||
@ -766,33 +842,33 @@
|
||||
+&sdio0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+
|
||||
+ bus-width = <4>;
|
||||
+ mmc-pwrseq = <&sdio0_pwrseq>;
|
||||
+
|
||||
+
|
||||
+ vmmc-supply = <&vcc_io>;
|
||||
+ vqmmc-supply = <&vcc_18>; // This must be the same as in io_domains,
|
||||
+ vqmmc-supply = <&vcc_18>; // This must be the same as in io_domains,
|
||||
+ // otherwise the mmc1 device won't be detected properly
|
||||
+
|
||||
+// clock-frequency = <50000000>;
|
||||
+// max-frequency = <50000000>;
|
||||
+
|
||||
+ // clock-frequency = <50000000>;
|
||||
+ // max-frequency = <50000000>;
|
||||
+
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
|
||||
+
|
||||
+ pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
|
||||
+
|
||||
+ cap-sdio-irq;
|
||||
+ no-mmc;
|
||||
+ no-sd;
|
||||
+ cap-sd-highspeed; // required, otherwise does not work!
|
||||
+ supports-sdio;
|
||||
+ supports-sdio;
|
||||
+ non-removable;
|
||||
+
|
||||
+
|
||||
+ keep-power-in-suspend;
|
||||
+ disable-wp;
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+ status = "okay";
|
||||
+
|
||||
+
|
||||
+ brcmf: bcrmf@1 {
|
||||
+ reg = <1>;
|
||||
+ compatible = "brcm,bcm4329-fmac";
|
||||
@ -800,8 +876,8 @@
|
||||
+ interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-names = "host-wake";
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+ //sd-uhs-sdr104; // required to be disabled, otherwise the device get
|
||||
+ // detected, but there is no communication
|
||||
+
|
||||
@ -823,13 +899,13 @@
|
||||
+ * These dmas described here for uarts are present in original q8 board
|
||||
+ * dts, so I replicate them here because documentation says that serial
|
||||
+ * ports can have dmas.
|
||||
+ * note:
|
||||
+ * note:
|
||||
+ * - uart0 is the serial port connected to the bluetooth module
|
||||
+ * - uart2 is the onboard serial port
|
||||
+ *
|
||||
+ * - uart2 is the onboard serial port
|
||||
+ *
|
||||
+ * As ok kernel 4.19 DMA for serial ports is disabled because it makes
|
||||
+ * the ports unusable
|
||||
+ *
|
||||
+ *
|
||||
+ */
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
@ -873,31 +949,25 @@
|
||||
+ * specify the proper resources for all the phys though.
|
||||
+ * The reference patch which works in conjuction with the reset lines:
|
||||
+ * https://patchwork.kernel.org/patch/9469811/
|
||||
+ *
|
||||
+ *
|
||||
+ */
|
||||
+&usbphy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbphy0 {
|
||||
+ vbus-supply = <&vcc_otg_5v>;
|
||||
+};
|
||||
+
|
||||
+&usbphy2 {
|
||||
+ vbus-supply = <&vcc_host_5v>;
|
||||
+};
|
||||
+
|
||||
+&usb_host0_ehci {
|
||||
+ dr_mode = "host";
|
||||
+ reg = <0x0 0xff500000 0x0 0x20000>;
|
||||
+ status = "disable";
|
||||
+ dr_mode = "host";
|
||||
+ reg = <0x0 0xff500000 0x0 0x20000>;
|
||||
+ status = "disable";
|
||||
+};
|
||||
+
|
||||
+&usb_host1 {
|
||||
+ vbus-supply = <&vcc_host_5v>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_otg {
|
||||
+ vbus-supply = <&vcc_otg_5v>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
@ -924,18 +994,10 @@
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+//&vpu_service {
|
||||
+// status = "okay";
|
||||
+//};
|
||||
+
|
||||
+&hevc_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+//&hevc_service {
|
||||
+// status = "okay";
|
||||
+//};
|
||||
+
|
||||
+&wdt {
|
||||
+ status = "okay";
|
||||
+};
|
||||
@ -978,8 +1040,28 @@
|
||||
+ opp-1608000000 {
|
||||
+ opp-microvolt = <1300000>;
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ Remove the overclocking/turbo frequencies
|
||||
+ */
|
||||
+ /delete-node/ opp@1704000000;
|
||||
+ /delete-node/ opp@1800000000;
|
||||
+ /delete-node/ opp@1896000000;
|
||||
+ /delete-node/ opp@1920000000;
|
||||
+ /delete-node/ opp@1992000000;
|
||||
+ /delete-node/ opp@2016000000;
|
||||
+ /delete-node/ opp@2040000000;
|
||||
+ /delete-node/ opp@2064000000;
|
||||
+ /delete-node/ opp@2088000000;
|
||||
+ /delete-node/ opp@2112000000;
|
||||
+ /delete-node/ opp@2136000000;
|
||||
+ /delete-node/ opp@2160000000;
|
||||
+ /delete-node/ opp@2184000000;
|
||||
+ /delete-node/ opp@2208000000;
|
||||
+
|
||||
+
|
||||
+};
|
||||
+
|
||||
+&gpiomem {
|
||||
+ status = "okay";
|
||||
+ status = "okay";
|
||||
+};
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
diff --git a/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts b/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts
|
||||
new file mode 100644
|
||||
index 000000000..539e445b4
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts 2019-08-03 13:55:48.719992666 +0000
|
||||
@@ -0,0 +1,982 @@
|
||||
+++ b/arch/arm/boot/dts/rk3288-xt-q8l-v10.dts
|
||||
@@ -0,0 +1,1061 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2014, 2015 FUKAUMI Naoki <naobsd@gmail.com>
|
||||
+ * 2018 Paolo Sabatino <paolo.sabatino@gm**l.com>
|
||||
@ -53,7 +56,7 @@
|
||||
+ model = "XT-Q8L-V10-RK3288";
|
||||
+ compatible = "generic,xt-q8l-v10-rk3288", "rockchip,rk3288";
|
||||
+
|
||||
+ memory {
|
||||
+ memory@0 {
|
||||
+ reg = <0x0 0x0 0x0 0x80000000>;
|
||||
+ device_type = "memory";
|
||||
+ };
|
||||
@ -83,7 +86,7 @@
|
||||
+ clock-frequency = <125000000>;
|
||||
+ clock-output-names = "ext_gmac";
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Handle the IR receiver using the gpio-ir-receiver kernel module.
|
||||
+ * This works flawlessy, the original xt-q8l-v10 remote uses a NEC
|
||||
@ -97,13 +100,13 @@
|
||||
+ pinctrl-0 = <&ir_int>;
|
||||
+ linux,rc-map-name = "rc-xt-q8l-v10";
|
||||
+ wakeup-source;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ keys: gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pwr_key>;
|
||||
+
|
||||
@ -115,7 +118,7 @@
|
||||
+ wakeup-source;
|
||||
+ debounce-interval = <100>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
@ -127,7 +130,7 @@
|
||||
+ so while there is mass storage access it turns red and
|
||||
+ when it is idle is blue
|
||||
+ */
|
||||
+ gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
|
||||
+ gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
|
||||
+ label = "power";
|
||||
+ linux,default-trigger = "mmc0";
|
||||
+ pinctrl-names = "default";
|
||||
@ -162,7 +165,12 @@
|
||||
+ regulator-name = "vcc_flash";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ /*gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>;
|
||||
+ states = <1800000 0>,
|
||||
+ <3300000 1>;
|
||||
+ */
|
||||
+ vin-supply = <&vcc_io>;
|
||||
+ startup-delay-us = <100000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_host_5v: usb-host-regulator {
|
||||
@ -171,8 +179,8 @@
|
||||
+ regulator-name = "vcc_host_5v";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-boot-on;
|
||||
+ enable-active-high;
|
||||
+ regulator-boot-on;
|
||||
+ enable-active-high;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ };
|
||||
+
|
||||
@ -200,6 +208,13 @@
|
||||
+ post-power-on-delay-ms = <100>;
|
||||
+ };
|
||||
+
|
||||
+ emmc_pwrseq: emmc-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-emmc";
|
||||
+ pinctrl-0 = <&emmc_reset>;
|
||||
+ pinctrl-names = "default";
|
||||
+ reset-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ * Sound taken from tinkerboard device tree, adapted to q8.
|
||||
+ */
|
||||
@ -217,27 +232,27 @@
|
||||
+ sound-dai = <&i2s>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ soundcard-spdif {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "SPDIF";
|
||||
+ simple-audio-card,dai-link@1 {
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&spdif>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&spdif_out>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spdif_out: spdif-out {
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ };
|
||||
+ soundcard-spdif {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "SPDIF";
|
||||
+ simple-audio-card,dai-link@1 {
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&spdif>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&spdif_out>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spdif_out: spdif-out {
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
+
|
||||
@ -303,8 +318,8 @@
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_gpu: syr828@41 {
|
||||
@ -318,8 +333,8 @@
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <&vcc_sys>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ hym8563: hym8563@51 {
|
||||
@ -351,7 +366,7 @@
|
||||
+ wakeup-source;
|
||||
+
|
||||
+ regulators {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Regulator controlling DDR memory - always on
|
||||
+ */
|
||||
@ -360,9 +375,12 @@
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -374,9 +392,12 @@
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -390,9 +411,12 @@
|
||||
+ regulator-min-microvolt = <1100000>;
|
||||
+ regulator-max-microvolt = <1100000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -405,9 +429,12 @@
|
||||
+ regulator-min-microvolt = <2000000>;
|
||||
+ regulator-max-microvolt = <2000000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -416,13 +443,16 @@
|
||||
+ */
|
||||
+ vccio_sd: REG5 {
|
||||
+ regulator-name = "vccio_sd";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -434,9 +464,12 @@
|
||||
+ regulator-min-microvolt = <1000000>;
|
||||
+ regulator-max-microvolt = <1000000>;
|
||||
+ regulator-always-on;
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -449,9 +482,14 @@
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ The regulator can be set off in suspend, but kernel 5.4 modifications
|
||||
+ to enable suspend for ACT8865 device break the ACT8846
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -463,9 +501,14 @@
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on; // Turn this on to get SPDIF!
|
||||
+
|
||||
+ /*
|
||||
+ The regulator can be set off in suspend, but kernel 5.4 modifications
|
||||
+ to enable suspend for ACT8865 device break the ACT8846
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -475,9 +518,13 @@
|
||||
+ regulator-name = "vcc_lan";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -489,9 +536,13 @@
|
||||
+ regulator-min-microvolt = <1000000>;
|
||||
+ regulator-max-microvolt = <1000000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -503,9 +554,13 @@
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ * Broken in kernel 5.4
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
@ -518,9 +573,14 @@
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+
|
||||
+ /*
|
||||
+ The regulator can be set off in suspend, but kernel 5.4 modifications
|
||||
+ to enable suspend for ACT8865 device break the ACT8846
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
@ -535,7 +595,7 @@
|
||||
+};
|
||||
+
|
||||
+&i2c4 {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Here should go the RK1000 audio codec parts, but seems that
|
||||
+ * there is no driver in linux kernel at the moment, so we can't
|
||||
@ -545,7 +605,7 @@
|
||||
+ * http://dl.radxa.com/rock/docs/hw/ds/RK1000-S%20DATASHEET%20V14.pdf
|
||||
+ */
|
||||
+ status = "okay";
|
||||
+
|
||||
+
|
||||
+};
|
||||
+
|
||||
+&i2c5 {
|
||||
@ -575,12 +635,12 @@
|
||||
+ bias-pull-up;
|
||||
+ drive-strength = <8>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
|
||||
+ bias-pull-up;
|
||||
+ drive-strength = <8>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ pcfg_pull_none_8ma: pcfg-pull-none-8ma {
|
||||
+ bias-disable;
|
||||
+ drive-strength = <8>;
|
||||
@ -594,18 +654,18 @@
|
||||
+ pcfg_wl_int: pcfg-wl-int {
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ act8846 {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Original q8 device tree says:
|
||||
+ * - gpio0 11 HIGH -> power hold
|
||||
+ * - gpio7 1 LOW -> possibly pmic-vsel, we don't care
|
||||
+ */
|
||||
+ * - gpio7 1 LOW -> possibly pmic-vsel, we don't care
|
||||
+ */
|
||||
+ pmic_vsel: pmic-vsel {
|
||||
+ rockchip,pins = <7 1 RK_FUNC_GPIO &pcfg_output_low>;
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ pwr_hold: pwr-hold {
|
||||
+ rockchip,pins = <0 11 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
@ -650,7 +710,7 @@
|
||||
+ };
|
||||
+
|
||||
+ sdmmc {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * Copied from firefly board definition to give more drive to
|
||||
+ * the sdmmc pins. The Q8 seems to be quite able to drive
|
||||
@ -701,14 +761,22 @@
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+ wireless-bluetooth {
|
||||
+ uart0_gpios: uart0-gpios {
|
||||
+ rockchip,pins = <4 19 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ emmc {
|
||||
+
|
||||
+ emmc_reset: emmc-reset {
|
||||
+ rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+};
|
||||
+
|
||||
+&saradc {
|
||||
@ -717,24 +785,34 @@
|
||||
+};
|
||||
+
|
||||
+&emmc {
|
||||
+
|
||||
+
|
||||
+ /*
|
||||
+ * eMMC seems to be 52Mhz device on q8 devices, so set it here
|
||||
+ * vmmc-supply and vqmmc-supply are removed because they hang
|
||||
+ * u-boot >= v2018.03
|
||||
+ * From the original q8l firmware and eMMC datasheet it also should
|
||||
+ * support DDR highspeed mode, but using mmc-ddr-3_3v or mmc-ddr-1_8v
|
||||
+ * properties are not working
|
||||
+ * eMMC is a 52Mhz DDR device on q8 devices, so set it here.
|
||||
+ * Setting default-sample-rate to 180 degrees is very important,
|
||||
+ * otherwise the eMMC is not stable and may not be able to negotiate
|
||||
+ * the right clock.
|
||||
+ * Despite the code already seems to use 180 degree phase when
|
||||
+ * MMC + 8bit bus is set, we need to set default phase here too.
|
||||
+ *
|
||||
+ * Huge hint came from this patch:
|
||||
+ * https://patchwork.kernel.org/patch/11129183/
|
||||
+ *
|
||||
+ */
|
||||
+ clock-frequency = <50000000>;
|
||||
+
|
||||
+ broken-cd;
|
||||
+ bus-width = <8>;
|
||||
+ cap-mmc-highspeed;
|
||||
+
|
||||
+ disable-wp;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>;
|
||||
+ pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
|
||||
+
|
||||
+ vmmc-supply = <&vcc_io>;
|
||||
+ vqmmc-supply = <&vcc_flash>;
|
||||
+
|
||||
+ mmc-pwrseq = <&emmc_pwrseq>;
|
||||
+ mmc-ddr-1_8v;
|
||||
+ rockchip,default-sample-phase = <180>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+};
|
||||
@ -746,9 +824,7 @@
|
||||
+ cap-mmc-highspeed;
|
||||
+ cap-sd-highspeed;
|
||||
+ cd-gpios = <&gpio6 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||
+ cd-debounce-delay-ms = <200>;
|
||||
+ post-power-on-delay-ms = <50>;
|
||||
+ supports-cqe;
|
||||
+ cd-debounce-delay-ms = <500>;
|
||||
+ disable-wp;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
|
||||
@ -766,33 +842,33 @@
|
||||
+&sdio0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+
|
||||
+ bus-width = <4>;
|
||||
+ mmc-pwrseq = <&sdio0_pwrseq>;
|
||||
+
|
||||
+
|
||||
+ vmmc-supply = <&vcc_io>;
|
||||
+ vqmmc-supply = <&vcc_18>; // This must be the same as in io_domains,
|
||||
+ vqmmc-supply = <&vcc_18>; // This must be the same as in io_domains,
|
||||
+ // otherwise the mmc1 device won't be detected properly
|
||||
+
|
||||
+// clock-frequency = <50000000>;
|
||||
+// max-frequency = <50000000>;
|
||||
+
|
||||
+ // clock-frequency = <50000000>;
|
||||
+ // max-frequency = <50000000>;
|
||||
+
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
|
||||
+
|
||||
+ pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
|
||||
+
|
||||
+ cap-sdio-irq;
|
||||
+ no-mmc;
|
||||
+ no-sd;
|
||||
+ cap-sd-highspeed; // required, otherwise does not work!
|
||||
+ supports-sdio;
|
||||
+ supports-sdio;
|
||||
+ non-removable;
|
||||
+
|
||||
+
|
||||
+ keep-power-in-suspend;
|
||||
+ disable-wp;
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+ status = "okay";
|
||||
+
|
||||
+
|
||||
+ brcmf: bcrmf@1 {
|
||||
+ reg = <1>;
|
||||
+ compatible = "brcm,bcm4329-fmac";
|
||||
@ -800,8 +876,8 @@
|
||||
+ interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-names = "host-wake";
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+
|
||||
+ //sd-uhs-sdr104; // required to be disabled, otherwise the device get
|
||||
+ // detected, but there is no communication
|
||||
+
|
||||
@ -823,13 +899,13 @@
|
||||
+ * These dmas described here for uarts are present in original q8 board
|
||||
+ * dts, so I replicate them here because documentation says that serial
|
||||
+ * ports can have dmas.
|
||||
+ * note:
|
||||
+ * note:
|
||||
+ * - uart0 is the serial port connected to the bluetooth module
|
||||
+ * - uart2 is the onboard serial port
|
||||
+ *
|
||||
+ * - uart2 is the onboard serial port
|
||||
+ *
|
||||
+ * As ok kernel 4.19 DMA for serial ports is disabled because it makes
|
||||
+ * the ports unusable
|
||||
+ *
|
||||
+ *
|
||||
+ */
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
@ -873,31 +949,25 @@
|
||||
+ * specify the proper resources for all the phys though.
|
||||
+ * The reference patch which works in conjuction with the reset lines:
|
||||
+ * https://patchwork.kernel.org/patch/9469811/
|
||||
+ *
|
||||
+ *
|
||||
+ */
|
||||
+&usbphy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbphy0 {
|
||||
+ vbus-supply = <&vcc_otg_5v>;
|
||||
+};
|
||||
+
|
||||
+&usbphy2 {
|
||||
+ vbus-supply = <&vcc_host_5v>;
|
||||
+};
|
||||
+
|
||||
+&usb_host0_ehci {
|
||||
+ dr_mode = "host";
|
||||
+ reg = <0x0 0xff500000 0x0 0x20000>;
|
||||
+ status = "disable";
|
||||
+ dr_mode = "host";
|
||||
+ reg = <0x0 0xff500000 0x0 0x20000>;
|
||||
+ status = "disable";
|
||||
+};
|
||||
+
|
||||
+&usb_host1 {
|
||||
+ vbus-supply = <&vcc_host_5v>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_otg {
|
||||
+ vbus-supply = <&vcc_otg_5v>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
@ -924,18 +994,10 @@
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+//&vpu_service {
|
||||
+// status = "okay";
|
||||
+//};
|
||||
+
|
||||
+&hevc_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+//&hevc_service {
|
||||
+// status = "okay";
|
||||
+//};
|
||||
+
|
||||
+&wdt {
|
||||
+ status = "okay";
|
||||
+};
|
||||
@ -978,8 +1040,28 @@
|
||||
+ opp-1608000000 {
|
||||
+ opp-microvolt = <1300000>;
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ Remove the overclocking/turbo frequencies
|
||||
+ */
|
||||
+ /delete-node/ opp@1704000000;
|
||||
+ /delete-node/ opp@1800000000;
|
||||
+ /delete-node/ opp@1896000000;
|
||||
+ /delete-node/ opp@1920000000;
|
||||
+ /delete-node/ opp@1992000000;
|
||||
+ /delete-node/ opp@2016000000;
|
||||
+ /delete-node/ opp@2040000000;
|
||||
+ /delete-node/ opp@2064000000;
|
||||
+ /delete-node/ opp@2088000000;
|
||||
+ /delete-node/ opp@2112000000;
|
||||
+ /delete-node/ opp@2136000000;
|
||||
+ /delete-node/ opp@2160000000;
|
||||
+ /delete-node/ opp@2184000000;
|
||||
+ /delete-node/ opp@2208000000;
|
||||
+
|
||||
+
|
||||
+};
|
||||
+
|
||||
+&gpiomem {
|
||||
+ status = "okay";
|
||||
+ status = "okay";
|
||||
+};
|
||||
|
||||
5145
patch/kernel/rockchip-legacy/patch-4.4.211-212.patch
Normal file
5145
patch/kernel/rockchip-legacy/patch-4.4.211-212.patch
Normal file
File diff suppressed because it is too large
Load Diff
1559
patch/kernel/rockchip-legacy/patch-4.4.212-213.patch
Normal file
1559
patch/kernel/rockchip-legacy/patch-4.4.212-213.patch
Normal file
File diff suppressed because it is too large
Load Diff
66
patch/kernel/rockchip64-current/add-RK3328-audio-path.patch
Normal file
66
patch/kernel/rockchip64-current/add-RK3328-audio-path.patch
Normal file
@ -0,0 +1,66 @@
|
||||
From 29e8976e604f15838a71959ab853a802617113f9 Mon Sep 17 00:00:00 2001
|
||||
From: Robin Murphy <robin.murphy@arm.com>
|
||||
Date: Mon, 14 Oct 2019 23:19:05 +0100
|
||||
Subject: [PATCH] arm64: dts: rockchip: Add RK3328 audio pipelines
|
||||
|
||||
The audio pipelines for HDMI and the analog codec are internal to the
|
||||
SoC, so it makes sense to describe them at that level such that boards
|
||||
need only enable the respective nodes for outputs they implement.
|
||||
|
||||
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
|
||||
Link: https://lore.kernel.org/r/a09c8d795e7a66fb7bc47af2b6580f6e8dbec91e.1571090991.git.robin.murphy@arm.com
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 32 ++++++++++++++++++++++++
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
index 31cc1541f1f59..91306ebed4da2 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
@@ -142,6 +142,22 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ analog_sound: analog-sound {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,format = "i2s";
|
||||
+ simple-audio-card,mclk-fs = <256>;
|
||||
+ simple-audio-card,name = "Analog";
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&i2s1>;
|
||||
+ };
|
||||
+
|
||||
+ simple-audio-card,codec {
|
||||
+ sound-dai = <&codec>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
arm-pmu {
|
||||
compatible = "arm,cortex-a53-pmu";
|
||||
interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
|
||||
@@ -156,6 +172,22 @@
|
||||
ports = <&vop_out>;
|
||||
};
|
||||
|
||||
+ hdmi_sound: hdmi-sound {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,format = "i2s";
|
||||
+ simple-audio-card,mclk-fs = <128>;
|
||||
+ simple-audio-card,name = "HDMI";
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&i2s0>;
|
||||
+ };
|
||||
+
|
||||
+ simple-audio-card,codec {
|
||||
+ sound-dai = <&hdmi>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
psci {
|
||||
compatible = "arm,psci-1.0", "arm,psci-0.2";
|
||||
method = "smc";
|
||||
90
patch/kernel/rockchip64-current/board-rock64-add-audio.patch
Normal file
90
patch/kernel/rockchip64-current/board-rock64-add-audio.patch
Normal file
@ -0,0 +1,90 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
index f97446924..d9a1cb24a 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
@@ -83,34 +83,14 @@
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
+};
|
||||
|
||||
- sound {
|
||||
- compatible = "audio-graph-card";
|
||||
- label = "rockchip,rk3328";
|
||||
- dais = <&i2s1_p0
|
||||
- &spdif_p0>;
|
||||
- };
|
||||
-
|
||||
- spdif-dit {
|
||||
- compatible = "linux,spdif-dit";
|
||||
- #sound-dai-cells = <0>;
|
||||
-
|
||||
- port {
|
||||
- dit_p0_0: endpoint {
|
||||
- remote-endpoint = <&spdif_p0_0>;
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
+&analog_sound {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&codec {
|
||||
status = "okay";
|
||||
-
|
||||
- port@0 {
|
||||
- codec_p0_0: endpoint {
|
||||
- remote-endpoint = <&i2s1_p0_0>;
|
||||
- };
|
||||
- };
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
@@ -166,6 +146,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&hdmi_sound {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
@@ -277,16 +261,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
-&i2s1 {
|
||||
+&i2s0 {
|
||||
status = "okay";
|
||||
+};
|
||||
|
||||
- i2s1_p0: port {
|
||||
- i2s1_p0_0: endpoint {
|
||||
- dai-format = "i2s";
|
||||
- mclk-fs = <256>;
|
||||
- remote-endpoint = <&codec_p0_0>;
|
||||
- };
|
||||
- };
|
||||
+&i2s1 {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&io_domains {
|
||||
@@ -336,12 +316,10 @@
|
||||
&spdif {
|
||||
pinctrl-0 = <&spdifm0_tx>;
|
||||
status = "okay";
|
||||
+};
|
||||
|
||||
- spdif_p0: port {
|
||||
- spdif_p0_0: endpoint {
|
||||
- remote-endpoint = <&dit_p0_0>;
|
||||
- };
|
||||
- };
|
||||
+&spdif_sound {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
@ -0,0 +1,268 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
index f4b6799a8..a1041ec3e 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
@@ -21,32 +21,24 @@
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
- dc_12v: dc-12v {
|
||||
- compatible = "regulator-fixed";
|
||||
- regulator-name = "dc_12v";
|
||||
- regulator-always-on;
|
||||
- regulator-boot-on;
|
||||
- regulator-min-microvolt = <12000000>;
|
||||
- regulator-max-microvolt = <12000000>;
|
||||
- };
|
||||
-
|
||||
vcc_sd: sdmmc-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
- gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||
+ gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0m1_gpio>;
|
||||
+ regulator-boot-on;
|
||||
regulator-name = "vcc_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
|
||||
- vcc_sdio: sdmmcio-regulator {
|
||||
+ vccio_sd: sdmmcio-regulator {
|
||||
compatible = "regulator-gpio";
|
||||
gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
|
||||
states = <1800000 0x1
|
||||
3300000 0x0>;
|
||||
- regulator-name = "vcc_sdio";
|
||||
+ regulator-name = "vccio_sd";
|
||||
regulator-type = "voltage";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
@@ -68,11 +60,8 @@
|
||||
vcc_sys: vcc-sys {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_sys";
|
||||
- regulator-always-on;
|
||||
- regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
- vin-supply = <&dc_12v>;
|
||||
};
|
||||
|
||||
vcc_phy: vcc-phy-regulator {
|
||||
@@ -82,6 +71,13 @@
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
+ ir-receiver {
|
||||
+ compatible = "gpio-ir-receiver";
|
||||
+ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||
+ pinctrl-0 = <&ir_int>;
|
||||
+ pinctrl-names = "default";
|
||||
+ };
|
||||
+
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
@@ -103,6 +99,15 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&analog_sound {
|
||||
+ simple-audio-card,name = "TRS Jack";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&codec {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&cpu0 {
|
||||
cpu-supply = <&vdd_arm>;
|
||||
};
|
||||
@@ -122,7 +127,6 @@
|
||||
&emmc {
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
- max-frequency = <150000000>;
|
||||
mmc-ddr-1_8v;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
@@ -152,6 +156,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&gpu {
|
||||
+ mali-supply = <&vdd_logic>;
|
||||
+};
|
||||
+
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -160,6 +168,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&hdmi_sound {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
@@ -187,8 +199,9 @@
|
||||
regulators {
|
||||
vdd_logic: DCDC_REG1 {
|
||||
regulator-name = "vdd_logic";
|
||||
- regulator-min-microvolt = <712500>;
|
||||
- regulator-max-microvolt = <1450000>;
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <1150000>;
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
@@ -199,8 +212,9 @@
|
||||
|
||||
vdd_arm: DCDC_REG2 {
|
||||
regulator-name = "vdd_arm";
|
||||
- regulator-min-microvolt = <712500>;
|
||||
- regulator-max-microvolt = <1450000>;
|
||||
+ regulator-min-microvolt = <950000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
@@ -269,12 +283,20 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&i2s0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2s1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&io_domains {
|
||||
status = "okay";
|
||||
|
||||
vccio1-supply = <&vcc_io>;
|
||||
vccio2-supply = <&vcc18_emmc>;
|
||||
- vccio3-supply = <&vcc_sdio>;
|
||||
+ vccio3-supply = <&vccio_sd>;
|
||||
vccio4-supply = <&vcc_18>;
|
||||
vccio5-supply = <&vcc_io>;
|
||||
vccio6-supply = <&vcc_io>;
|
||||
@@ -282,6 +304,12 @@
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
+ ir {
|
||||
+ ir_int: ir-int {
|
||||
+ rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
pmic {
|
||||
pmic_int_l: pmic-int-l {
|
||||
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
@@ -308,11 +336,26 @@
|
||||
sd-uhs-sdr50;
|
||||
sd-uhs-sdr104;
|
||||
vmmc-supply = <&vcc_sd>;
|
||||
- vqmmc-supply = <&vcc_sdio>;
|
||||
+ vqmmc-supply = <&vccio_sd>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdif {
|
||||
+ pinctrl-0 = <&spdifm0_tx>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdif_out {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdif_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
+ rockchip,hw-tshut-mode = <0>;
|
||||
+ rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
index eedc25132..5c62f0116 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
@@ -198,6 +198,26 @@
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
+ spdif_out: spdif-out {
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ spdif_sound: spdif-sound {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "SPDIF";
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&spdif>;
|
||||
+ };
|
||||
+
|
||||
+ simple-audio-card,codec {
|
||||
+ sound-dai = <&spdif_out>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
@@ -319,6 +339,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
+
|
||||
+ pd_gpu@RK3328_PD_GPU {
|
||||
+ reg = <RK3328_PD_GPU>;
|
||||
+ clocks = <&cru ACLK_GPU>;
|
||||
+ };
|
||||
+
|
||||
reboot-mode {
|
||||
compatible = "syscon-reboot-mode";
|
||||
offset = <0x5c8>;
|
||||
@@ -609,6 +635,7 @@
|
||||
"ppmmu1";
|
||||
clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>;
|
||||
clock-names = "bus", "core";
|
||||
+ power-domains = <&power RK3328_PD_GPU>;
|
||||
resets = <&cru SRST_GPU_A>;
|
||||
};
|
||||
|
||||
@@ -781,6 +808,7 @@
|
||||
<&cru ACLK_BUS_PRE>, <&cru HCLK_BUS_PRE>,
|
||||
<&cru PCLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
|
||||
<&cru HCLK_PERI>, <&cru PCLK_PERI>,
|
||||
+ <&cru ACLK_GPU>,
|
||||
<&cru SCLK_RTC32K>;
|
||||
assigned-clock-parents =
|
||||
<&cru HDMIPHY>, <&cru PLL_APLL>,
|
||||
@@ -802,6 +830,7 @@
|
||||
<150000000>, <75000000>,
|
||||
<75000000>, <150000000>,
|
||||
<75000000>, <75000000>,
|
||||
+ <500000000>,
|
||||
<32768>;
|
||||
};
|
||||
|
||||
@ -0,0 +1,125 @@
|
||||
Existing RK3328 codec drivers have overloaded the GRF phandle to assume
|
||||
implicit control of the limited-function GPIO_MUTE pin, which is usually
|
||||
used to enable an external audio line driver IC. Since this pin has a
|
||||
proper binding of its own (see gpio/rockchip,rk3328-grf-gpio.txt), make
|
||||
a GPIO explicit in the codec binding too. This will help avoid ambiguity
|
||||
on boards that use that pin for some other purpose.
|
||||
|
||||
(and while touching the example, enforce the "don't include status" rule)
|
||||
|
||||
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
|
||||
---
|
||||
.../devicetree/bindings/sound/rockchip,rk3328-codec.txt | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/sound/rockchip,rk3328-codec.txt b/Documentation/devicetree/bindings/sound/rockchip,rk3328-codec.txt
|
||||
index 2469588c7ccb..1ecd75d2032a 100644
|
||||
--- a/Documentation/devicetree/bindings/sound/rockchip,rk3328-codec.txt
|
||||
+++ b/Documentation/devicetree/bindings/sound/rockchip,rk3328-codec.txt
|
||||
@@ -10,6 +10,11 @@ Required properties:
|
||||
- clock-names: should be "pclk".
|
||||
- spk-depop-time-ms: speak depop time msec.
|
||||
|
||||
+Optional properties:
|
||||
+
|
||||
+- mute-gpios: GPIO specifier for external line driver control (typically the
|
||||
+ dedicated GPIO_MUTE pin)
|
||||
+
|
||||
Example for rk3328 internal codec:
|
||||
|
||||
codec: codec@ff410000 {
|
||||
@@ -18,6 +23,6 @@ codec: codec@ff410000 {
|
||||
rockchip,grf = <&grf>;
|
||||
clocks = <&cru PCLK_ACODEC>;
|
||||
clock-names = "pclk";
|
||||
+ mute-gpios = <&grf_gpio 0 GPIO_ACTIVE_LOW>;
|
||||
spk-depop-time-ms = 100;
|
||||
- status = "disabled";
|
||||
};
|
||||
|
||||
diff --git a/sound/soc/codecs/rk3328_codec.c b/sound/soc/codecs/rk3328_codec.c
|
||||
index 287c962ba00d..f0e9ef21c5f8 100644
|
||||
--- a/sound/soc/codecs/rk3328_codec.c
|
||||
+++ b/sound/soc/codecs/rk3328_codec.c
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/device.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
@@ -31,7 +32,7 @@
|
||||
|
||||
struct rk3328_codec_priv {
|
||||
struct regmap *regmap;
|
||||
- struct regmap *grf;
|
||||
+ struct gpio_desc *mute;
|
||||
struct clk *mclk;
|
||||
struct clk *pclk;
|
||||
unsigned int sclk;
|
||||
@@ -106,16 +107,6 @@ static int rk3328_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static void rk3328_analog_output(struct rk3328_codec_priv *rk3328, int mute)
|
||||
-{
|
||||
- unsigned int val = BIT(17);
|
||||
-
|
||||
- if (mute)
|
||||
- val |= BIT(1);
|
||||
-
|
||||
- regmap_write(rk3328->grf, RK3328_GRF_SOC_CON10, val);
|
||||
-}
|
||||
-
|
||||
static int rk3328_digital_mute(struct snd_soc_dai *dai, int mute)
|
||||
{
|
||||
struct rk3328_codec_priv *rk3328 =
|
||||
@@ -205,7 +196,7 @@ static int rk3328_codec_open_playback(struct rk3328_codec_priv *rk3328)
|
||||
}
|
||||
|
||||
msleep(rk3328->spk_depop_time);
|
||||
- rk3328_analog_output(rk3328, 1);
|
||||
+ gpiod_set_value(rk3328->mute, 0);
|
||||
|
||||
regmap_update_bits(rk3328->regmap, HPOUTL_GAIN_CTRL,
|
||||
HPOUTL_GAIN_MASK, OUT_VOLUME);
|
||||
@@ -246,7 +237,7 @@ static int rk3328_codec_close_playback(struct rk3328_codec_priv *rk3328)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
- rk3328_analog_output(rk3328, 0);
|
||||
+ gpiod_set_value(rk3328->mute, 1);
|
||||
|
||||
regmap_update_bits(rk3328->regmap, HPOUTL_GAIN_CTRL,
|
||||
HPOUTL_GAIN_MASK, 0);
|
||||
@@ -446,7 +437,6 @@ static int rk3328_platform_probe(struct platform_device *pdev)
|
||||
dev_err(&pdev->dev, "missing 'rockchip,grf'\n");
|
||||
return PTR_ERR(grf);
|
||||
}
|
||||
- rk3328->grf = grf;
|
||||
/* enable i2s_acodec_en */
|
||||
regmap_write(grf, RK3328_GRF_SOC_CON2,
|
||||
(BIT(14) << 16 | BIT(14)));
|
||||
@@ -458,7 +448,7 @@ static int rk3328_platform_probe(struct platform_device *pdev)
|
||||
rk3328->spk_depop_time = 200;
|
||||
}
|
||||
|
||||
- rk3328_analog_output(rk3328, 0);
|
||||
+ rk3328->mute = gpiod_get_optional(&pdev->dev, "mute", GPIOD_OUT_HIGH);
|
||||
|
||||
rk3328->mclk = devm_clk_get(&pdev->dev, "mclk");
|
||||
if (IS_ERR(rk3328->mclk))
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
index 62936b432f9a..bf3e546f5266 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
@@ -104,6 +104,7 @@
|
||||
};
|
||||
|
||||
&codec {
|
||||
+ mute-gpios = <&grf_gpio 0 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
port@0 {
|
||||
@ -1,5 +1,5 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
index d687b146e..6d49a3f7a 100644
|
||||
index aed41ff1d..92d796a33 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -26,6 +26,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb
|
||||
@ -7,9 +7,9 @@ index d687b146e..6d49a3f7a 100644
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi-4.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-pinebook-pro.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4.dtb
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-orangepi-4.dts b/arch/arm64/boot/dts/rockchip/rk3399-orangepi-4.dts
|
||||
new file mode 100644
|
||||
index 00000000..17010305
|
||||
@ -469,7 +469,7 @@ index 00000000..17010305
|
||||
+};
|
||||
+
|
||||
+&uart4 {
|
||||
+ status = "okay";
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&vopb {
|
||||
|
||||
1504
patch/kernel/rockchip64-dev/add-rk3328-usb3-phy-driver.patch
Executable file
1504
patch/kernel/rockchip64-dev/add-rk3328-usb3-phy-driver.patch
Executable file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,26 @@
|
||||
From 57825a7190ac09a1e273cab12e797010fcb7a1c9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= <ayufan@ayufan.eu>
|
||||
Date: Sun, 30 Dec 2018 13:32:47 +0100
|
||||
Subject: [PATCH] ayufan: dts: rockpro64: change rx_delay for gmac
|
||||
|
||||
Change-Id: Ib3899f684188aa1ed1545717af004bba53fe0e07
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
index cdab3089046c..0db9de46ff16 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
@@ -249,7 +249,7 @@
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 10000 50000>;
|
||||
tx_delay = <0x28>;
|
||||
- rx_delay = <0x11>;
|
||||
+ rx_delay = <0x20>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@ -1,45 +0,0 @@
|
||||
From a6694d42593994487c55738e790a3728b1a07706 Mon Sep 17 00:00:00 2001
|
||||
From: Levin Du <djw@t-chip.com.cn>
|
||||
Date: Wed, 15 Aug 2018 17:39:46 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: enable HDMI display nodes on
|
||||
roc-rk3328-cc
|
||||
|
||||
Enable necessary nodes to get output on the hdmi port of the board.
|
||||
|
||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||
Signed-off-by: Levin Du <djw@t-chip.com.cn>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
index 6ba67963eaf5..8e85f07092bb 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
@@ -112,6 +112,14 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&hdmi {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmiphy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
@@ -304,3 +312,11 @@
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&vop {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vop_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
@ -1,30 +0,0 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
index 33c44e857..171c377f8 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
@@ -81,6 +81,25 @@
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ power {
|
||||
+ label = "firefly:blue:power";
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "on";
|
||||
+ mode = <0x23>;
|
||||
+ };
|
||||
+
|
||||
+ user {
|
||||
+ label = "firefly:yellow:user";
|
||||
+ linux,default-trigger = "mmc1";
|
||||
+ gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ mode = <0x05>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
@ -1,30 +0,0 @@
|
||||
From 41ae689ad428568a22f06fcb248f20af52770afe Mon Sep 17 00:00:00 2001
|
||||
From: Levin Du <djw@t-chip.com.cn>
|
||||
Date: Wed, 15 Aug 2018 17:22:37 +0800
|
||||
Subject: [PATCH] arm64: dts: rockchip: enable usb3 for roc-rk3328-cc board
|
||||
|
||||
Enable the USB 3.0 OTG controller and set as static xHCI host controller to
|
||||
support USB 3.0 HOST.
|
||||
|
||||
Signed-off-by: Levin Du <djw@t-chip.com.cn>
|
||||
---
|
||||
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
index 99d0d9912950..6ba67963eaf5 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
@@ -295,3 +295,12 @@
|
||||
&usb_host0_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&usbdrd3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbdrd_dwc3 {
|
||||
+ dr_mode = "host";
|
||||
+ status = "okay";
|
||||
+};
|
||||
@ -1,5 +1,5 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
index 994e7bdb3..11454de93 100644
|
||||
index a1041ec3e..bb8748553 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
@@ -14,6 +14,21 @@
|
||||
@ -24,14 +24,14 @@ index 994e7bdb3..11454de93 100644
|
||||
gmac_clkin: external-gmac-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <125000000>;
|
||||
@@ -81,28 +96,21 @@
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
@@ -77,26 +92,6 @@
|
||||
pinctrl-0 = <&ir_int>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
+};
|
||||
|
||||
-
|
||||
- leds {
|
||||
- compatible = "gpio-leds";
|
||||
-
|
||||
- power {
|
||||
- label = "firefly:blue:power";
|
||||
- linux,default-trigger = "heartbeat";
|
||||
@ -39,10 +39,7 @@ index 994e7bdb3..11454de93 100644
|
||||
- default-state = "on";
|
||||
- mode = <0x23>;
|
||||
- };
|
||||
+&cpu0 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
|
||||
-
|
||||
- user {
|
||||
- label = "firefly:yellow:user";
|
||||
- linux,default-trigger = "mmc1";
|
||||
@ -51,42 +48,6 @@ index 994e7bdb3..11454de93 100644
|
||||
- mode = <0x05>;
|
||||
- };
|
||||
- };
|
||||
+&cpu1 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
};
|
||||
|
||||
-&cpu0 {
|
||||
+&cpu2 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cpu3 {
|
||||
cpu-supply = <&vdd_arm>;
|
||||
};
|
||||
|
||||
@@ -326,19 +334,20 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&vop {
|
||||
+&usbdrd3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&vop_mmu {
|
||||
+&usbdrd_dwc3 {
|
||||
+ dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&usbdrd3 {
|
||||
+&vop {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&usbdrd_dwc3 {
|
||||
- dr_mode = "host";
|
||||
+&vop_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
&analog_sound {
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
index 730d6cf8e..994e7bdb3 100644
|
||||
index f300f3d0f..f4b6799a8 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
@@ -313,6 +313,8 @@
|
||||
@@ -345,6 +345,7 @@
|
||||
};
|
||||
|
||||
&usb20_otg {
|
||||
+
|
||||
+ dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
@ -0,0 +1,62 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
index 5affe5b6c..646c9af02 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
@@ -188,6 +225,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&hdmi_sound {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&i2c0 {
|
||||
clock-frequency = <400000>;
|
||||
i2c-scl-rising-time-ns = <168>;
|
||||
@@ -584,6 +652,16 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&spi1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ flash@0 {
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ reg = <0>;
|
||||
+ spi-max-frequency = <10000000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&tcphy0 {
|
||||
status = "okay";
|
||||
};
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-mezzanine.dts b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-mezzanine.dts
|
||||
index d6b3042cf..e9bf3290c 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-mezzanine.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-mezzanine.dts
|
||||
@@ -11,6 +11,16 @@
|
||||
model = "Firefly ROC-RK3399-PC Mezzanine Board";
|
||||
compatible = "firefly,roc-rk3399-pc-mezzanine", "rockchip,rk3399";
|
||||
|
||||
+ vcca_0v9: vcca-0v9 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcca_0v9";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <900000>;
|
||||
+ vin-supply = <&vcc3v3_sys>;
|
||||
+ };
|
||||
+
|
||||
vcc3v3_ngff: vcc3v3-ngff {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_ngff";
|
||||
@@ -50,6 +60,8 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pcie_perst>;
|
||||
vpcie3v3-supply = <&vcc3v3_pcie>;
|
||||
+ vpcie1v8-supply = <&vcc1v8_pmu>;
|
||||
+ vpcie3v3-supply = <&vcca_0v9>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -5,10 +5,10 @@ See:
|
||||
https://lkml.org/lkml/2019/11/11/203
|
||||
https://lkml.org/lkml/2019/11/15/444
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dts b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dts
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
index 19f7732d7..bef364a09 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dts
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
@@ -646,8 +646,7 @@
|
||||
|
||||
&sdhci {
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
index 646c9af02..13eda9d0b 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
|
||||
@@ -475,7 +475,7 @@
|
||||
status = "okay";
|
||||
|
||||
fusb1: usb-typec@22 {
|
||||
- compatible = "fcs,fusb302";
|
||||
+ compatible = "fairchild,fusb302";
|
||||
reg = <0x22>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
|
||||
@@ -492,7 +492,7 @@
|
||||
status = "okay";
|
||||
|
||||
fusb0: usb-typec@22 {
|
||||
- compatible = "fcs,fusb302";
|
||||
+ compatible = "fairchild,fusb302";
|
||||
reg = <0x22>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
@ -1,24 +0,0 @@
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dts
|
||||
@@ -113,6 +113,10 @@
|
||||
|
||||
vcc_sys: vcc-sys {
|
||||
compatible = "regulator-fixed";
|
||||
+ enable-active-high;
|
||||
+ gpio = <&gpio2 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&vcc_sys_en>;
|
||||
regulator-name = "vcc_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
@@ -521,6 +525,10 @@
|
||||
rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
+ vcc_sys_en: vcc-sys-en {
|
||||
+ rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
hub_rst: hub-rst {
|
||||
rockchip,pins = <2 RK_PA4 RK_FUNC_GPIO &pcfg_output_high>;
|
||||
};
|
||||
90
patch/kernel/rockchip64-dev/board-rock64-add-audio.patch
Normal file
90
patch/kernel/rockchip64-dev/board-rock64-add-audio.patch
Normal file
@ -0,0 +1,90 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
index f97446924..d9a1cb24a 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
||||
@@ -83,34 +83,14 @@
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
+};
|
||||
|
||||
- sound {
|
||||
- compatible = "audio-graph-card";
|
||||
- label = "rockchip,rk3328";
|
||||
- dais = <&i2s1_p0
|
||||
- &spdif_p0>;
|
||||
- };
|
||||
-
|
||||
- spdif-dit {
|
||||
- compatible = "linux,spdif-dit";
|
||||
- #sound-dai-cells = <0>;
|
||||
-
|
||||
- port {
|
||||
- dit_p0_0: endpoint {
|
||||
- remote-endpoint = <&spdif_p0_0>;
|
||||
- };
|
||||
- };
|
||||
- };
|
||||
+&analog_sound {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&codec {
|
||||
status = "okay";
|
||||
-
|
||||
- port@0 {
|
||||
- codec_p0_0: endpoint {
|
||||
- remote-endpoint = <&i2s1_p0_0>;
|
||||
- };
|
||||
- };
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
@@ -166,6 +146,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&hdmi_sound {
|
||||
+ stratus = "okay";
|
||||
+};
|
||||
+
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
@@ -277,16 +261,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
-&i2s1 {
|
||||
+&i2s0 {
|
||||
status = "okay";
|
||||
+};
|
||||
|
||||
- i2s1_p0: port {
|
||||
- i2s1_p0_0: endpoint {
|
||||
- dai-format = "i2s";
|
||||
- mclk-fs = <256>;
|
||||
- remote-endpoint = <&codec_p0_0>;
|
||||
- };
|
||||
- };
|
||||
+&i2s1 {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&io_domains {
|
||||
@@ -336,12 +316,10 @@
|
||||
&spdif {
|
||||
pinctrl-0 = <&spdifm0_tx>;
|
||||
status = "okay";
|
||||
+};
|
||||
|
||||
- spdif_p0: port {
|
||||
- spdif_p0_0: endpoint {
|
||||
- remote-endpoint = <&dit_p0_0>;
|
||||
- };
|
||||
- };
|
||||
+&spdif_sound {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
@ -1,21 +0,0 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
index f04cd5c..ed3ebdf 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
@@ -757,16 +757,6 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
-&spi1 {
|
||||
- status = "okay";
|
||||
-
|
||||
- flash@0 {
|
||||
- compatible = "jedec,spi-nor";
|
||||
- reg = <0>;
|
||||
- spi-max-frequency = <10000000>;
|
||||
- };
|
||||
-};
|
||||
-
|
||||
&tcphy0 {
|
||||
status = "okay";
|
||||
};
|
||||
@ -1,24 +1,20 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
index 4cbca4d..7421b71 100644
|
||||
index 714616618..b1fb824f3 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
@@ -15,7 +15,7 @@
|
||||
@@ -15,6 +15,7 @@
|
||||
compatible = "pine64,rockpro64", "rockchip,rk3399";
|
||||
|
||||
chosen {
|
||||
- bootargs = "earlycon=uart8250,mmio32,0xff1a0000";
|
||||
+ bootargs = "mmc_cmdqueue=0 earlycon=uart8250,mmio32,0xff1a0000";
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
@@ -721,8 +721,10 @@
|
||||
//mmc-hs400-1_8v;
|
||||
mmc-hs200-1_8v;
|
||||
//mmc-hs400-enhanced-strobe;
|
||||
@@ -635,6 +636,7 @@
|
||||
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
+ keep-power-in-suspend;
|
||||
+ supports-emmc;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tcphy0 {
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
index 4cbca4d..1a19ae1 100644
|
||||
index 49050de8c..714616618 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
@@ -821,7 +890,7 @@
|
||||
#size-cells = <1>;
|
||||
@@ -646,7 +646,7 @@
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0x0>;
|
||||
reg = <0>;
|
||||
- spi-max-frequency = <10000000>;
|
||||
+ spi-max-frequency = <3000000>;
|
||||
status = "okay";
|
||||
m25p,fast-read;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
430
patch/kernel/rockchip64-dev/general-add-overlay-configfs.patch
Normal file
430
patch/kernel/rockchip64-dev/general-add-overlay-configfs.patch
Normal file
@ -0,0 +1,430 @@
|
||||
Below patch is a squash of following 4 commits borrowed from ayufan's
|
||||
https://github.com/ayufan-rock64/linux-mainline-kernel repo:
|
||||
|
||||
From cc22206776d61948f6984a4f03d8013eb4f92984 Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
|
||||
Date: Wed, 3 Dec 2014 13:23:28 +0200
|
||||
Subject: [PATCH] OF: DT-Overlay configfs interface
|
||||
|
||||
This is a port of Pantelis Antoniou's v3 port that makes use of the
|
||||
new upstreamed configfs support for binary attributes.
|
||||
|
||||
Original commit message:
|
||||
|
||||
Add a runtime interface to using configfs for generic device tree overlay
|
||||
usage. With it its possible to use device tree overlays without having
|
||||
to use a per-platform overlay manager.
|
||||
|
||||
Please see Documentation/devicetree/configfs-overlays.txt for more info.
|
||||
|
||||
Changes since v2:
|
||||
- Removed ifdef CONFIG_OF_OVERLAY (since for now it's required)
|
||||
- Created a documentation entry
|
||||
- Slight rewording in Kconfig
|
||||
|
||||
Changes since v1:
|
||||
- of_resolve() -> of_resolve_phandles().
|
||||
|
||||
Originally-signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
DT configfs: Fix build errors on other platforms
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
DT configfs: fix build error
|
||||
|
||||
There is an error when compiling rpi-4.6.y branch:
|
||||
CC drivers/of/configfs.o
|
||||
drivers/of/configfs.c:291:21: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
|
||||
.default_groups = of_cfs_def_groups,
|
||||
^
|
||||
drivers/of/configfs.c:291:21: note: (near initialization for 'of_cfs_subsys.su_group.default_groups.next')
|
||||
|
||||
The .default_groups is linked list since commit
|
||||
1ae1602de028acaa42a0f6ff18d19756f8e825c6.
|
||||
This commit uses configfs_add_default_group to fix this problem.
|
||||
|
||||
Change-Id: Id4903c9725ebc355aadd067bbc32047db622ce61
|
||||
Signed-off-by: Slawomir Stepien <sst@poczta.fm>
|
||||
|
||||
From 7cfb967c52d374ddcb0fc9194f38d1d5f9d8cdd8 Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Sun, 3 Dec 2017 21:43:03 +0000
|
||||
Subject: [PATCH] configfs: New of_overlay API
|
||||
|
||||
From 8637321fabb045fe8617360ef1b058978b0d8457 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.org>
|
||||
Date: Mon, 4 Dec 2017 14:07:40 +0000
|
||||
Subject: [PATCH] SQUASH: config_fs: of_overlay_apply takes a pointer
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
From 274dfabb947ca32116a429c582c74aaee6ff1b5b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= <ayufan@ayufan.eu>
|
||||
Date: Mon, 14 May 2018 11:28:09 +0200
|
||||
Subject: [PATCH] ayufan: fix overlayfs to compile on 4.17 kernel
|
||||
|
||||
Change-Id: I421887697d2ba6e52aba9100100b7664760e2001
|
||||
|
||||
diff --git a/Documentation/devicetree/configfs-overlays.txt b/Documentation/devicetree/configfs-overlays.txt
|
||||
new file mode 100644
|
||||
index 0000000000000..5fa43e0643072
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/configfs-overlays.txt
|
||||
@@ -0,0 +1,31 @@
|
||||
+Howto use the configfs overlay interface.
|
||||
+
|
||||
+A device-tree configfs entry is created in /config/device-tree/overlays
|
||||
+and and it is manipulated using standard file system I/O.
|
||||
+Note that this is a debug level interface, for use by developers and
|
||||
+not necessarily something accessed by normal users due to the
|
||||
+security implications of having direct access to the kernel's device tree.
|
||||
+
|
||||
+* To create an overlay you mkdir the directory:
|
||||
+
|
||||
+ # mkdir /config/device-tree/overlays/foo
|
||||
+
|
||||
+* Either you echo the overlay firmware file to the path property file.
|
||||
+
|
||||
+ # echo foo.dtbo >/config/device-tree/overlays/foo/path
|
||||
+
|
||||
+* Or you cat the contents of the overlay to the dtbo file
|
||||
+
|
||||
+ # cat foo.dtbo >/config/device-tree/overlays/foo/dtbo
|
||||
+
|
||||
+The overlay file will be applied, and devices will be created/destroyed
|
||||
+as required.
|
||||
+
|
||||
+To remove it simply rmdir the directory.
|
||||
+
|
||||
+ # rmdir /config/device-tree/overlays/foo
|
||||
+
|
||||
+The rationalle of the dual interface (firmware & direct copy) is that each is
|
||||
+better suited to different use patterns. The firmware interface is what's
|
||||
+intended to be used by hardware managers in the kernel, while the copy interface
|
||||
+make sense for developers (since it avoids problems with namespaces).
|
||||
diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
|
||||
index 37c2ccbefecdc..d3fc81a40c0e7 100644
|
||||
--- a/drivers/of/Kconfig
|
||||
+++ b/drivers/of/Kconfig
|
||||
@@ -103,4 +103,11 @@ config OF_OVERLAY
|
||||
config OF_NUMA
|
||||
bool
|
||||
|
||||
+config OF_CONFIGFS
|
||||
+ bool "Device Tree Overlay ConfigFS interface"
|
||||
+ select CONFIGFS_FS
|
||||
+ select OF_OVERLAY
|
||||
+ help
|
||||
+ Enable a simple user-space driven DT overlay interface.
|
||||
+
|
||||
endif # OF
|
||||
diff --git a/drivers/of/Makefile b/drivers/of/Makefile
|
||||
index 663a4af0cccd5..b00a95adf5199 100644
|
||||
--- a/drivers/of/Makefile
|
||||
+++ b/drivers/of/Makefile
|
||||
@@ -1,6 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y = base.o device.o platform.o property.o
|
||||
obj-$(CONFIG_OF_KOBJ) += kobj.o
|
||||
+obj-$(CONFIG_OF_CONFIGFS) += configfs.o
|
||||
obj-$(CONFIG_OF_DYNAMIC) += dynamic.o
|
||||
obj-$(CONFIG_OF_FLATTREE) += fdt.o
|
||||
obj-$(CONFIG_OF_EARLY_FLATTREE) += fdt_address.o
|
||||
diff --git a/drivers/of/configfs.c b/drivers/of/configfs.c
|
||||
new file mode 100644
|
||||
index 000000000..5dd509e8f
|
||||
--- /dev/null
|
||||
+++ b/drivers/of/configfs.c
|
||||
@@ -0,0 +1,290 @@
|
||||
+/*
|
||||
+ * Configfs entries for device-tree
|
||||
+ *
|
||||
+ * Copyright (C) 2013 - Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * as published by the Free Software Foundation; either version
|
||||
+ * 2 of the License, or (at your option) any later version.
|
||||
+ */
|
||||
+#include <linux/ctype.h>
|
||||
+#include <linux/cpu.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/of_fdt.h>
|
||||
+#include <linux/spinlock.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/proc_fs.h>
|
||||
+#include <linux/configfs.h>
|
||||
+#include <linux/types.h>
|
||||
+#include <linux/stat.h>
|
||||
+#include <linux/limits.h>
|
||||
+#include <linux/file.h>
|
||||
+#include <linux/vmalloc.h>
|
||||
+#include <linux/firmware.h>
|
||||
+#include <linux/sizes.h>
|
||||
+
|
||||
+#include "of_private.h"
|
||||
+
|
||||
+struct cfs_overlay_item {
|
||||
+ struct config_item item;
|
||||
+
|
||||
+ char path[PATH_MAX];
|
||||
+
|
||||
+ const struct firmware *fw;
|
||||
+ struct device_node *overlay;
|
||||
+ int ov_id;
|
||||
+
|
||||
+ void *dtbo;
|
||||
+ int dtbo_size;
|
||||
+};
|
||||
+
|
||||
+static int create_overlay(struct cfs_overlay_item *overlay, void *blob, u32 blob_size)
|
||||
+{
|
||||
+ int err;
|
||||
+
|
||||
+ err = of_overlay_fdt_apply(blob, blob_size, &overlay->ov_id);
|
||||
+ if (err < 0) {
|
||||
+ pr_err("%s: Failed to create overlay (err=%d)\n",
|
||||
+ __func__, err);
|
||||
+ goto out_err;
|
||||
+ }
|
||||
+
|
||||
+out_err:
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static inline struct cfs_overlay_item *to_cfs_overlay_item(
|
||||
+ struct config_item *item)
|
||||
+{
|
||||
+ return item ? container_of(item, struct cfs_overlay_item, item) : NULL;
|
||||
+}
|
||||
+
|
||||
+static ssize_t cfs_overlay_item_path_show(struct config_item *item,
|
||||
+ char *page)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
|
||||
+ return sprintf(page, "%s\n", overlay->path);
|
||||
+}
|
||||
+
|
||||
+static ssize_t cfs_overlay_item_path_store(struct config_item *item,
|
||||
+ const char *page, size_t count)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
|
||||
+ const char *p = page;
|
||||
+ char *s;
|
||||
+ int err;
|
||||
+
|
||||
+ /* if it's set do not allow changes */
|
||||
+ if (overlay->path[0] != '\0' || overlay->dtbo_size > 0)
|
||||
+ return -EPERM;
|
||||
+
|
||||
+ /* copy to path buffer (and make sure it's always zero terminated */
|
||||
+ count = snprintf(overlay->path, sizeof(overlay->path) - 1, "%s", p);
|
||||
+ overlay->path[sizeof(overlay->path) - 1] = '\0';
|
||||
+
|
||||
+ /* strip trailing newlines */
|
||||
+ s = overlay->path + strlen(overlay->path);
|
||||
+ while (s > overlay->path && *--s == '\n')
|
||||
+ *s = '\0';
|
||||
+
|
||||
+ pr_debug("%s: path is '%s'\n", __func__, overlay->path);
|
||||
+
|
||||
+ err = request_firmware(&overlay->fw, overlay->path, NULL);
|
||||
+ if (err != 0)
|
||||
+ goto out_err;
|
||||
+
|
||||
+ err = create_overlay(overlay, (void *)overlay->fw->data, overlay->fw->size);
|
||||
+ if (err != 0)
|
||||
+ goto out_err;
|
||||
+
|
||||
+ return count;
|
||||
+
|
||||
+out_err:
|
||||
+
|
||||
+ release_firmware(overlay->fw);
|
||||
+ overlay->fw = NULL;
|
||||
+
|
||||
+ overlay->path[0] = '\0';
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static ssize_t cfs_overlay_item_status_show(struct config_item *item,
|
||||
+ char *page)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
|
||||
+
|
||||
+ return sprintf(page, "%s\n",
|
||||
+ overlay->ov_id >= 0 ? "applied" : "unapplied");
|
||||
+}
|
||||
+
|
||||
+CONFIGFS_ATTR(cfs_overlay_item_, path);
|
||||
+CONFIGFS_ATTR_RO(cfs_overlay_item_, status);
|
||||
+
|
||||
+static struct configfs_attribute *cfs_overlay_attrs[] = {
|
||||
+ &cfs_overlay_item_attr_path,
|
||||
+ &cfs_overlay_item_attr_status,
|
||||
+ NULL,
|
||||
+};
|
||||
+
|
||||
+ssize_t cfs_overlay_item_dtbo_read(struct config_item *item,
|
||||
+ void *buf, size_t max_count)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
|
||||
+
|
||||
+ pr_debug("%s: buf=%p max_count=%zu\n", __func__,
|
||||
+ buf, max_count);
|
||||
+
|
||||
+ if (overlay->dtbo == NULL)
|
||||
+ return 0;
|
||||
+
|
||||
+ /* copy if buffer provided */
|
||||
+ if (buf != NULL) {
|
||||
+ /* the buffer must be large enough */
|
||||
+ if (overlay->dtbo_size > max_count)
|
||||
+ return -ENOSPC;
|
||||
+
|
||||
+ memcpy(buf, overlay->dtbo, overlay->dtbo_size);
|
||||
+ }
|
||||
+
|
||||
+ return overlay->dtbo_size;
|
||||
+}
|
||||
+
|
||||
+ssize_t cfs_overlay_item_dtbo_write(struct config_item *item,
|
||||
+ const void *buf, size_t count)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
|
||||
+ int err;
|
||||
+
|
||||
+ /* if it's set do not allow changes */
|
||||
+ if (overlay->path[0] != '\0' || overlay->dtbo_size > 0)
|
||||
+ return -EPERM;
|
||||
+
|
||||
+ /* copy the contents */
|
||||
+ overlay->dtbo = kmemdup(buf, count, GFP_KERNEL);
|
||||
+ if (overlay->dtbo == NULL)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ overlay->dtbo_size = count;
|
||||
+
|
||||
+ err = create_overlay(overlay, overlay->dtbo, overlay->dtbo_size);
|
||||
+ if (err != 0)
|
||||
+ goto out_err;
|
||||
+
|
||||
+ return count;
|
||||
+
|
||||
+out_err:
|
||||
+ kfree(overlay->dtbo);
|
||||
+ overlay->dtbo = NULL;
|
||||
+ overlay->dtbo_size = 0;
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+CONFIGFS_BIN_ATTR(cfs_overlay_item_, dtbo, NULL, SZ_1M);
|
||||
+
|
||||
+static struct configfs_bin_attribute *cfs_overlay_bin_attrs[] = {
|
||||
+ &cfs_overlay_item_attr_dtbo,
|
||||
+ NULL,
|
||||
+};
|
||||
+
|
||||
+static void cfs_overlay_release(struct config_item *item)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
|
||||
+
|
||||
+ if (overlay->ov_id >= 0)
|
||||
+ of_overlay_remove(&overlay->ov_id);
|
||||
+ if (overlay->fw)
|
||||
+ release_firmware(overlay->fw);
|
||||
+ /* kfree with NULL is safe */
|
||||
+ kfree(overlay->dtbo);
|
||||
+ kfree(overlay);
|
||||
+}
|
||||
+
|
||||
+static struct configfs_item_operations cfs_overlay_item_ops = {
|
||||
+ .release = cfs_overlay_release,
|
||||
+};
|
||||
+
|
||||
+static struct config_item_type cfs_overlay_type = {
|
||||
+ .ct_item_ops = &cfs_overlay_item_ops,
|
||||
+ .ct_attrs = cfs_overlay_attrs,
|
||||
+ .ct_bin_attrs = cfs_overlay_bin_attrs,
|
||||
+ .ct_owner = THIS_MODULE,
|
||||
+};
|
||||
+
|
||||
+static struct config_item *cfs_overlay_group_make_item(
|
||||
+ struct config_group *group, const char *name)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay;
|
||||
+
|
||||
+ overlay = kzalloc(sizeof(*overlay), GFP_KERNEL);
|
||||
+ if (!overlay)
|
||||
+ return ERR_PTR(-ENOMEM);
|
||||
+ overlay->ov_id = -1;
|
||||
+
|
||||
+ config_item_init_type_name(&overlay->item, name, &cfs_overlay_type);
|
||||
+ return &overlay->item;
|
||||
+}
|
||||
+
|
||||
+static void cfs_overlay_group_drop_item(struct config_group *group,
|
||||
+ struct config_item *item)
|
||||
+{
|
||||
+ struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
|
||||
+
|
||||
+ config_item_put(&overlay->item);
|
||||
+}
|
||||
+
|
||||
+static struct configfs_group_operations overlays_ops = {
|
||||
+ .make_item = cfs_overlay_group_make_item,
|
||||
+ .drop_item = cfs_overlay_group_drop_item,
|
||||
+};
|
||||
+
|
||||
+static struct config_item_type overlays_type = {
|
||||
+ .ct_group_ops = &overlays_ops,
|
||||
+ .ct_owner = THIS_MODULE,
|
||||
+};
|
||||
+
|
||||
+static struct configfs_group_operations of_cfs_ops = {
|
||||
+ /* empty - we don't allow anything to be created */
|
||||
+};
|
||||
+
|
||||
+static struct config_item_type of_cfs_type = {
|
||||
+ .ct_group_ops = &of_cfs_ops,
|
||||
+ .ct_owner = THIS_MODULE,
|
||||
+};
|
||||
+
|
||||
+struct config_group of_cfs_overlay_group;
|
||||
+
|
||||
+static struct configfs_subsystem of_cfs_subsys = {
|
||||
+ .su_group = {
|
||||
+ .cg_item = {
|
||||
+ .ci_namebuf = "device-tree",
|
||||
+ .ci_type = &of_cfs_type,
|
||||
+ },
|
||||
+ },
|
||||
+ .su_mutex = __MUTEX_INITIALIZER(of_cfs_subsys.su_mutex),
|
||||
+};
|
||||
+
|
||||
+static int __init of_cfs_init(void)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ pr_info("%s\n", __func__);
|
||||
+
|
||||
+ config_group_init(&of_cfs_subsys.su_group);
|
||||
+ config_group_init_type_name(&of_cfs_overlay_group, "overlays",
|
||||
+ &overlays_type);
|
||||
+ configfs_add_default_group(&of_cfs_overlay_group,
|
||||
+ &of_cfs_subsys.su_group);
|
||||
+
|
||||
+ ret = configfs_register_subsystem(&of_cfs_subsys);
|
||||
+ if (ret != 0) {
|
||||
+ pr_err("%s: failed to register subsys\n", __func__);
|
||||
+ goto out;
|
||||
+ }
|
||||
+ pr_info("%s: OK\n", __func__);
|
||||
+out:
|
||||
+ return ret;
|
||||
+}
|
||||
+late_initcall(of_cfs_init);
|
||||
@ -1,938 +0,0 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts b/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts
|
||||
new file mode 100644
|
||||
index 000000000000..9a7887220551
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts
|
||||
@@ -0,0 +1,932 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
|
||||
+ *
|
||||
+ * This file is dual-licensed: you can use it either under the terms
|
||||
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||
+ * licensing only applies to this file, and not this project as a
|
||||
+ * whole.
|
||||
+ *
|
||||
+ * a) This file is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License as
|
||||
+ * published by the Free Software Foundation; either version 2 of the
|
||||
+ * License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This file is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * Or, alternatively,
|
||||
+ *
|
||||
+ * b) Permission is hereby granted, free of charge, to any person
|
||||
+ * obtaining a copy of this software and associated documentation
|
||||
+ * files (the "Software"), to deal in the Software without
|
||||
+ * restriction, including without limitation the rights to use,
|
||||
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
+ * sell copies of the Software, and to permit persons to whom the
|
||||
+ * Software is furnished to do so, subject to the following
|
||||
+ * conditions:
|
||||
+ *
|
||||
+ * The above copyright notice and this permission notice shall be
|
||||
+ * included in all copies or substantial portions of the Software.
|
||||
+ *
|
||||
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include "dt-bindings/pwm/pwm.h"
|
||||
+#include "rk3399.dtsi"
|
||||
+#include "rk3399-opp.dtsi"
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "OrangePi board based on Rockchip RK3399";
|
||||
+ compatible = "xulung,orangepi-rk3399",
|
||||
+ "rockchip,rk3399";
|
||||
+
|
||||
+ chosen {
|
||||
+ bootargs = "mmc_cmdqueue=0 earlycon=uart8250,mmio32,0xff1a0000";
|
||||
+ stdout-path = "serial2:1500000n8";
|
||||
+ };
|
||||
+
|
||||
+ cpuinfo {
|
||||
+ compatible = "rockchip,cpuinfo";
|
||||
+ };
|
||||
+
|
||||
+ mach: board {
|
||||
+ compatible = "xulung,board";
|
||||
+ machine = "ORANGEPI-RK3399";
|
||||
+ hwrev = <255>;
|
||||
+ model = "OrangePi Series";
|
||||
+ };
|
||||
+
|
||||
+ clkin_gmac: external-gmac-clock {
|
||||
+ compatible = "fixed-clock";
|
||||
+ clock-frequency = <125000000>;
|
||||
+ clock-output-names = "clkin_gmac";
|
||||
+ #clock-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+ vcc3v3_sys: vcc3v3-sys {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc3v3_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc5v0_sys: vcc5v0-sys {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc5v0_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ };
|
||||
+
|
||||
+ vccadc_ref: vccadc-ref {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc1v8_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_phy: vcc-phy-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_phy";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ };
|
||||
+
|
||||
+ vcc_lcd: vcc-lcd {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_lcd";
|
||||
+ gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
|
||||
+ startup-delay-us = <20000>;
|
||||
+ enable-active-high;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&vcc5v0_sys>;
|
||||
+ };
|
||||
+
|
||||
+ vdd_log: vdd-log {
|
||||
+ compatible = "pwm-regulator";
|
||||
+ pwms = <&pwm2 0 25000 1>;
|
||||
+ regulator-name = "vdd_log";
|
||||
+ regulator-min-microvolt = <800000>;
|
||||
+ regulator-max-microvolt = <1400000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ /* for rockchip boot on */
|
||||
+ rockchip,pwm_id = <2>;
|
||||
+ rockchip,pwm_voltage = <1000000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc5v0_host: vcc5v0-host-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ enable-active-high;
|
||||
+ gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&vcc5v0_host_en>;
|
||||
+ regulator-name = "vcc5v0_host";
|
||||
+ vin-supply = <&vcc5v0_sys>;
|
||||
+ };
|
||||
+
|
||||
+ dw_hdmi_audio: dw-hdmi-audio {
|
||||
+ status = "disabled";
|
||||
+ compatible = "rockchip,dw-hdmi-audio";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+ hdmi_sound: hdmi-sound {
|
||||
+ status = "okay";
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,format = "i2s";
|
||||
+ simple-audio-card,mclk-fs = <256>;
|
||||
+ simple-audio-card,name = "rockchip,hdmi";
|
||||
+
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&i2s2>;
|
||||
+ };
|
||||
+ simple-audio-card,codec {
|
||||
+ sound-dai = <&hdmi>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spdif-sound {
|
||||
+ status = "okay";
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "ROCKCHIP,SPDIF";
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&spdif>;
|
||||
+ };
|
||||
+ simple-audio-card,codec {
|
||||
+ sound-dai = <&spdif_out>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spdif_out: spdif-out {
|
||||
+ status = "okay";
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+ pwm_bl: backlight {
|
||||
+ status = "disabled";
|
||||
+ compatible = "pwm-backlight";
|
||||
+ pwms = <&pwm0 0 25000 0>;
|
||||
+ brightness-levels = <
|
||||
+ 0 1 2 3 4 5 6 7
|
||||
+ 8 9 10 11 12 13 14 15
|
||||
+ 16 17 18 19 20 21 22 23
|
||||
+ 24 25 26 27 28 29 30 31
|
||||
+ 32 33 34 35 36 37 38 39
|
||||
+ 40 41 42 43 44 45 46 47
|
||||
+ 48 49 50 51 52 53 54 55
|
||||
+ 56 57 58 59 60 61 62 63
|
||||
+ 64 65 66 67 68 69 70 71
|
||||
+ 72 73 74 75 76 77 78 79
|
||||
+ 80 81 82 83 84 85 86 87
|
||||
+ 88 89 90 91 92 93 94 95
|
||||
+ 96 97 98 99 100 101 102 103
|
||||
+ 104 105 106 107 108 109 110 111
|
||||
+ 112 113 114 115 116 117 118 119
|
||||
+ 120 121 122 123 124 125 126 127
|
||||
+ 128 129 130 131 132 133 134 135
|
||||
+ 136 137 138 139 140 141 142 143
|
||||
+ 144 145 146 147 148 149 150 151
|
||||
+ 152 153 154 155 156 157 158 159
|
||||
+ 160 161 162 163 164 165 166 167
|
||||
+ 168 169 170 171 172 173 174 175
|
||||
+ 176 177 178 179 180 181 182 183
|
||||
+ 184 185 186 187 188 189 190 191
|
||||
+ 192 193 194 195 196 197 198 199
|
||||
+ 200 201 202 203 204 205 206 207
|
||||
+ 208 209 210 211 212 213 214 215
|
||||
+ 216 217 218 219 220 221 222 223
|
||||
+ 224 225 226 227 228 229 230 231
|
||||
+ 232 233 234 235 236 237 238 239
|
||||
+ 240 241 242 243 244 245 246 247
|
||||
+ 248 249 250 251 252 253 254 255>;
|
||||
+ default-brightness-level = <200>;
|
||||
+ };
|
||||
+
|
||||
+ gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ autorepeat;
|
||||
+
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&power_key>;
|
||||
+
|
||||
+ button@0 {
|
||||
+ gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
|
||||
+ linux,code = <KEY_POWER>;
|
||||
+ label = "GPIO Key Power";
|
||||
+ linux,input-type = <1>;
|
||||
+ gpio-key,wakeup = <1>;
|
||||
+ debounce-interval = <100>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ adc-keys {
|
||||
+ compatible = "adc-keys";
|
||||
+ io-channels = <&saradc 1>;
|
||||
+ io-channel-names = "buttons";
|
||||
+ poll-interval = <100>;
|
||||
+ keyup-threshold-microvolt = <1800000>;
|
||||
+
|
||||
+ button-up {
|
||||
+ label = "Volume Up";
|
||||
+ linux,code = <KEY_VOLUMEUP>;
|
||||
+ press-threshold-microvolt = <100000>;
|
||||
+ };
|
||||
+
|
||||
+ button-down {
|
||||
+ label = "Volume Down";
|
||||
+ linux,code = <KEY_VOLUMEDOWN>;
|
||||
+ press-threshold-microvolt = <300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds: gpio-leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 =<&leds_gpio>;
|
||||
+
|
||||
+ led@1 {
|
||||
+ gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
|
||||
+ label = "status_led";
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ linux,default-trigger-delay-ms = <0>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ sdio_pwrseq: sdio-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ clocks = <&rk808 1>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&wifi_enable_h>;
|
||||
+
|
||||
+ /*
|
||||
+ * On the module itself this is one of these (depending
|
||||
+ * on the actual card populated):
|
||||
+ * - SDIO_RESET_L_WL_REG_ON
|
||||
+ * - PDN (power down when low)
|
||||
+ */
|
||||
+ reset-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; /* GPIO0_B2 */
|
||||
+ };
|
||||
+
|
||||
+ wireless-wlan {
|
||||
+ compatible = "wlan-platdata";
|
||||
+ rockchip,grf = <&grf>;
|
||||
+ wifi_chip_type = "ap6354";
|
||||
+ sdio_vref = <1800>;
|
||||
+ WIFI,host_wake_irq = <&gpio0 3 GPIO_ACTIVE_HIGH>; /* GPIO0_a3 */
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ wireless-bluetooth {
|
||||
+ compatible = "bluetooth-platdata";
|
||||
+ clocks = <&rk808 1>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ //wifi-bt-power-toggle;
|
||||
+ uart_rts_gpios = <&gpio2 19 GPIO_ACTIVE_LOW>; /* GPIO2_C3 */
|
||||
+ pinctrl-names = "default", "rts_gpio";
|
||||
+ pinctrl-0 = <&uart0_rts>;
|
||||
+ pinctrl-1 = <&uart0_gpios>;
|
||||
+ //BT,power_gpio = <&gpio3 19 GPIO_ACTIVE_HIGH>; /* GPIOx_xx */
|
||||
+ BT,reset_gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>; /* GPIO0_B1 */
|
||||
+ BT,wake_gpio = <&gpio2 26 GPIO_ACTIVE_HIGH>; /* GPIO2_D2 */
|
||||
+ BT,wake_host_irq = <&gpio0 4 GPIO_ACTIVE_HIGH>; /* GPIO0_A4 */
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cpu_l0 {
|
||||
+ cpu-supply = <&vdd_cpu_l>;
|
||||
+};
|
||||
+
|
||||
+&cpu_l1 {
|
||||
+ cpu-supply = <&vdd_cpu_l>;
|
||||
+};
|
||||
+
|
||||
+&cpu_l2 {
|
||||
+ cpu-supply = <&vdd_cpu_l>;
|
||||
+};
|
||||
+
|
||||
+&cpu_l3 {
|
||||
+ cpu-supply = <&vdd_cpu_l>;
|
||||
+};
|
||||
+
|
||||
+&cpu_b0 {
|
||||
+ cpu-supply = <&vdd_cpu_b>;
|
||||
+};
|
||||
+
|
||||
+&cpu_b1 {
|
||||
+ cpu-supply = <&vdd_cpu_b>;
|
||||
+};
|
||||
+
|
||||
+&gmac {
|
||||
+ phy-supply = <&vcc_phy>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ clock_in_out = "input";
|
||||
+ snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>;
|
||||
+ snps,reset-active-low;
|
||||
+ snps,reset-delays-us = <0 10000 50000>;
|
||||
+ assigned-clocks = <&cru SCLK_RMII_SRC>;
|
||||
+ assigned-clock-parents = <&clkin_gmac>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&rgmii_pins>;
|
||||
+ tx_delay = <0x28>;
|
||||
+ rx_delay = <0x11>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart0_xfer &uart0_cts>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vopb {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vopb_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vopl {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vopl_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ /* remove the hdmi_cec, reused by edp_hpd */
|
||||
+ pinctrl-0 = <&hdmi_i2c_xfer>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ status = "okay";
|
||||
+ ddc-i2c-bus = <&i2c7>;
|
||||
+};
|
||||
+
|
||||
+&i2c0 {
|
||||
+ status = "okay";
|
||||
+ i2c-scl-rising-time-ns = <160>;
|
||||
+ i2c-scl-falling-time-ns = <30>;
|
||||
+ clock-frequency = <400000>;
|
||||
+
|
||||
+ vdd_cpu_b: syr827@40 {
|
||||
+ compatible = "silergy,syr827";
|
||||
+ reg = <0x40>;
|
||||
+ vin-supply = <&vcc3v3_sys>;
|
||||
+ regulator-compatible = "fan53555-reg";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&vsel1_gpio>;
|
||||
+ vsel-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
|
||||
+ regulator-name = "vdd_cpu_b";
|
||||
+ regulator-min-microvolt = <712500>;
|
||||
+ regulator-max-microvolt = <1500000>;
|
||||
+ regulator-ramp-delay = <1000>;
|
||||
+ fcs,suspend-voltage-selector = <1>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-state = <3>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_gpu: syr828@41 {
|
||||
+ compatible = "silergy,syr828";
|
||||
+ reg = <0x41>;
|
||||
+ vin-supply = <&vcc3v3_sys>;
|
||||
+ regulator-compatible = "fan53555-reg";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&vsel2_gpio>;
|
||||
+ vsel-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
|
||||
+ regulator-name = "vdd_gpu";
|
||||
+ regulator-min-microvolt = <712500>;
|
||||
+ regulator-max-microvolt = <1500000>;
|
||||
+ regulator-ramp-delay = <1000>;
|
||||
+ fcs,suspend-voltage-selector = <1>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-state = <3>;
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ rk808: pmic@1b {
|
||||
+ compatible = "rockchip,rk808";
|
||||
+ reg = <0x1b>;
|
||||
+ interrupt-parent = <&gpio1>;
|
||||
+ interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pmic_int_l>;
|
||||
+ rockchip,system-power-controller;
|
||||
+ wakeup-source;
|
||||
+ #clock-cells = <1>;
|
||||
+ clock-output-names = "xin32k", "rk808-clkout2";
|
||||
+
|
||||
+ vcc1-supply = <&vcc3v3_sys>;
|
||||
+ vcc2-supply = <&vcc3v3_sys>;
|
||||
+ vcc3-supply = <&vcc3v3_sys>;
|
||||
+ vcc4-supply = <&vcc3v3_sys>;
|
||||
+ vcc6-supply = <&vcc3v3_sys>;
|
||||
+ vcc7-supply = <&vcc3v3_sys>;
|
||||
+ vcc8-supply = <&vcc3v3_sys>;
|
||||
+ vcc9-supply = <&vcc3v3_sys>;
|
||||
+ vcc10-supply = <&vcc3v3_sys>;
|
||||
+ vcc11-supply = <&vcc3v3_sys>;
|
||||
+ vcc12-supply = <&vcc3v3_sys>;
|
||||
+ vddio-supply = <&vcc_3v0>;
|
||||
+
|
||||
+ regulators {
|
||||
+ vdd_center: DCDC_REG1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <750000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-name = "vdd_center";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_cpu_l: DCDC_REG2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <750000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-name = "vdd_cpu_l";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_ddr: DCDC_REG3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-name = "vcc_ddr";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v8: DCDC_REG4 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc_1v8";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc1v8_dvp: LDO_REG1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc1v8_dvp";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc3v0_tp: LDO_REG2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3000000>;
|
||||
+ regulator-max-microvolt = <3000000>;
|
||||
+ regulator-name = "vcc3v0_tp";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc1v8_pmu: LDO_REG3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc1v8_pmu";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_sd: LDO_REG4 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc_sd";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcca3v0_codec: LDO_REG5 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3000000>;
|
||||
+ regulator-max-microvolt = <3000000>;
|
||||
+ regulator-name = "vcca3v0_codec";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v5: LDO_REG6 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1500000>;
|
||||
+ regulator-max-microvolt = <1500000>;
|
||||
+ regulator-name = "vcc_1v5";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1500000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcca1v8_codec: LDO_REG7 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcca1v8_codec";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_3v0: LDO_REG8 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <3000000>;
|
||||
+ regulator-max-microvolt = <3000000>;
|
||||
+ regulator-name = "vcc_3v0";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3000000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc3v3_s3: SWITCH_REG1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-name = "vcc3v3_s3";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc3v3_s0: SWITCH_REG2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-name = "vcc3v3_s0";
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c1 {
|
||||
+ status = "okay";
|
||||
+ i2c-scl-rising-time-ns = <150>;
|
||||
+ i2c-scl-falling-time-ns = <30>;
|
||||
+ clock-frequency = <200000>;
|
||||
+};
|
||||
+
|
||||
+&i2c2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2c4 {
|
||||
+ status = "okay";
|
||||
+ i2c-scl-rising-time-ns = <160>;
|
||||
+ i2c-scl-falling-time-ns = <30>;
|
||||
+ clock-frequency = <400000>;
|
||||
+
|
||||
+ fusb0: fusb30x@22 {
|
||||
+ compatible = "fairchild,fusb302";
|
||||
+ reg = <0x22>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&fusb0_int>;
|
||||
+ int-n-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||
+ vbus-5v-gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ gt9xx: goodix_ts@5d {
|
||||
+ compatible = "goodix,gt9xx";
|
||||
+ reg = <0x5d>;
|
||||
+ interrupt-parent = <&gpio1>;
|
||||
+ interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
|
||||
+ goodix,irq-gpio = <&gpio1 20 GPIO_ACTIVE_HIGH>;
|
||||
+ goodix,rst-gpio = <&gpio1 13 GPIO_ACTIVE_LOW>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ onewire_ts@2f {
|
||||
+ compatible = "onewire";
|
||||
+ reg = <0x2f>;
|
||||
+ interrupt-parent = <&gpio1>;
|
||||
+ interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
|
||||
+ }; */
|
||||
+};
|
||||
+
|
||||
+&i2c7 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdif {
|
||||
+ status = "okay";
|
||||
+ pinctrl-0 = <&spdif_bus>;
|
||||
+ i2c-scl-rising-time-ns = <450>;
|
||||
+ i2c-scl-falling-time-ns = <15>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+};
|
||||
+
|
||||
+&i2s0 {
|
||||
+ status = "okay";
|
||||
+ rockchip,i2s-broken-burst-len;
|
||||
+ rockchip,playback-channels = <8>;
|
||||
+ rockchip,capture-channels = <8>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+};
|
||||
+
|
||||
+&i2s2 {
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&io_domains {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bt656-supply = <&vcc1v8_dvp>; /* bt656_gpio2ab_ms */
|
||||
+ audio-supply = <&vcca1v8_codec>; /* audio_gpio3d4a_ms */
|
||||
+ sdmmc-supply = <&vcc_sd>; /* sdmmc_gpio4b_ms */
|
||||
+ gpio1830-supply = <&vcc_3v0>; /* gpio1833_gpio4cd_ms */
|
||||
+};
|
||||
+
|
||||
+&pmu_io_domains {
|
||||
+ status = "okay";
|
||||
+ pmu1830-supply = <&vcc_3v0>;
|
||||
+};
|
||||
+
|
||||
+&pcie_phy {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&pcie0 {
|
||||
+ status = "disabled";
|
||||
+ ep-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
|
||||
+ num-lanes = <4>;
|
||||
+};
|
||||
+
|
||||
+&pwm_bl {
|
||||
+ status = "okay";
|
||||
+ enable-gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
|
||||
+};
|
||||
+
|
||||
+&pwm0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pwm1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pwm2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&saradc {
|
||||
+ status = "okay";
|
||||
+ vref-supply = <&vccadc_ref>; /* TBD */
|
||||
+};
|
||||
+
|
||||
+&sdhci {
|
||||
+ bus-width = <8>;
|
||||
+ mmc-hs400-1_8v;
|
||||
+ supports-emmc;
|
||||
+ non-removable;
|
||||
+ keep-power-in-suspend;
|
||||
+ mmc-hs400-enhanced-strobe;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&emmc_phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdio0 {
|
||||
+ clock-frequency = <50000000>;
|
||||
+ clock-freq-min-max = <200000 50000000>;
|
||||
+ supports-sdio;
|
||||
+ bus-width = <4>;
|
||||
+ disable-wp;
|
||||
+ cap-sd-highspeed;
|
||||
+ cap-sdio-irq;
|
||||
+ keep-power-in-suspend;
|
||||
+ mmc-pwrseq = <&sdio_pwrseq>;
|
||||
+ non-removable;
|
||||
+ num-slots = <1>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
|
||||
+ sd-uhs-sdr104;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdmmc {
|
||||
+ clock-frequency = <150000000>;
|
||||
+ clock-freq-min-max = <100000 150000000>;
|
||||
+ supports-sd;
|
||||
+ bus-width = <4>;
|
||||
+ cap-mmc-highspeed;
|
||||
+ cap-sd-highspeed;
|
||||
+ disable-wp;
|
||||
+ num-slots = <1>;
|
||||
+ //sd-uhs-sdr104;
|
||||
+ vqmmc-supply = <&vcc_sd>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tsadc {
|
||||
+ /* tshut mode 0:CRU 1:GPIO */
|
||||
+ rockchip,hw-tshut-mode = <1>;
|
||||
+ /* tshut polarity 0:LOW 1:HIGH */
|
||||
+ rockchip,hw-tshut-polarity = <1>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tcphy0 {
|
||||
+ extcon = <&fusb0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tcphy1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u2phy0 {
|
||||
+ status = "okay";
|
||||
+ extcon = <&fusb0>;
|
||||
+
|
||||
+ u2phy0_otg: otg-port {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ u2phy0_host: host-port {
|
||||
+ phy-supply = <&vcc5v0_host>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&u2phy1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ u2phy1_otg: otg-port {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ u2phy1_host: host-port {
|
||||
+ phy-supply = <&vcc5v0_host>;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&usbdrd3_0 {
|
||||
+ status = "okay";
|
||||
+ extcon = <&fusb0>;
|
||||
+};
|
||||
+
|
||||
+&usbdrd3_1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbdrd_dwc3_0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbdrd_dwc3_1 {
|
||||
+ status = "okay";
|
||||
+ dr_mode = "host";
|
||||
+};
|
||||
+
|
||||
+&usb_host0_ehci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_host0_ohci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_host1_ehci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_host1_ohci {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ pmic {
|
||||
+ pmic_int_l: pmic-int-l {
|
||||
+ rockchip,pins = <1 21 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+
|
||||
+ vsel1_gpio: vsel1-gpio {
|
||||
+ rockchip,pins = <1 17 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
+ };
|
||||
+ vsel2_gpio: vsel2-gpio {
|
||||
+ rockchip,pins = <1 14 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ usb2 {
|
||||
+ vcc5v0_host_en: vcc5v0-host-en {
|
||||
+ rockchip,pins = <4 25 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fusb30x {
|
||||
+ fusb0_int: fusb0-int {
|
||||
+ rockchip,pins = <1 2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ sdio-pwrseq {
|
||||
+ wifi_enable_h: wifi-enable-h {
|
||||
+ rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ wireless-bluetooth {
|
||||
+ uart0_gpios: uart0-gpios {
|
||||
+ rockchip,pins = <2 19 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ rockchip-key {
|
||||
+ power_key: power-key {
|
||||
+ rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ lcd-panel {
|
||||
+ lcd_panel_reset: lcd-panel-reset {
|
||||
+ rockchip,pins = <4 30 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ headphone {
|
||||
+ hp_det: hp-det {
|
||||
+ rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio-leds {
|
||||
+ leds_gpio: leds-gpio {
|
||||
+ rockchip,pins = <0 13 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -0,0 +1,264 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
index f4b6799a8..a1041ec3e 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
||||
@@ -21,33 +21,24 @@
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
- dc_12v: dc-12v {
|
||||
- compatible = "regulator-fixed";
|
||||
- regulator-name = "dc_12v";
|
||||
- regulator-always-on;
|
||||
- regulator-boot-on;
|
||||
- regulator-min-microvolt = <12000000>;
|
||||
- regulator-max-microvolt = <12000000>;
|
||||
- };
|
||||
-
|
||||
vcc_sd: sdmmc-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
- gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||
+ gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0m1_gpio>;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
|
||||
- vcc_sdio: sdmmcio-regulator {
|
||||
+ vccio_sd: sdmmcio-regulator {
|
||||
compatible = "regulator-gpio";
|
||||
gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
|
||||
states = <1800000 0x1
|
||||
3300000 0x0>;
|
||||
- regulator-name = "vcc_sdio";
|
||||
+ regulator-name = "vccio_sd";
|
||||
regulator-type = "voltage";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
@@ -68,11 +60,8 @@
|
||||
vcc_sys: vcc-sys {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_sys";
|
||||
- regulator-always-on;
|
||||
- regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
- vin-supply = <&dc_12v>;
|
||||
};
|
||||
|
||||
vcc_phy: vcc-phy-regulator {
|
||||
@@ -82,7 +71,24 @@
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
-};
|
||||
+
|
||||
+ ir-receiver {
|
||||
+ compatible = "gpio-ir-receiver";
|
||||
+ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||
+ pinctrl-0 = <&ir_int>;
|
||||
+ pinctrl-names = "default";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&analog_sound {
|
||||
+ simple-audio-card,name = "TRS Jack";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&codec {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <&vdd_arm>;
|
||||
@@ -122,7 +127,6 @@
|
||||
&emmc {
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
- max-frequency = <150000000>;
|
||||
mmc-ddr-1_8v;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
@@ -152,6 +156,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&gpu {
|
||||
+ mali-supply = <&vdd_logic>;
|
||||
+};
|
||||
+
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -160,6 +168,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&hdmi_sound {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
|
||||
@@ -187,8 +199,9 @@
|
||||
regulators {
|
||||
vdd_logic: DCDC_REG1 {
|
||||
regulator-name = "vdd_logic";
|
||||
- regulator-min-microvolt = <712500>;
|
||||
- regulator-max-microvolt = <1450000>;
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <1150000>;
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
@@ -199,8 +212,9 @@
|
||||
|
||||
vdd_arm: DCDC_REG2 {
|
||||
regulator-name = "vdd_arm";
|
||||
- regulator-min-microvolt = <712500>;
|
||||
- regulator-max-microvolt = <1450000>;
|
||||
+ regulator-min-microvolt = <950000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <12500>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
@@ -269,12 +283,20 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&i2s0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2s1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&io_domains {
|
||||
status = "okay";
|
||||
|
||||
vccio1-supply = <&vcc_io>;
|
||||
vccio2-supply = <&vcc18_emmc>;
|
||||
- vccio3-supply = <&vcc_sdio>;
|
||||
+ vccio3-supply = <&vccio_sd>;
|
||||
vccio4-supply = <&vcc_18>;
|
||||
vccio5-supply = <&vcc_io>;
|
||||
vccio6-supply = <&vcc_io>;
|
||||
@@ -282,6 +304,12 @@
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
+ ir {
|
||||
+ ir_int: ir-int {
|
||||
+ rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
pmic {
|
||||
pmic_int_l: pmic-int-l {
|
||||
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
@@ -308,11 +336,26 @@
|
||||
sd-uhs-sdr50;
|
||||
sd-uhs-sdr104;
|
||||
vmmc-supply = <&vcc_sd>;
|
||||
- vqmmc-supply = <&vcc_sdio>;
|
||||
+ vqmmc-supply = <&vccio_sd>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdif {
|
||||
+ pinctrl-0 = <&spdifm0_tx>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdif_out {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&spdif_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
+ rockchip,hw-tshut-mode = <0>;
|
||||
+ rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
index eedc25132..5c62f0116 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
@@ -198,6 +198,26 @@
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
+ spdif_out: spdif-out {
|
||||
+ compatible = "linux,spdif-dit";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ spdif_sound: spdif-sound {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "SPDIF";
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&spdif>;
|
||||
+ };
|
||||
+
|
||||
+ simple-audio-card,codec {
|
||||
+ sound-dai = <&spdif_out>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
@@ -319,6 +339,12 @@
|
||||
};
|
||||
};
|
||||
|
||||
+
|
||||
+ pd_gpu@RK3328_PD_GPU {
|
||||
+ reg = <RK3328_PD_GPU>;
|
||||
+ clocks = <&cru ACLK_GPU>;
|
||||
+ };
|
||||
+
|
||||
reboot-mode {
|
||||
compatible = "syscon-reboot-mode";
|
||||
offset = <0x5c8>;
|
||||
@@ -609,6 +635,7 @@
|
||||
"ppmmu1";
|
||||
clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>;
|
||||
clock-names = "bus", "core";
|
||||
+ power-domains = <&power RK3328_PD_GPU>;
|
||||
resets = <&cru SRST_GPU_A>;
|
||||
};
|
||||
|
||||
@@ -781,6 +808,7 @@
|
||||
<&cru ACLK_BUS_PRE>, <&cru HCLK_BUS_PRE>,
|
||||
<&cru PCLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
|
||||
<&cru HCLK_PERI>, <&cru PCLK_PERI>,
|
||||
+ <&cru ACLK_GPU>,
|
||||
<&cru SCLK_RTC32K>;
|
||||
assigned-clock-parents =
|
||||
<&cru HDMIPHY>, <&cru PLL_APLL>,
|
||||
@@ -802,6 +830,7 @@
|
||||
<150000000>, <75000000>,
|
||||
<75000000>, <150000000>,
|
||||
<75000000>, <75000000>,
|
||||
+ <500000000>,
|
||||
<32768>;
|
||||
};
|
||||
|
||||
@ -1,45 +0,0 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
index 6fa62cab2..d1ba2f5b9 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
||||
@@ -1462,30 +1462,30 @@
|
||||
|
||||
sdmmc0 {
|
||||
sdmmc0_clk: sdmmc0-clk {
|
||||
- rockchip,pins = <1 RK_PA6 1 &pcfg_pull_none_4ma>;
|
||||
+ rockchip,pins = <1 RK_PA6 1 &pcfg_pull_none_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_cmd: sdmmc0-cmd {
|
||||
- rockchip,pins = <1 RK_PA4 1 &pcfg_pull_up_4ma>;
|
||||
+ rockchip,pins = <1 RK_PA4 1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_dectn: sdmmc0-dectn {
|
||||
- rockchip,pins = <1 RK_PA5 1 &pcfg_pull_up_4ma>;
|
||||
+ rockchip,pins = <1 RK_PA5 1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_wrprt: sdmmc0-wrprt {
|
||||
- rockchip,pins = <1 RK_PA7 1 &pcfg_pull_up_4ma>;
|
||||
+ rockchip,pins = <1 RK_PA7 1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_bus1: sdmmc0-bus1 {
|
||||
- rockchip,pins = <1 RK_PA0 1 &pcfg_pull_up_4ma>;
|
||||
+ rockchip,pins = <1 RK_PA0 1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_bus4: sdmmc0-bus4 {
|
||||
- rockchip,pins = <1 RK_PA0 1 &pcfg_pull_up_4ma>,
|
||||
- <1 RK_PA1 1 &pcfg_pull_up_4ma>,
|
||||
- <1 RK_PA2 1 &pcfg_pull_up_4ma>,
|
||||
- <1 RK_PA3 1 &pcfg_pull_up_4ma>;
|
||||
+ rockchip,pins = <1 RK_PA0 1 &pcfg_pull_up_8ma>,
|
||||
+ <1 RK_PA1 1 &pcfg_pull_up_8ma>,
|
||||
+ <1 RK_PA2 1 &pcfg_pull_up_8ma>,
|
||||
+ <1 RK_PA3 1 &pcfg_pull_up_8ma>;
|
||||
};
|
||||
|
||||
sdmmc0_gpio: sdmmc0-gpio {
|
||||
|
||||
5145
patch/kernel/rockchip64-legacy/patch-4.4.211-212.patch
Normal file
5145
patch/kernel/rockchip64-legacy/patch-4.4.211-212.patch
Normal file
File diff suppressed because it is too large
Load Diff
1559
patch/kernel/rockchip64-legacy/patch-4.4.212-213.patch
Normal file
1559
patch/kernel/rockchip64-legacy/patch-4.4.212-213.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,20 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
index 3c650d60..15abd689 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
||||
@@ -28,6 +28,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb-dmic-pdm-v10.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb-dmic-pdm-v11.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-fpga.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-robot.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-voice-module-board-v10.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308b-evb-amic-v10.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-evb-ai-va-v10.dtb
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts b/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts
|
||||
new file mode 120000
|
||||
index 00000000..6db75655
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts
|
||||
@@ -0,0 +1 @@
|
||||
+rockpi-s-linux.dts
|
||||
\ No newline at end of file
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,7 @@
|
||||
From d369162154e5d904c62ed6275ec71d8c2cbcb024 Mon Sep 17 00:00:00 2001
|
||||
From ad9301a2a36b5ecc0152a97cb79a53e3765fb72b Mon Sep 17 00:00:00 2001
|
||||
From: Icenowy Zheng <icenowy@aosc.io>
|
||||
Date: Thu, 18 Oct 2018 15:33:20 +0800
|
||||
Subject: [PATCH 127/146] drm/bridge: split some definitions of ANX78xx to
|
||||
dedicated headers
|
||||
Date: Tue, 29 Oct 2019 13:16:57 +0100
|
||||
Subject: drm/bridge: split some definitions of ANX78xx to dedicated headers
|
||||
|
||||
Some definitions currently in analogix-anx78xx.h are not restricted to
|
||||
the ANX78xx series, but also applicable to other DisplayPort
|
||||
@ -12,39 +11,41 @@ Split out them to dedicated headers, and make analogix-anx78xx.h include
|
||||
them.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20191107135212.4D41E68BE1@verein.lst.de
|
||||
---
|
||||
.../drm/bridge/analogix/analogix-anx78xx.h | 464 +-----------------
|
||||
.../drm/bridge/analogix/analogix-i2c-dptx.h | 248 ++++++++++
|
||||
.../bridge/analogix/analogix-i2c-txcommon.h | 237 +++++++++
|
||||
3 files changed, 490 insertions(+), 459 deletions(-)
|
||||
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h | 460 +--------------------
|
||||
.../gpu/drm/bridge/analogix/analogix-i2c-dptx.h | 245 +++++++++++
|
||||
.../drm/bridge/analogix/analogix-i2c-txcommon.h | 231 +++++++++++
|
||||
3 files changed, 479 insertions(+), 457 deletions(-)
|
||||
create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
|
||||
(limited to 'drivers/gpu/drm/bridge/analogix')
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
|
||||
index 38753c870137..8aa1eca306d3 100644
|
||||
index 55d6c2109740..db2a2725acb2 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.h
|
||||
@@ -15,9 +15,12 @@
|
||||
@@ -6,6 +6,9 @@
|
||||
#ifndef __ANX78xx_H
|
||||
#define __ANX78xx_H
|
||||
|
||||
-#define TX_P0 0x70
|
||||
+#include "analogix-i2c-dptx.h"
|
||||
+#include "analogix-i2c-txcommon.h"
|
||||
+
|
||||
+#define TX_P0 ANALOGIX_I2C_DPTX
|
||||
#define TX_P1 0x7a
|
||||
-#define TX_P2 0x72
|
||||
+#define TX_P2 ANALOGIX_I2C_TXCOMMON
|
||||
|
||||
#define RX_P0 0x7e
|
||||
#define RX_P1 0x80
|
||||
@@ -225,463 +228,6 @@
|
||||
/***************************************************************/
|
||||
/* Register definitions for RX_PO */
|
||||
/***************************************************************/
|
||||
@@ -209,463 +212,6 @@
|
||||
#define SP_CLEAR_AVMUTE BIT(4)
|
||||
#define SP_SET_AVMUTE BIT(0)
|
||||
|
||||
-/***************************************************************/
|
||||
-/* Register definition of device address 0x70 */
|
||||
-/* Register definitions for TX_P0 */
|
||||
-/***************************************************************/
|
||||
-
|
||||
-/* HDCP Status Register */
|
||||
@ -278,7 +279,7 @@ index 38753c870137..8aa1eca306d3 100644
|
||||
-#define SP_DP_BUF_DATA0_REG 0xf0
|
||||
-
|
||||
-/***************************************************************/
|
||||
-/* Register definition of device address 0x72 */
|
||||
-/* Register definitions for TX_P2 */
|
||||
-/***************************************************************/
|
||||
-
|
||||
-/*
|
||||
@ -501,29 +502,26 @@ index 38753c870137..8aa1eca306d3 100644
|
||||
-#define SP_INT_CTRL_REG 0xff
|
||||
-
|
||||
/***************************************************************/
|
||||
/* Register definition of device address 0x7a */
|
||||
/* Register definitions for TX_P1 */
|
||||
/***************************************************************/
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
new file mode 100644
|
||||
index 000000000000..bc0831b127bf
|
||||
index 000000000000..4777e48c87a9
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
@@ -0,0 +1,248 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
@@ -0,0 +1,245 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
+/*
|
||||
+ * Copyright(c) 2017 Icenowy Zheng <icenowy@aosc.io>
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor.
|
||||
+ *
|
||||
+ * Based on analogix-anx78xx.h, which is:
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor. All rights reserved.
|
||||
+ * Based on anx7808 driver obtained from chromeos with copyright:
|
||||
+ * Copyright(c) 2013, Google Inc.
|
||||
+ */
|
||||
+
|
||||
+#ifndef _ANALOGIX_I2C_DPTX_H_
|
||||
+#define _ANALOGIX_I2C_DPTX_H_
|
||||
+
|
||||
+#define ANALOGIX_I2C_DPTX 0x70
|
||||
+
|
||||
+/***************************************************************/
|
||||
+/* Register definition of device address 0x70 */
|
||||
+/* Register definitions for TX_P0 */
|
||||
+/***************************************************************/
|
||||
+
|
||||
+/* HDCP Status Register */
|
||||
@ -759,25 +757,19 @@ index 000000000000..bc0831b127bf
|
||||
+#endif
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
new file mode 100644
|
||||
index 000000000000..7d683573e970
|
||||
index 000000000000..677e78fb862f
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
@@ -0,0 +1,237 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
@@ -0,0 +1,231 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
+/*
|
||||
+ * Copyright(c) 2017 Icenowy Zheng <icenowy@aosc.io>
|
||||
+ *
|
||||
+ * Based on analogix-anx78xx.h, which is:
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor. All rights reserved.
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor. All rights reserved.
|
||||
+ */
|
||||
+
|
||||
+#ifndef _ANALOGIX_I2C_TXCOMMON_H_
|
||||
+#define _ANALOGIX_I2C_TXCOMMON_H_
|
||||
+
|
||||
+#define ANALOGIX_I2C_TXCOMMON 0x72
|
||||
+
|
||||
+/***************************************************************/
|
||||
+/* Register definition of device address 0x72 */
|
||||
+/* Register definitions for TX_P2 */
|
||||
+/***************************************************************/
|
||||
+
|
||||
+/*
|
||||
@ -1001,5 +993,5 @@ index 000000000000..7d683573e970
|
||||
+
|
||||
+#endif /* _ANALOGIX_I2C_TXCOMMON_H_ */
|
||||
--
|
||||
2.17.1
|
||||
cgit 1.2-0.3.lf.el7
|
||||
|
||||
@ -1,63 +1,51 @@
|
||||
From d1f75332d44f26e734985493c134a727c79cb1f1 Mon Sep 17 00:00:00 2001
|
||||
From 0712eca92c3e6611ec4dc1bc127a30d3882c4336 Mon Sep 17 00:00:00 2001
|
||||
From: Icenowy Zheng <icenowy@aosc.io>
|
||||
Date: Thu, 18 Oct 2018 15:33:21 +0800
|
||||
Subject: [PATCH 128/146] drm/bridge: extract some Analogix I2C DP common code
|
||||
Date: Tue, 29 Oct 2019 13:16:57 +0100
|
||||
Subject: drm/bridge: extract some Analogix I2C DP common code
|
||||
|
||||
Some code can be shared within different DP bridges by Analogix.
|
||||
|
||||
Extract them to a new module.
|
||||
Extract them to analogix_dp.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20191107135214.966BD68BFE@verein.lst.de
|
||||
---
|
||||
drivers/gpu/drm/bridge/analogix/Kconfig | 4 +
|
||||
drivers/gpu/drm/bridge/analogix/Makefile | 2 +
|
||||
.../drm/bridge/analogix/analogix-anx78xx.c | 146 +--------------
|
||||
.../drm/bridge/analogix/analogix-i2c-dptx.c | 169 ++++++++++++++++++
|
||||
.../drm/bridge/analogix/analogix-i2c-dptx.h | 2 +
|
||||
5 files changed, 178 insertions(+), 145 deletions(-)
|
||||
drivers/gpu/drm/bridge/analogix/Makefile | 2 +-
|
||||
drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 146 +-----------------
|
||||
.../gpu/drm/bridge/analogix/analogix-i2c-dptx.c | 165 +++++++++++++++++++++
|
||||
.../gpu/drm/bridge/analogix/analogix-i2c-dptx.h | 3 +
|
||||
4 files changed, 170 insertions(+), 146 deletions(-)
|
||||
create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig b/drivers/gpu/drm/bridge/analogix/Kconfig
|
||||
index 27b37aa2ea77..eb893b465dd8 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/Kconfig
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/Kconfig
|
||||
@@ -2,8 +2,12 @@ config DRM_ANALOGIX_DP
|
||||
tristate
|
||||
depends on DRM
|
||||
|
||||
+config DRM_ANALOGIX_DP_I2C
|
||||
+ tristate
|
||||
+
|
||||
config DRM_ANALOGIX_ANX78XX
|
||||
tristate "Analogix ANX78XX bridge"
|
||||
+ select DRM_ANALOGIX_DP_I2C
|
||||
select DRM_KMS_HELPER
|
||||
select REGMAP_I2C
|
||||
---help---
|
||||
(limited to 'drivers/gpu/drm/bridge/analogix')
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/Makefile b/drivers/gpu/drm/bridge/analogix/Makefile
|
||||
index eb41be845055..c37e2ded8ce3 100644
|
||||
index 6fcbfd3ee560..7623b9b80167 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/Makefile
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/Makefile
|
||||
@@ -1,3 +1,5 @@
|
||||
analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o
|
||||
+analogix_dp_i2c-objs := analogix-i2c-dptx.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
|
||||
+obj-$(CONFIG_DRM_ANALOGIX_DP_I2C) += analogix_dp_i2c.o
|
||||
@@ -1,4 +1,4 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
-analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o
|
||||
+analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o analogix-i2c-dptx.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
|
||||
index f8433c93f463..bf8291d0ddd0 100644
|
||||
index 274989f96a91..41867be03751 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
|
||||
@@ -45,8 +45,6 @@
|
||||
@@ -36,8 +36,6 @@
|
||||
#define I2C_IDX_RX_P1 4
|
||||
|
||||
#define XTAL_CLK 270 /* 27M */
|
||||
-#define AUX_CH_BUFFER_SIZE 16
|
||||
-#define AUX_WAIT_TIMEOUT_MS 15
|
||||
|
||||
static const u8 anx78xx_i2c_addresses[] = {
|
||||
[I2C_IDX_TX_P0] = TX_P0,
|
||||
@@ -109,153 +107,11 @@ static int anx78xx_clear_bits(struct regmap *map, u8 reg, u8 mask)
|
||||
static const u8 anx7808_i2c_addresses[] = {
|
||||
[I2C_IDX_TX_P0] = 0x78,
|
||||
@@ -107,153 +105,11 @@ static int anx78xx_clear_bits(struct regmap *map, u8 reg, u8 mask)
|
||||
return regmap_update_bits(map, reg, mask, 0);
|
||||
}
|
||||
|
||||
@ -208,42 +196,40 @@ index f8433c93f463..bf8291d0ddd0 100644
|
||||
- return err;
|
||||
-
|
||||
- return msg->size;
|
||||
+ return anx_aux_transfer(anx78xx->map[I2C_IDX_TX_P0], msg);
|
||||
+ return anx_dp_aux_transfer(anx78xx->map[I2C_IDX_TX_P0], msg);
|
||||
}
|
||||
|
||||
static int anx78xx_set_hpd(struct anx78xx *anx78xx)
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
new file mode 100644
|
||||
index 000000000000..9cb30962032e
|
||||
index 000000000000..60707bb5afe7
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
@@ -0,0 +1,169 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
@@ -0,0 +1,165 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
+/*
|
||||
+ * Copyright(c) 2017 Icenowy Zheng <icenowy@aosc.io>
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor.
|
||||
+ *
|
||||
+ * Based on analogix-anx78xx.c, which is:
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor. All rights reserved.
|
||||
+ * Based on anx7808 driver obtained from chromeos with copyright:
|
||||
+ * Copyright(c) 2013, Google Inc.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/regmap.h>
|
||||
+
|
||||
+#include <drm/drm.h>
|
||||
+#include <drm/drmP.h>
|
||||
+#include <drm/drm_dp_helper.h>
|
||||
+#include <drm/drm_print.h>
|
||||
+
|
||||
+#include "analogix-i2c-dptx.h"
|
||||
+
|
||||
+#define AUX_WAIT_TIMEOUT_MS 15
|
||||
+#define AUX_CH_BUFFER_SIZE 16
|
||||
+
|
||||
+static int anx_clear_bits(struct regmap *map, u8 reg, u8 mask)
|
||||
+static int anx_i2c_dp_clear_bits(struct regmap *map, u8 reg, u8 mask)
|
||||
+{
|
||||
+ return regmap_update_bits(map, reg, mask, 0);
|
||||
+}
|
||||
+
|
||||
+static bool anx_aux_op_finished(struct regmap *map_dptx)
|
||||
+static bool anx_dp_aux_op_finished(struct regmap *map_dptx)
|
||||
+{
|
||||
+ unsigned int value;
|
||||
+ int err;
|
||||
@ -255,7 +241,7 @@ index 000000000000..9cb30962032e
|
||||
+ return (value & SP_AUX_EN) == 0;
|
||||
+}
|
||||
+
|
||||
+static int anx_aux_wait(struct regmap *map_dptx)
|
||||
+static int anx_dp_aux_wait(struct regmap *map_dptx)
|
||||
+{
|
||||
+ unsigned long timeout;
|
||||
+ unsigned int status;
|
||||
@ -263,9 +249,9 @@ index 000000000000..9cb30962032e
|
||||
+
|
||||
+ timeout = jiffies + msecs_to_jiffies(AUX_WAIT_TIMEOUT_MS) + 1;
|
||||
+
|
||||
+ while (!anx_aux_op_finished(map_dptx)) {
|
||||
+ while (!anx_dp_aux_op_finished(map_dptx)) {
|
||||
+ if (time_after(jiffies, timeout)) {
|
||||
+ if (!anx_aux_op_finished(map_dptx)) {
|
||||
+ if (!anx_dp_aux_op_finished(map_dptx)) {
|
||||
+ DRM_ERROR("Timed out waiting AUX to finish\n");
|
||||
+ return -ETIMEDOUT;
|
||||
+ }
|
||||
@ -292,7 +278,7 @@ index 000000000000..9cb30962032e
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anx_aux_address(struct regmap *map_dptx, unsigned int addr)
|
||||
+static int anx_dp_aux_address(struct regmap *map_dptx, unsigned int addr)
|
||||
+{
|
||||
+ int err;
|
||||
+
|
||||
@ -320,7 +306,8 @@ index 000000000000..9cb30962032e
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+ssize_t anx_aux_transfer(struct regmap *map_dptx, struct drm_dp_aux_msg *msg)
|
||||
+ssize_t anx_dp_aux_transfer(struct regmap *map_dptx,
|
||||
+ struct drm_dp_aux_msg *msg)
|
||||
+{
|
||||
+ u8 ctrl1 = msg->request;
|
||||
+ u8 ctrl2 = SP_AUX_EN;
|
||||
@ -347,7 +334,7 @@ index 000000000000..9cb30962032e
|
||||
+ }
|
||||
+
|
||||
+ /* Write address and request */
|
||||
+ err = anx_aux_address(map_dptx, msg->address);
|
||||
+ err = anx_dp_aux_address(map_dptx, msg->address);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
@ -361,7 +348,7 @@ index 000000000000..9cb30962032e
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ err = anx_aux_wait(map_dptx);
|
||||
+ err = anx_dp_aux_wait(map_dptx);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
@ -376,28 +363,26 @@ index 000000000000..9cb30962032e
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ err = anx_clear_bits(map_dptx, SP_DP_AUX_CH_CTRL2_REG, SP_ADDR_ONLY);
|
||||
+ err = anx_i2c_dp_clear_bits(map_dptx, SP_DP_AUX_CH_CTRL2_REG,
|
||||
+ SP_ADDR_ONLY);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ return msg->size;
|
||||
+}
|
||||
+EXPORT_SYMBOL(anx_aux_transfer);
|
||||
+
|
||||
+MODULE_DESCRIPTION("Analogix DisplayPort Transmitter common code");
|
||||
+MODULE_AUTHOR("Icenowy Zheng <icenowy@aosc.io>");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
+EXPORT_SYMBOL_GPL(anx_dp_aux_transfer);
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
index bc0831b127bf..c2ca854613a0 100644
|
||||
index 4777e48c87a9..db24f7290461 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
@@ -245,4 +245,6 @@
|
||||
@@ -242,4 +242,7 @@
|
||||
/* DP AUX Buffer Data Registers */
|
||||
#define SP_DP_BUF_DATA0_REG 0xf0
|
||||
|
||||
+ssize_t anx_aux_transfer(struct regmap *map_dptx, struct drm_dp_aux_msg *msg);
|
||||
+ssize_t anx_dp_aux_transfer(struct regmap *map_dptx,
|
||||
+ struct drm_dp_aux_msg *msg);
|
||||
+
|
||||
#endif
|
||||
--
|
||||
2.17.1
|
||||
cgit 1.2-0.3.lf.el7
|
||||
|
||||
@ -0,0 +1,86 @@
|
||||
From dea73d61466e4f09c8184f7bb5375975878645b3 Mon Sep 17 00:00:00 2001
|
||||
From: Torsten Duwe <duwe@lst.de>
|
||||
Date: Tue, 29 Oct 2019 13:16:57 +0100
|
||||
Subject: drm/bridge: Prepare Analogix anx6345 support
|
||||
|
||||
Add bit definitions required for the anx6345 and add a
|
||||
sanity check in anx_dp_aux_transfer.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20191107135218.01C2168C4E@verein.lst.de
|
||||
---
|
||||
drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c | 2 +-
|
||||
drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h | 8 ++++++++
|
||||
drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h | 3 +++
|
||||
3 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
(limited to 'drivers/gpu/drm/bridge/analogix')
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
index 60707bb5afe7..fe40bab21530 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
@@ -116,7 +116,7 @@ ssize_t anx_dp_aux_transfer(struct regmap *map_dptx,
|
||||
else /* For non-zero-sized set the length field. */
|
||||
ctrl1 |= (msg->size - 1) << SP_AUX_LENGTH_SHIFT;
|
||||
|
||||
- if ((msg->request & DP_AUX_I2C_READ) == 0) {
|
||||
+ if ((msg->size > 0) && ((msg->request & DP_AUX_I2C_READ) == 0)) {
|
||||
/* When WRITE | MOT write values to data buffer */
|
||||
err = regmap_bulk_write(map_dptx,
|
||||
SP_DP_BUF_DATA0_REG, buffer,
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
index db24f7290461..663c4bea6e70 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
@@ -72,7 +72,11 @@
|
||||
#define SP_CHA_STA BIT(2)
|
||||
/* Bits for DP System Control Register 3 */
|
||||
#define SP_HPD_STATUS BIT(6)
|
||||
+#define SP_HPD_FORCE BIT(5)
|
||||
+#define SP_HPD_CTRL BIT(4)
|
||||
#define SP_STRM_VALID BIT(2)
|
||||
+#define SP_STRM_FORCE BIT(1)
|
||||
+#define SP_STRM_CTRL BIT(0)
|
||||
/* Bits for DP System Control Register 4 */
|
||||
#define SP_ENHANCED_MODE BIT(3)
|
||||
|
||||
@@ -117,6 +121,9 @@
|
||||
#define SP_LINK_BW_SET_MASK 0x1f
|
||||
#define SP_INITIAL_SLIM_M_AUD_SEL BIT(5)
|
||||
|
||||
+/* DP Lane Count Setting Register */
|
||||
+#define SP_DP_LANE_COUNT_SET_REG 0xa1
|
||||
+
|
||||
/* DP Training Pattern Set Register */
|
||||
#define SP_DP_TRAINING_PATTERN_SET_REG 0xa2
|
||||
|
||||
@@ -130,6 +137,7 @@
|
||||
|
||||
/* DP Link Training Control Register */
|
||||
#define SP_DP_LT_CTRL_REG 0xa8
|
||||
+#define SP_DP_LT_INPROGRESS 0x80
|
||||
#define SP_LT_ERROR_TYPE_MASK 0x70
|
||||
# define SP_LT_NO_ERROR 0x00
|
||||
# define SP_LT_AUX_WRITE_ERROR 0x01
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
index 677e78fb862f..3c843497d835 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
@@ -177,6 +177,9 @@
|
||||
#define SP_VBIT BIT(1)
|
||||
#define SP_AUDIO_LAYOUT BIT(0)
|
||||
|
||||
+/* Analog Debug Register 1 */
|
||||
+#define SP_ANALOG_DEBUG1_REG 0xdc
|
||||
+
|
||||
/* Analog Debug Register 2 */
|
||||
#define SP_ANALOG_DEBUG2_REG 0xdd
|
||||
#define SP_FORCE_SW_OFF_BYPASS 0x20
|
||||
--
|
||||
cgit 1.2-0.3.lf.el7
|
||||
|
||||
@ -1,36 +1,37 @@
|
||||
From 2da065ab8aa3f562a02dfd3df4ad971d1229b136 Mon Sep 17 00:00:00 2001
|
||||
From 6aa192698089b450b06d609355fc9c82c07856d2 Mon Sep 17 00:00:00 2001
|
||||
From: Icenowy Zheng <icenowy@aosc.io>
|
||||
Date: Thu, 18 Oct 2018 15:33:23 +0800
|
||||
Subject: [PATCH 130/146] drm/bridge: Add Analogix anx6345 support
|
||||
Date: Tue, 29 Oct 2019 13:16:57 +0100
|
||||
Subject: drm/bridge: Add Analogix anx6345 support
|
||||
|
||||
The ANX6345 is an ultra-low power DisplayPower/eDP transmitter designed
|
||||
for portable devices. This driver adds initial support for RGB to eDP
|
||||
mode, without HPD and interrupts, but with possibility to inject EDID.
|
||||
mode, without HPD and interrupts.
|
||||
|
||||
This is a configuration usually seen in eDP applications.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20191107135220.590D968BFE@verein.lst.de
|
||||
---
|
||||
drivers/gpu/drm/bridge/analogix/Kconfig | 11 +
|
||||
drivers/gpu/drm/bridge/analogix/Makefile | 1 +
|
||||
.../drm/bridge/analogix/analogix-anx6345.c | 862 ++++++++++++++++++
|
||||
.../drm/bridge/analogix/analogix-i2c-dptx.c | 2 +-
|
||||
.../drm/bridge/analogix/analogix-i2c-dptx.h | 8 +
|
||||
.../bridge/analogix/analogix-i2c-txcommon.h | 3 +
|
||||
6 files changed, 886 insertions(+), 1 deletion(-)
|
||||
drivers/gpu/drm/bridge/analogix/Kconfig | 12 +
|
||||
drivers/gpu/drm/bridge/analogix/Makefile | 1 +
|
||||
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 793 +++++++++++++++++++++
|
||||
3 files changed, 806 insertions(+)
|
||||
create mode 100644 drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
|
||||
|
||||
(limited to 'drivers/gpu/drm/bridge/analogix')
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig b/drivers/gpu/drm/bridge/analogix/Kconfig
|
||||
index eb893b465dd8..784ddca83b47 100644
|
||||
index 29ba1b21019e..1425a96a28c3 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/Kconfig
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/Kconfig
|
||||
@@ -15,3 +15,14 @@ config DRM_ANALOGIX_ANX78XX
|
||||
designed for portable devices. The ANX78XX transforms
|
||||
the HDMI output of an application processor to MyDP
|
||||
or DisplayPort.
|
||||
+
|
||||
@@ -1,6 +1,18 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
+config DRM_ANALOGIX_ANX6345
|
||||
+ tristate "Analogix ANX6345 bridge"
|
||||
+ select DRM_ANALOGIX_DP_I2C
|
||||
+ select DRM_ANALOGIX_DP
|
||||
+ select DRM_KMS_HELPER
|
||||
+ select REGMAP_I2C
|
||||
+ help
|
||||
@ -38,71 +39,73 @@ index eb893b465dd8..784ddca83b47 100644
|
||||
+ transmitter designed for portable devices. The
|
||||
+ ANX6345 transforms the LVTTL RGB output of an
|
||||
+ application processor to eDP or DisplayPort.
|
||||
+
|
||||
config DRM_ANALOGIX_ANX78XX
|
||||
tristate "Analogix ANX78XX bridge"
|
||||
+ select DRM_ANALOGIX_DP
|
||||
select DRM_KMS_HELPER
|
||||
select REGMAP_I2C
|
||||
help
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/Makefile b/drivers/gpu/drm/bridge/analogix/Makefile
|
||||
index c37e2ded8ce3..3af9feab6e17 100644
|
||||
index 7623b9b80167..97669b374098 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/Makefile
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/Makefile
|
||||
@@ -3,3 +3,4 @@ analogix_dp_i2c-objs := analogix-i2c-dptx.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_DP_I2C) += analogix_dp_i2c.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
|
||||
@@ -1,4 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
analogix_dp-objs := analogix_dp_core.o analogix_dp_reg.o analogix-i2c-dptx.o
|
||||
+obj-$(CONFIG_DRM_ANALOGIX_ANX6345) += analogix-anx6345.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o
|
||||
obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix_dp.o
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
|
||||
new file mode 100644
|
||||
index 000000000000..81676407aa6d
|
||||
index 000000000000..4574d6b264de
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
|
||||
@@ -0,0 +1,863 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0
|
||||
@@ -0,0 +1,793 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
+/*
|
||||
+ * Copyright(c) Icenowy Zheng <icenowy@aosc.io>
|
||||
+ * Based on analogix-anx6345.c, which is:
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor.
|
||||
+ * Copyright(c) 2016, Analogix Semiconductor.
|
||||
+ * Copyright(c) 2017, Icenowy Zheng <icenowy@aosc.io>
|
||||
+ *
|
||||
+ * Based on anx7808 driver obtained from chromeos with copyright:
|
||||
+ * Copyright(c) 2013, Google Inc.
|
||||
+ */
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/err.h>
|
||||
+#include <linux/interrupt.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
+#include <linux/i2c.h>
|
||||
+#include <linux/interrupt.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of_gpio.h>
|
||||
+#include <linux/of_platform.h>
|
||||
+#include <linux/regmap.h>
|
||||
+#include <linux/types.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
+#include <linux/regulator/consumer.h>
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+#include <drm/drmP.h>
|
||||
+#include <drm/drm_atomic_helper.h>
|
||||
+#include <drm/drm_crtc.h>
|
||||
+#include <drm/drm_crtc_helper.h>
|
||||
+#include <drm/drm_probe_helper.h>
|
||||
+#include <drm/drm_dp_helper.h>
|
||||
+#include <drm/drm_edid.h>
|
||||
+#include <drm/drm_of.h>
|
||||
+#include <drm/drm_panel.h>
|
||||
+#include <drm/drm_print.h>
|
||||
+#include <drm/drm_probe_helper.h>
|
||||
+
|
||||
+#include "analogix-i2c-dptx.h"
|
||||
+#include "analogix-i2c-txcommon.h"
|
||||
+
|
||||
+#define I2C_NUM_ADDRESSES 2
|
||||
+#define I2C_IDX_DPTX 0
|
||||
+#define I2C_IDX_TXCOM 1
|
||||
+
|
||||
+#define XTAL_CLK 270 /* 27M */
|
||||
+
|
||||
+#define POLL_DELAY 50000 /* us */
|
||||
+#define POLL_TIMEOUT 5000000 /* us */
|
||||
+
|
||||
+static const u8 anx6345_i2c_addresses[] = {
|
||||
+ [I2C_IDX_DPTX] = ANALOGIX_I2C_DPTX,
|
||||
+ [I2C_IDX_TXCOM] = ANALOGIX_I2C_TXCOMMON,
|
||||
+};
|
||||
+#define I2C_IDX_DPTX 0
|
||||
+#define I2C_IDX_TXCOM 1
|
||||
+
|
||||
+struct anx6345_platform_data {
|
||||
+ struct regulator *dvdd12;
|
||||
+ struct regulator *dvdd25;
|
||||
+ struct regulator *vcc_panel;
|
||||
+ struct gpio_desc *gpiod_reset;
|
||||
+static const u8 anx6345_i2c_addresses[] = {
|
||||
+ [I2C_IDX_DPTX] = 0x70,
|
||||
+ [I2C_IDX_TXCOM] = 0x72,
|
||||
+};
|
||||
+#define I2C_NUM_ADDRESSES ARRAY_SIZE(anx6345_i2c_addresses)
|
||||
+
|
||||
+struct anx6345 {
|
||||
+ struct drm_dp_aux aux;
|
||||
@ -111,12 +114,13 @@ index 000000000000..81676407aa6d
|
||||
+ struct edid *edid;
|
||||
+ struct drm_connector connector;
|
||||
+ struct drm_dp_link link;
|
||||
+ struct anx6345_platform_data pdata;
|
||||
+ struct mutex lock;
|
||||
+ struct drm_panel *panel;
|
||||
+ struct regulator *dvdd12;
|
||||
+ struct regulator *dvdd25;
|
||||
+ struct gpio_desc *gpiod_reset;
|
||||
+ struct mutex lock; /* protect EDID access */
|
||||
+
|
||||
+ /*
|
||||
+ * I2C Slave addresses of ANX6345 are mapped as DPTX and SYS
|
||||
+ */
|
||||
+ /* I2C Slave addresses of ANX6345 are mapped as DPTX and SYS */
|
||||
+ struct i2c_client *i2c_clients[I2C_NUM_ADDRESSES];
|
||||
+ struct regmap *map[I2C_NUM_ADDRESSES];
|
||||
+
|
||||
@ -151,7 +155,7 @@ index 000000000000..81676407aa6d
|
||||
+{
|
||||
+ struct anx6345 *anx6345 = container_of(aux, struct anx6345, aux);
|
||||
+
|
||||
+ return anx_aux_transfer(anx6345->map[I2C_IDX_DPTX], msg);
|
||||
+ return anx_dp_aux_transfer(anx6345->map[I2C_IDX_DPTX], msg);
|
||||
+}
|
||||
+
|
||||
+static int anx6345_dp_link_training(struct anx6345 *anx6345)
|
||||
@ -277,21 +281,17 @@ index 000000000000..81676407aa6d
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ err = regmap_read_poll_timeout(anx6345->map[I2C_IDX_DPTX],
|
||||
+ return regmap_read_poll_timeout(anx6345->map[I2C_IDX_DPTX],
|
||||
+ SP_DP_LT_CTRL_REG,
|
||||
+ value, !(value & SP_DP_LT_INPROGRESS),
|
||||
+ POLL_DELAY, POLL_TIMEOUT);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anx6345_tx_initialization(struct anx6345 *anx6345)
|
||||
+{
|
||||
+ int err, i;
|
||||
+
|
||||
+ /* FIXME: hardcode color depth now */
|
||||
+ /* FIXME: colordepth is hardcoded for now */
|
||||
+ err = regmap_write(anx6345->map[I2C_IDX_TXCOM], SP_VID_CTRL2_REG,
|
||||
+ SP_IN_BPC_6BIT << SP_IN_BPC_SHIFT);
|
||||
+ if (err)
|
||||
@ -338,61 +338,41 @@ index 000000000000..81676407aa6d
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ err = anx6345_clear_bits(anx6345->map[I2C_IDX_TXCOM],
|
||||
+ return anx6345_clear_bits(anx6345->map[I2C_IDX_TXCOM],
|
||||
+ SP_RESET_CTRL2_REG, SP_AUX_RST);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ err = anx6345_dp_link_training(anx6345);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void anx6345_poweron(struct anx6345 *anx6345)
|
||||
+{
|
||||
+ struct anx6345_platform_data *pdata = &anx6345->pdata;
|
||||
+ int err;
|
||||
+
|
||||
+ if (WARN_ON(anx6345->powered))
|
||||
+ return;
|
||||
+
|
||||
+ if (pdata->dvdd12) {
|
||||
+ err = regulator_enable(pdata->dvdd12);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to enable DVDD12 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ usleep_range(1000, 2000);
|
||||
+ }
|
||||
+
|
||||
+ if (pdata->dvdd25) {
|
||||
+ err = regulator_enable(pdata->dvdd25);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to enable DVDD25 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ usleep_range(5000, 10000);
|
||||
+ }
|
||||
+
|
||||
+ if (pdata->vcc_panel) {
|
||||
+ err = regulator_enable(pdata->vcc_panel);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to enable panel regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ gpiod_set_value_cansleep(pdata->gpiod_reset, 0);
|
||||
+ /* Ensure reset is asserted before starting power on sequence */
|
||||
+ gpiod_set_value_cansleep(anx6345->gpiod_reset, 1);
|
||||
+ usleep_range(1000, 2000);
|
||||
+
|
||||
+ gpiod_set_value_cansleep(pdata->gpiod_reset, 1);
|
||||
+ err = regulator_enable(anx6345->dvdd12);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to enable dvdd12 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* T1 - delay between VDD12 and VDD25 should be 0-2ms */
|
||||
+ usleep_range(1000, 2000);
|
||||
+
|
||||
+ err = regulator_enable(anx6345->dvdd25);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to enable dvdd25 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* T2 - delay between RESETN and all power rail stable,
|
||||
+ * should be 2-5ms
|
||||
+ */
|
||||
+ usleep_range(2000, 5000);
|
||||
+
|
||||
+ gpiod_set_value_cansleep(anx6345->gpiod_reset, 0);
|
||||
+
|
||||
+ /* Power on registers module */
|
||||
+ anx6345_set_bits(anx6345->map[I2C_IDX_TXCOM], SP_POWERDOWN_CTRL_REG,
|
||||
@ -400,50 +380,39 @@ index 000000000000..81676407aa6d
|
||||
+ anx6345_clear_bits(anx6345->map[I2C_IDX_TXCOM], SP_POWERDOWN_CTRL_REG,
|
||||
+ SP_REGISTER_PD | SP_TOTAL_PD);
|
||||
+
|
||||
+ if (anx6345->panel)
|
||||
+ drm_panel_prepare(anx6345->panel);
|
||||
+
|
||||
+ anx6345->powered = true;
|
||||
+}
|
||||
+
|
||||
+static void anx6345_poweroff(struct anx6345 *anx6345)
|
||||
+{
|
||||
+ struct anx6345_platform_data *pdata = &anx6345->pdata;
|
||||
+ int err;
|
||||
+
|
||||
+ if (WARN_ON(!anx6345->powered))
|
||||
+ return;
|
||||
+
|
||||
+ gpiod_set_value_cansleep(pdata->gpiod_reset, 1);
|
||||
+ gpiod_set_value_cansleep(anx6345->gpiod_reset, 1);
|
||||
+ usleep_range(1000, 2000);
|
||||
+
|
||||
+ if (pdata->vcc_panel) {
|
||||
+ err = regulator_disable(pdata->vcc_panel);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to disable panel regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (anx6345->panel)
|
||||
+ drm_panel_unprepare(anx6345->panel);
|
||||
+
|
||||
+ err = regulator_disable(anx6345->dvdd25);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to disable dvdd25 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (pdata->dvdd25) {
|
||||
+ err = regulator_disable(pdata->dvdd25);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to disable DVDD25 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+ usleep_range(5000, 10000);
|
||||
+
|
||||
+ usleep_range(5000, 10000);
|
||||
+ err = regulator_disable(anx6345->dvdd12);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to disable dvdd12 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (pdata->dvdd12) {
|
||||
+ err = regulator_disable(pdata->dvdd12);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to disable DVDD12 regulator: %d\n",
|
||||
+ err);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ usleep_range(1000, 2000);
|
||||
+ }
|
||||
+ usleep_range(1000, 2000);
|
||||
+
|
||||
+ anx6345->powered = false;
|
||||
+}
|
||||
@ -457,13 +426,21 @@ index 000000000000..81676407aa6d
|
||||
+
|
||||
+ /* Power on needed modules */
|
||||
+ err = anx6345_clear_bits(anx6345->map[I2C_IDX_TXCOM],
|
||||
+ SP_POWERDOWN_CTRL_REG,
|
||||
+ SP_VIDEO_PD | SP_LINK_PD);
|
||||
+ SP_POWERDOWN_CTRL_REG,
|
||||
+ SP_VIDEO_PD | SP_LINK_PD);
|
||||
+
|
||||
+ err = anx6345_tx_initialization(anx6345);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed transmitter initialization: %d\n", err);
|
||||
+ goto err_poweroff;
|
||||
+ DRM_ERROR("Failed eDP transmitter initialization: %d\n", err);
|
||||
+ anx6345_poweroff(anx6345);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ err = anx6345_dp_link_training(anx6345);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed link training: %d\n", err);
|
||||
+ anx6345_poweroff(anx6345);
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
@ -473,44 +450,6 @@ index 000000000000..81676407aa6d
|
||||
+ usleep_range(10000, 15000);
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err_poweroff:
|
||||
+ DRM_ERROR("Failed DisplayPort transmitter initialization: %d\n", err);
|
||||
+ anx6345_poweroff(anx6345);
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int anx6345_init_pdata(struct anx6345 *anx6345)
|
||||
+{
|
||||
+ struct anx6345_platform_data *pdata = &anx6345->pdata;
|
||||
+ struct device *dev = &anx6345->client->dev;
|
||||
+
|
||||
+ /* 1.2V digital core power regulator */
|
||||
+ pdata->dvdd12 = devm_regulator_get(dev, "dvdd12");
|
||||
+ if (IS_ERR(pdata->dvdd12)) {
|
||||
+ DRM_ERROR("DVDD12 regulator not found\n");
|
||||
+ return PTR_ERR(pdata->dvdd12);
|
||||
+ }
|
||||
+
|
||||
+ /* 2.5V digital core power regulator */
|
||||
+ pdata->dvdd25 = devm_regulator_get(dev, "dvdd25");
|
||||
+ if (IS_ERR(pdata->dvdd25)) {
|
||||
+ DRM_ERROR("DVDD25 regulator not found\n");
|
||||
+ return PTR_ERR(pdata->dvdd25);
|
||||
+ }
|
||||
+
|
||||
+ /* panel power regulator */
|
||||
+ pdata->vcc_panel = devm_regulator_get(dev, "panel");
|
||||
+ if (IS_ERR(pdata->vcc_panel)) {
|
||||
+ DRM_ERROR("panel regulator not found\n");
|
||||
+ return PTR_ERR(pdata->vcc_panel);
|
||||
+ }
|
||||
+
|
||||
+ /* GPIO for chip reset */
|
||||
+ pdata->gpiod_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
|
||||
+
|
||||
+ return PTR_ERR_OR_ZERO(pdata->gpiod_reset);
|
||||
+}
|
||||
+
|
||||
+static int anx6345_config_dp_output(struct anx6345 *anx6345)
|
||||
@ -529,13 +468,9 @@ index 000000000000..81676407aa6d
|
||||
+ return err;
|
||||
+
|
||||
+ /* Force stream valid */
|
||||
+ err = anx6345_set_bits(anx6345->map[I2C_IDX_DPTX],
|
||||
+ return anx6345_set_bits(anx6345->map[I2C_IDX_DPTX],
|
||||
+ SP_DP_SYSTEM_CTRL_BASE + 3,
|
||||
+ SP_STRM_FORCE | SP_STRM_CTRL);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anx6345_get_downstream_info(struct anx6345 *anx6345)
|
||||
@ -557,70 +492,49 @@ index 000000000000..81676407aa6d
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anx6345_probe_edid_from_of(struct anx6345 *anx6345)
|
||||
+{
|
||||
+ const u8 *edidp;
|
||||
+ int len;
|
||||
+
|
||||
+ if (!anx6345->bridge.of_node)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ edidp = of_get_property(anx6345->bridge.of_node, "edid", &len);
|
||||
+ if (!edidp || len != EDID_LENGTH)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ anx6345->edid = devm_kmemdup(&anx6345->client->dev, edidp,
|
||||
+ len, GFP_KERNEL);
|
||||
+
|
||||
+ if (!anx6345->edid)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anx6345_get_modes(struct drm_connector *connector)
|
||||
+{
|
||||
+ struct anx6345 *anx6345 = connector_to_anx6345(connector);
|
||||
+ int err, num_modes = 0;
|
||||
+
|
||||
+ if (WARN_ON(!anx6345->powered))
|
||||
+ return 0;
|
||||
+
|
||||
+ if (anx6345->edid)
|
||||
+ return drm_add_edid_modes(connector, anx6345->edid);
|
||||
+ bool power_off = false;
|
||||
+
|
||||
+ mutex_lock(&anx6345->lock);
|
||||
+
|
||||
+ err = anx6345_get_downstream_info(anx6345);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to get downstream info: %d\n", err);
|
||||
+ goto unlock;
|
||||
+ }
|
||||
+
|
||||
+ anx6345->edid = drm_get_edid(connector, &anx6345->aux.ddc);
|
||||
+ if (!anx6345->edid)
|
||||
+ DRM_ERROR("Failed to read EDID from panel\n");
|
||||
+
|
||||
+ if (!anx6345->edid) {
|
||||
+ err = anx6345_probe_edid_from_of(anx6345);
|
||||
+ if (!anx6345->powered) {
|
||||
+ anx6345_poweron(anx6345);
|
||||
+ power_off = true;
|
||||
+ }
|
||||
+
|
||||
+ err = anx6345_get_downstream_info(anx6345);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to probe EDID from device tree: %d\n", err);
|
||||
+ DRM_ERROR("Failed to get downstream info: %d\n", err);
|
||||
+ goto unlock;
|
||||
+ }
|
||||
+
|
||||
+ anx6345->edid = drm_get_edid(connector, &anx6345->aux.ddc);
|
||||
+ if (!anx6345->edid)
|
||||
+ DRM_ERROR("Failed to read EDID from panel\n");
|
||||
+
|
||||
+ err = drm_connector_update_edid_property(connector,
|
||||
+ anx6345->edid);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to update EDID property: %d\n", err);
|
||||
+ goto unlock;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ err = drm_connector_update_edid_property(connector,
|
||||
+ anx6345->edid);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to update EDID property: %d\n", err);
|
||||
+ goto unlock;
|
||||
+ }
|
||||
+
|
||||
+ num_modes = drm_add_edid_modes(connector, anx6345->edid);
|
||||
+ num_modes += drm_add_edid_modes(connector, anx6345->edid);
|
||||
+
|
||||
+unlock:
|
||||
+ if (power_off)
|
||||
+ anx6345_poweroff(anx6345);
|
||||
+
|
||||
+ mutex_unlock(&anx6345->lock);
|
||||
+
|
||||
+ if (!num_modes && anx6345->panel)
|
||||
+ num_modes += drm_panel_get_modes(anx6345->panel);
|
||||
+
|
||||
+ return num_modes;
|
||||
+}
|
||||
+
|
||||
@ -628,16 +542,19 @@ index 000000000000..81676407aa6d
|
||||
+ .get_modes = anx6345_get_modes,
|
||||
+};
|
||||
+
|
||||
+static enum drm_connector_status anx6345_detect(struct drm_connector *connector,
|
||||
+ bool force)
|
||||
+static void
|
||||
+anx6345_connector_destroy(struct drm_connector *connector)
|
||||
+{
|
||||
+ return connector_status_connected;
|
||||
+ struct anx6345 *anx6345 = connector_to_anx6345(connector);
|
||||
+
|
||||
+ if (anx6345->panel)
|
||||
+ drm_panel_detach(anx6345->panel);
|
||||
+ drm_connector_cleanup(connector);
|
||||
+}
|
||||
+
|
||||
+static const struct drm_connector_funcs anx6345_connector_funcs = {
|
||||
+ .fill_modes = drm_helper_probe_single_connector_modes,
|
||||
+ .detect = anx6345_detect,
|
||||
+ .destroy = drm_connector_cleanup,
|
||||
+ .destroy = anx6345_connector_destroy,
|
||||
+ .reset = drm_atomic_helper_connector_reset,
|
||||
+ .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
|
||||
+ .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
|
||||
@ -690,21 +607,29 @@ index 000000000000..81676407aa6d
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ if (anx6345->panel) {
|
||||
+ err = drm_panel_attach(anx6345->panel, &anx6345->connector);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to attach panel: %d\n", err);
|
||||
+ return err;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static bool anx6345_bridge_mode_fixup(struct drm_bridge *bridge,
|
||||
+ const struct drm_display_mode *mode,
|
||||
+ struct drm_display_mode *adjusted_mode)
|
||||
+static enum drm_mode_status
|
||||
+anx6345_bridge_mode_valid(struct drm_bridge *bridge,
|
||||
+ const struct drm_display_mode *mode)
|
||||
+{
|
||||
+ if (mode->flags & DRM_MODE_FLAG_INTERLACE)
|
||||
+ return false;
|
||||
+ return MODE_NO_INTERLACE;
|
||||
+
|
||||
+ /* Max 1200p at 5.4 Ghz, one lane */
|
||||
+ if (mode->clock > 154000)
|
||||
+ return false;
|
||||
+ return MODE_CLOCK_HIGH;
|
||||
+
|
||||
+ return true;
|
||||
+ return MODE_OK;
|
||||
+}
|
||||
+
|
||||
+static void anx6345_bridge_disable(struct drm_bridge *bridge)
|
||||
@ -714,16 +639,11 @@ index 000000000000..81676407aa6d
|
||||
+ /* Power off all modules except configuration registers access */
|
||||
+ anx6345_set_bits(anx6345->map[I2C_IDX_TXCOM], SP_POWERDOWN_CTRL_REG,
|
||||
+ SP_HDCP_PD | SP_AUDIO_PD | SP_VIDEO_PD | SP_LINK_PD);
|
||||
+}
|
||||
+ if (anx6345->panel)
|
||||
+ drm_panel_disable(anx6345->panel);
|
||||
+
|
||||
+static void anx6345_bridge_mode_set(struct drm_bridge *bridge,
|
||||
+ const struct drm_display_mode *mode,
|
||||
+ const struct drm_display_mode *adjusted_mode)
|
||||
+{
|
||||
+ struct anx6345 *anx6345 = bridge_to_anx6345(bridge);
|
||||
+
|
||||
+ if (WARN_ON(!anx6345->powered))
|
||||
+ return;
|
||||
+ if (anx6345->powered)
|
||||
+ anx6345_poweroff(anx6345);
|
||||
+}
|
||||
+
|
||||
+static void anx6345_bridge_enable(struct drm_bridge *bridge)
|
||||
@ -731,6 +651,9 @@ index 000000000000..81676407aa6d
|
||||
+ struct anx6345 *anx6345 = bridge_to_anx6345(bridge);
|
||||
+ int err;
|
||||
+
|
||||
+ if (anx6345->panel)
|
||||
+ drm_panel_enable(anx6345->panel);
|
||||
+
|
||||
+ err = anx6345_start(anx6345);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to initialize: %d\n", err);
|
||||
@ -744,9 +667,8 @@ index 000000000000..81676407aa6d
|
||||
+
|
||||
+static const struct drm_bridge_funcs anx6345_bridge_funcs = {
|
||||
+ .attach = anx6345_bridge_attach,
|
||||
+ .mode_fixup = anx6345_bridge_mode_fixup,
|
||||
+ .mode_valid = anx6345_bridge_mode_valid,
|
||||
+ .disable = anx6345_bridge_disable,
|
||||
+ .mode_set = anx6345_bridge_mode_set,
|
||||
+ .enable = anx6345_bridge_enable,
|
||||
+};
|
||||
+
|
||||
@ -764,40 +686,90 @@ index 000000000000..81676407aa6d
|
||||
+ .reg_bits = 8,
|
||||
+ .val_bits = 8,
|
||||
+ .max_register = 0xff,
|
||||
+ .cache_type = REGCACHE_NONE,
|
||||
+};
|
||||
+
|
||||
+static const u16 anx6345_chipid_list[] = {
|
||||
+ 0x6345,
|
||||
+};
|
||||
+
|
||||
+static bool anx6345_get_chip_id(struct anx6345 *anx6345)
|
||||
+{
|
||||
+ unsigned int i, idl, idh, version;
|
||||
+
|
||||
+ if (regmap_read(anx6345->map[I2C_IDX_TXCOM], SP_DEVICE_IDL_REG, &idl))
|
||||
+ return false;
|
||||
+
|
||||
+ if (regmap_read(anx6345->map[I2C_IDX_TXCOM], SP_DEVICE_IDH_REG, &idh))
|
||||
+ return false;
|
||||
+
|
||||
+ anx6345->chipid = (u8)idl | ((u8)idh << 8);
|
||||
+
|
||||
+ if (regmap_read(anx6345->map[I2C_IDX_TXCOM], SP_DEVICE_VERSION_REG,
|
||||
+ &version))
|
||||
+ return false;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(anx6345_chipid_list); i++) {
|
||||
+ if (anx6345->chipid == anx6345_chipid_list[i]) {
|
||||
+ DRM_INFO("Found ANX%x (ver. %d) eDP Transmitter\n",
|
||||
+ anx6345->chipid, version);
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ DRM_ERROR("ANX%x (ver. %d) not supported by this driver\n",
|
||||
+ anx6345->chipid, version);
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+static int anx6345_i2c_probe(struct i2c_client *client,
|
||||
+ const struct i2c_device_id *id)
|
||||
+{
|
||||
+ struct anx6345 *anx6345;
|
||||
+ struct anx6345_platform_data *pdata;
|
||||
+ unsigned int i, idl, idh, version;
|
||||
+ bool found = false;
|
||||
+ int err;
|
||||
+ struct device *dev;
|
||||
+ int i, err;
|
||||
+
|
||||
+ anx6345 = devm_kzalloc(&client->dev, sizeof(*anx6345), GFP_KERNEL);
|
||||
+ if (!anx6345)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ pdata = &anx6345->pdata;
|
||||
+
|
||||
+ mutex_init(&anx6345->lock);
|
||||
+
|
||||
+#if IS_ENABLED(CONFIG_OF)
|
||||
+ anx6345->bridge.of_node = client->dev.of_node;
|
||||
+#endif
|
||||
+
|
||||
+ anx6345->client = client;
|
||||
+ i2c_set_clientdata(client, anx6345);
|
||||
+
|
||||
+ err = anx6345_init_pdata(anx6345);
|
||||
+ if (err) {
|
||||
+ DRM_ERROR("Failed to initialize pdata: %d\n", err);
|
||||
+ dev = &anx6345->client->dev;
|
||||
+
|
||||
+ err = drm_of_find_panel_or_bridge(client->dev.of_node, 1, 0,
|
||||
+ &anx6345->panel, NULL);
|
||||
+ if (err == -EPROBE_DEFER)
|
||||
+ return err;
|
||||
+
|
||||
+ if (err)
|
||||
+ DRM_DEBUG("No panel found\n");
|
||||
+
|
||||
+ /* 1.2V digital core power regulator */
|
||||
+ anx6345->dvdd12 = devm_regulator_get(dev, "dvdd12-supply");
|
||||
+ if (IS_ERR(anx6345->dvdd12)) {
|
||||
+ DRM_ERROR("dvdd12-supply not found\n");
|
||||
+ return PTR_ERR(anx6345->dvdd12);
|
||||
+ }
|
||||
+
|
||||
+ /* 2.5V digital core power regulator */
|
||||
+ anx6345->dvdd25 = devm_regulator_get(dev, "dvdd25-supply");
|
||||
+ if (IS_ERR(anx6345->dvdd25)) {
|
||||
+ DRM_ERROR("dvdd25-supply not found\n");
|
||||
+ return PTR_ERR(anx6345->dvdd25);
|
||||
+ }
|
||||
+
|
||||
+ /* GPIO for chip reset */
|
||||
+ anx6345->gpiod_reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
|
||||
+ if (IS_ERR(anx6345->gpiod_reset)) {
|
||||
+ DRM_ERROR("Reset gpio not found\n");
|
||||
+ return PTR_ERR(anx6345->gpiod_reset);
|
||||
+ }
|
||||
+
|
||||
+ /* Map slave addresses of ANX6345 */
|
||||
@ -827,49 +799,16 @@ index 000000000000..81676407aa6d
|
||||
+
|
||||
+ /* Look for supported chip ID */
|
||||
+ anx6345_poweron(anx6345);
|
||||
+ if (anx6345_get_chip_id(anx6345)) {
|
||||
+ anx6345->bridge.funcs = &anx6345_bridge_funcs;
|
||||
+ drm_bridge_add(&anx6345->bridge);
|
||||
+
|
||||
+ err = regmap_read(anx6345->map[I2C_IDX_TXCOM], SP_DEVICE_IDL_REG,
|
||||
+ &idl);
|
||||
+ if (err)
|
||||
+ goto err_poweroff;
|
||||
+
|
||||
+ err = regmap_read(anx6345->map[I2C_IDX_TXCOM], SP_DEVICE_IDH_REG,
|
||||
+ &idh);
|
||||
+ if (err)
|
||||
+ goto err_poweroff;
|
||||
+
|
||||
+ anx6345->chipid = (u8)idl | ((u8)idh << 8);
|
||||
+
|
||||
+ err = regmap_read(anx6345->map[I2C_IDX_TXCOM], SP_DEVICE_VERSION_REG,
|
||||
+ &version);
|
||||
+ if (err)
|
||||
+ goto err_poweroff;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(anx6345_chipid_list); i++) {
|
||||
+ if (anx6345->chipid == anx6345_chipid_list[i]) {
|
||||
+ DRM_INFO("Found ANX%x (ver. %d) eDP Transmitter\n",
|
||||
+ anx6345->chipid, version);
|
||||
+ found = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!found) {
|
||||
+ DRM_ERROR("ANX%x (ver. %d) not supported by this driver\n",
|
||||
+ anx6345->chipid, version);
|
||||
+ return 0;
|
||||
+ } else {
|
||||
+ anx6345_poweroff(anx6345);
|
||||
+ err = -ENODEV;
|
||||
+ goto err_poweroff;
|
||||
+ }
|
||||
+
|
||||
+ anx6345->bridge.funcs = &anx6345_bridge_funcs;
|
||||
+
|
||||
+ drm_bridge_add(&anx6345->bridge);
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err_poweroff:
|
||||
+ anx6345_poweroff(anx6345);
|
||||
+
|
||||
+err_unregister_i2c:
|
||||
+ unregister_i2c_dummy_clients(anx6345);
|
||||
+ return err;
|
||||
@ -885,6 +824,8 @@ index 000000000000..81676407aa6d
|
||||
+
|
||||
+ kfree(anx6345->edid);
|
||||
+
|
||||
+ mutex_destroy(&anx6345->lock);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
@ -894,13 +835,11 @@ index 000000000000..81676407aa6d
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(i2c, anx6345_id);
|
||||
+
|
||||
+#if IS_ENABLED(CONFIG_OF)
|
||||
+static const struct of_device_id anx6345_match_table[] = {
|
||||
+ { .compatible = "analogix,anx6345", },
|
||||
+ { /* sentinel */ },
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, anx6345_match_table);
|
||||
+#endif
|
||||
+
|
||||
+static struct i2c_driver anx6345_driver = {
|
||||
+ .driver = {
|
||||
@ -916,67 +855,6 @@ index 000000000000..81676407aa6d
|
||||
+MODULE_DESCRIPTION("ANX6345 eDP Transmitter driver");
|
||||
+MODULE_AUTHOR("Icenowy Zheng <icenowy@aosc.io>");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
index 9cb30962032e..53b0e73d6a24 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.c
|
||||
@@ -117,7 +117,7 @@ ssize_t anx_aux_transfer(struct regmap *map_dptx, struct drm_dp_aux_msg *msg)
|
||||
else /* For non-zero-sized set the length field. */
|
||||
ctrl1 |= (msg->size - 1) << SP_AUX_LENGTH_SHIFT;
|
||||
|
||||
- if ((msg->request & DP_AUX_I2C_READ) == 0) {
|
||||
+ if ((msg->size > 0) && ((msg->request & DP_AUX_I2C_READ) == 0)) {
|
||||
/* When WRITE | MOT write values to data buffer */
|
||||
err = regmap_bulk_write(map_dptx,
|
||||
SP_DP_BUF_DATA0_REG, buffer,
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
index c2ca854613a0..b29a0b3bc23c 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-dptx.h
|
||||
@@ -75,7 +75,11 @@
|
||||
#define SP_CHA_STA BIT(2)
|
||||
/* Bits for DP System Control Register 3 */
|
||||
#define SP_HPD_STATUS BIT(6)
|
||||
+#define SP_HPD_FORCE BIT(5)
|
||||
+#define SP_HPD_CTRL BIT(4)
|
||||
#define SP_STRM_VALID BIT(2)
|
||||
+#define SP_STRM_FORCE BIT(1)
|
||||
+#define SP_STRM_CTRL BIT(0)
|
||||
/* Bits for DP System Control Register 4 */
|
||||
#define SP_ENHANCED_MODE BIT(3)
|
||||
|
||||
@@ -120,6 +124,9 @@
|
||||
#define SP_LINK_BW_SET_MASK 0x1f
|
||||
#define SP_INITIAL_SLIM_M_AUD_SEL BIT(5)
|
||||
|
||||
+/* DP Lane Count Setting Register */
|
||||
+#define SP_DP_LANE_COUNT_SET_REG 0xa1
|
||||
+
|
||||
/* DP Training Pattern Set Register */
|
||||
#define SP_DP_TRAINING_PATTERN_SET_REG 0xa2
|
||||
|
||||
@@ -133,6 +140,7 @@
|
||||
|
||||
/* DP Link Training Control Register */
|
||||
#define SP_DP_LT_CTRL_REG 0xa8
|
||||
+#define SP_DP_LT_INPROGRESS 0x80
|
||||
#define SP_LT_ERROR_TYPE_MASK 0x70
|
||||
# define SP_LT_NO_ERROR 0x00
|
||||
# define SP_LT_AUX_WRITE_ERROR 0x01
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
index 7d683573e970..480c98a225b1 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-i2c-txcommon.h
|
||||
@@ -183,6 +183,9 @@
|
||||
#define SP_VBIT BIT(1)
|
||||
#define SP_AUDIO_LAYOUT BIT(0)
|
||||
|
||||
+/* Analog Debug Register 1 */
|
||||
+#define SP_ANALOG_DEBUG1_REG 0xdc
|
||||
+
|
||||
/* Analog Debug Register 2 */
|
||||
#define SP_ANALOG_DEBUG2_REG 0xdd
|
||||
#define SP_FORCE_SW_OFF_BYPASS 0x20
|
||||
--
|
||||
2.17.1
|
||||
cgit 1.2-0.3.lf.el7
|
||||
|
||||
@ -0,0 +1,208 @@
|
||||
The anx6345 is an ultra-low power DisplayPort/eDP transmitter designed
|
||||
for portable devices.
|
||||
|
||||
Add a binding document for it.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Reviewed-by: Rob Herring <robh@kernel.org>
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
---
|
||||
.../bindings/display/bridge/anx6345.yaml | 102 ++++++++++++++++++++++
|
||||
1 file changed, 102 insertions(+)
|
||||
create mode 100644 Documentation/devicetree/bindings/display/bridge/anx6345.yaml
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/display/bridge/anx6345.yaml b/Documentation/devicetree/bindings/display/bridge/anx6345.yaml
|
||||
new file mode 100644
|
||||
index 000000000000..094e8e8a5faa
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/display/bridge/anx6345.yaml
|
||||
@@ -0,0 +1,102 @@
|
||||
+# SPDX-License-Identifier: GPL-2.0
|
||||
+%YAML 1.2
|
||||
+---
|
||||
+$id: http://devicetree.org/schemas/display/bridge/anx6345.yaml#
|
||||
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
+
|
||||
+title: Analogix ANX6345 eDP Transmitter Device Tree Bindings
|
||||
+
|
||||
+maintainers:
|
||||
+ - Torsten Duwe <duwe@lst.de>
|
||||
+
|
||||
+description: |
|
||||
+ The ANX6345 is an ultra-low power Full-HD eDP transmitter designed for
|
||||
+ portable devices.
|
||||
+
|
||||
+properties:
|
||||
+ compatible:
|
||||
+ const: analogix,anx6345
|
||||
+
|
||||
+ reg:
|
||||
+ maxItems: 1
|
||||
+ description: base I2C address of the device
|
||||
+
|
||||
+ reset-gpios:
|
||||
+ maxItems: 1
|
||||
+ description: GPIO connected to active low reset
|
||||
+
|
||||
+ dvdd12-supply:
|
||||
+ maxItems: 1
|
||||
+ description: Regulator for 1.2V digital core power.
|
||||
+
|
||||
+ dvdd25-supply:
|
||||
+ maxItems: 1
|
||||
+ description: Regulator for 2.5V digital core power.
|
||||
+
|
||||
+ ports:
|
||||
+ type: object
|
||||
+
|
||||
+ properties:
|
||||
+ port@0:
|
||||
+ type: object
|
||||
+ description: |
|
||||
+ Video port for LVTTL input
|
||||
+
|
||||
+ port@1:
|
||||
+ type: object
|
||||
+ description: |
|
||||
+ Video port for eDP output (panel or connector).
|
||||
+ May be omitted if EDID works reliably.
|
||||
+
|
||||
+ required:
|
||||
+ - port@0
|
||||
+
|
||||
+required:
|
||||
+ - compatible
|
||||
+ - reg
|
||||
+ - reset-gpios
|
||||
+ - dvdd12-supply
|
||||
+ - dvdd25-supply
|
||||
+ - ports
|
||||
+
|
||||
+additionalProperties: false
|
||||
+
|
||||
+examples:
|
||||
+ - |
|
||||
+ i2c0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ anx6345: anx6345@38 {
|
||||
+ compatible = "analogix,anx6345";
|
||||
+ reg = <0x38>;
|
||||
+ reset-gpios = <&pio42 1 /* GPIO_ACTIVE_LOW */>;
|
||||
+ dvdd25-supply = <®_dldo2>;
|
||||
+ dvdd12-supply = <®_fldo1>;
|
||||
+
|
||||
+ ports {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ anx6345_in: port@0 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <0>;
|
||||
+ anx6345_in_tcon0: endpoint@0 {
|
||||
+ reg = <0>;
|
||||
+ remote-endpoint = <&tcon0_out_anx6345>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ anx6345_out: port@1 {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ reg = <1>;
|
||||
+ anx6345_out_panel: endpoint@0 {
|
||||
+ reg = <0>;
|
||||
+ remote-endpoint = <&panel_in_edp>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
|
||||
|
||||
Teres-I has an anx6345 bridge connected to the RGB666 LCD output, and
|
||||
the I2C controlling signals are connected to I2C0 bus.
|
||||
|
||||
Enable it in the device tree, and enable the display engine, video mixer
|
||||
and tcon0 as well.
|
||||
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
Signed-off-by: Torsten Duwe <duwe@suse.de>
|
||||
---
|
||||
.../boot/dts/allwinner/sun50i-a64-teres-i.dts | 45 ++++++++++++++++++++--
|
||||
1 file changed, 41 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
|
||||
index 1069e7012c9c..970415106dcf 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
|
||||
@@ -100,18 +100,41 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&de {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&ehci1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
-/* The ANX6345 eDP-bridge is on i2c0. There is no linux (mainline)
|
||||
- * driver for this chip at the moment, the bootloader initializes it.
|
||||
- * However it can be accessed with the i2c-dev driver from user space.
|
||||
- */
|
||||
&i2c0 {
|
||||
clock-frequency = <100000>;
|
||||
status = "okay";
|
||||
+
|
||||
+ anx6345: anx6345@38 {
|
||||
+ compatible = "analogix,anx6345";
|
||||
+ reg = <0x38>;
|
||||
+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
|
||||
+ dvdd25-supply = <®_dldo2>;
|
||||
+ dvdd12-supply = <®_dldo3>;
|
||||
+
|
||||
+ ports {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ port@0 {
|
||||
+ anx6345_in: endpoint {
|
||||
+ remote-endpoint = <&tcon0_out_anx6345>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mixer0 {
|
||||
+ status = "okay";
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
@@ -319,6 +342,20 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&tcon0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&lcd_rgb666_pins>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tcon0_out {
|
||||
+ tcon0_out_anx6345: endpoint@0 {
|
||||
+ reg = <0>;
|
||||
+ remote-endpoint = <&anx6345_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_pb_pins>;
|
||||
@ -0,0 +1,40 @@
|
||||
From 8df6da42f1244573edd3d22d39dbe8fc66a01cbd Mon Sep 17 00:00:00 2001
|
||||
From: Icenowy Zheng <icenowy@aosc.io>
|
||||
Date: Wed, 12 Feb 2020 00:01:29 +0800
|
||||
Subject: [PATCH] drm/bridge: analogix-anx6345: fix acquisition of the
|
||||
regulators
|
||||
|
||||
When calling regulator_get(), the regulator name should not contain
|
||||
"-supply" (it will be attached to the regulator name to construct the DT
|
||||
property name by regulator framework). However, the driver currently
|
||||
passed bogus "-supply", which breaks the support to its DT binding.
|
||||
|
||||
Fix this by remove the bogus "-supply" in regulator names.
|
||||
|
||||
Fixes: 6aa192698089 ("drm/bridge: Add Analogix anx6345 support")
|
||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
||||
---
|
||||
drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
|
||||
index 56f55c53abfd8..0d8d083b02074 100644
|
||||
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
|
||||
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
|
||||
@@ -712,14 +712,14 @@ static int anx6345_i2c_probe(struct i2c_client *client,
|
||||
DRM_DEBUG("No panel found\n");
|
||||
|
||||
/* 1.2V digital core power regulator */
|
||||
- anx6345->dvdd12 = devm_regulator_get(dev, "dvdd12-supply");
|
||||
+ anx6345->dvdd12 = devm_regulator_get(dev, "dvdd12");
|
||||
if (IS_ERR(anx6345->dvdd12)) {
|
||||
DRM_ERROR("dvdd12-supply not found\n");
|
||||
return PTR_ERR(anx6345->dvdd12);
|
||||
}
|
||||
|
||||
/* 2.5V digital core power regulator */
|
||||
- anx6345->dvdd25 = devm_regulator_get(dev, "dvdd25-supply");
|
||||
+ anx6345->dvdd25 = devm_regulator_get(dev, "dvdd25");
|
||||
if (IS_ERR(anx6345->dvdd25)) {
|
||||
DRM_ERROR("dvdd25-supply not found\n");
|
||||
return PTR_ERR(anx6345->dvdd25);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user