Merge a45ad71e89
("Merge tag 'rproc-v5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc") into android-mainline
Another "small" merge point to handle conflicts in a sane way. Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I5dc2f5f11275b29f3c9b5b8d4dd59864ceb6faf9
This commit is contained in:
3
.mailmap
3
.mailmap
@@ -18,6 +18,7 @@ Aleksey Gorelov <aleksey_gorelov@phoenix.com>
|
||||
Aleksandar Markovic <aleksandar.markovic@mips.com> <aleksandar.markovic@imgtec.com>
|
||||
Alex Shi <alex.shi@linux.alibaba.com> <alex.shi@intel.com>
|
||||
Alex Shi <alex.shi@linux.alibaba.com> <alex.shi@linaro.org>
|
||||
Alexandre Belloni <alexandre.belloni@bootlin.com> <alexandre.belloni@free-electrons.com>
|
||||
Alexei Starovoitov <ast@kernel.org> <ast@plumgrid.com>
|
||||
Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com>
|
||||
Alexei Starovoitov <ast@kernel.org> <ast@fb.com>
|
||||
@@ -27,6 +28,8 @@ Andi Shyti <andi@etezian.org> <andi.shyti@samsung.com>
|
||||
Andreas Herrmann <aherrman@de.ibm.com>
|
||||
Andrey Ryabinin <ryabinin.a.a@gmail.com> <a.ryabinin@samsung.com>
|
||||
Andrew Morton <akpm@linux-foundation.org>
|
||||
Andrew Murray <amurray@thegoodpenguin.co.uk> <andrew.murray@arm.com>
|
||||
Andrew Murray <amurray@thegoodpenguin.co.uk> <amurray@embedded-bits.co.uk>
|
||||
Andrew Vasquez <andrew.vasquez@qlogic.com>
|
||||
Andy Adamson <andros@citi.umich.edu>
|
||||
Antoine Tenart <antoine.tenart@free-electrons.com>
|
||||
|
@@ -33,6 +33,14 @@ Description:
|
||||
Requires a separate RTC_PIE_ON call to enable the periodic
|
||||
interrupts.
|
||||
|
||||
* RTC_VL_READ: Read the voltage inputs status of the RTC when
|
||||
supported. The value is a bit field of RTC_VL_*, giving the
|
||||
status of the main and backup voltages.
|
||||
|
||||
* RTC_VL_CLEAR: Clear the voltage status of the RTC. Some RTCs
|
||||
need user interaction when the backup power provider is
|
||||
replaced or charged to be able to clear the status.
|
||||
|
||||
The ioctl() calls supported by the older /dev/rtc interface are
|
||||
also supported by the newer RTC class framework. However,
|
||||
because the chips and systems are not standardized, some PC/AT
|
||||
|
@@ -1,37 +1,40 @@
|
||||
What: /sys/fs/f2fs/<disk>/gc_max_sleep_time
|
||||
Date: July 2013
|
||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||
Description:
|
||||
Controls the maximun sleep time for gc_thread. Time
|
||||
Description: Controls the maximum sleep time for gc_thread. Time
|
||||
is in milliseconds.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_min_sleep_time
|
||||
Date: July 2013
|
||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||
Description:
|
||||
Controls the minimum sleep time for gc_thread. Time
|
||||
Description: Controls the minimum sleep time for gc_thread. Time
|
||||
is in milliseconds.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_no_gc_sleep_time
|
||||
Date: July 2013
|
||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||
Description:
|
||||
Controls the default sleep time for gc_thread. Time
|
||||
Description: Controls the default sleep time for gc_thread. Time
|
||||
is in milliseconds.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_idle
|
||||
Date: July 2013
|
||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||
Description:
|
||||
Controls the victim selection policy for garbage collection.
|
||||
Description: Controls the victim selection policy for garbage collection.
|
||||
Setting gc_idle = 0(default) will disable this option. Setting
|
||||
gc_idle = 1 will select the Cost Benefit approach & setting
|
||||
gc_idle = 2 will select the greedy approach.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/reclaim_segments
|
||||
Date: October 2013
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
Description:
|
||||
Controls the issue rate of segment discard commands.
|
||||
Description: This parameter controls the number of prefree segments to be
|
||||
reclaimed. If the number of prefree segments is larger than
|
||||
the number of segments in the proportion to the percentage
|
||||
over total volume size, f2fs tries to conduct checkpoint to
|
||||
reclaim the prefree segments to free segments.
|
||||
By default, 5% over total # of segments.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/max_blkaddr
|
||||
What: /sys/fs/f2fs/<disk>/main_blkaddr
|
||||
Date: November 2019
|
||||
Contact: "Ramon Pantin" <pantin@google.com>
|
||||
Description:
|
||||
@@ -40,76 +43,76 @@ Description:
|
||||
What: /sys/fs/f2fs/<disk>/ipu_policy
|
||||
Date: November 2013
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
Description:
|
||||
Controls the in-place-update policy.
|
||||
Description: Controls the in-place-update policy.
|
||||
updates in f2fs. User can set:
|
||||
0x01: F2FS_IPU_FORCE, 0x02: F2FS_IPU_SSR,
|
||||
0x04: F2FS_IPU_UTIL, 0x08: F2FS_IPU_SSR_UTIL,
|
||||
0x10: F2FS_IPU_FSYNC, 0x20: F2FS_IPU_ASYNC,
|
||||
0x40: F2FS_IPU_NOCACHE.
|
||||
Refer segment.h for details.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/min_ipu_util
|
||||
Date: November 2013
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
Description:
|
||||
Controls the FS utilization condition for the in-place-update
|
||||
policies.
|
||||
Description: Controls the FS utilization condition for the in-place-update
|
||||
policies. It is used by F2FS_IPU_UTIL and F2FS_IPU_SSR_UTIL policies.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/min_fsync_blocks
|
||||
Date: September 2014
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Controls the dirty page count condition for the in-place-update
|
||||
Description: Controls the dirty page count condition for the in-place-update
|
||||
policies.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/min_seq_blocks
|
||||
Date: August 2018
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Controls the dirty page count condition for batched sequential
|
||||
writes in ->writepages.
|
||||
|
||||
Description: Controls the dirty page count condition for batched sequential
|
||||
writes in writepages.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/min_hot_blocks
|
||||
Date: March 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Controls the dirty page count condition for redefining hot data.
|
||||
Description: Controls the dirty page count condition for redefining hot data.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/min_ssr_sections
|
||||
Date: October 2017
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description:
|
||||
Controls the fee section threshold to trigger SSR allocation.
|
||||
Description: Controls the free section threshold to trigger SSR allocation.
|
||||
If this is large, SSR mode will be enabled early.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/max_small_discards
|
||||
Date: November 2013
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
Description:
|
||||
Controls the issue rate of small discard commands.
|
||||
Description: Controls the issue rate of discard commands that consist of small
|
||||
blocks less than 2MB. The candidates to be discarded are cached until
|
||||
checkpoint is triggered, and issued during the checkpoint.
|
||||
By default, it is disabled with 0.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/discard_granularity
|
||||
Date: July 2017
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description:
|
||||
Controls discard granularity of inner discard thread, inner thread
|
||||
Description: Controls discard granularity of inner discard thread. Inner thread
|
||||
will not issue discards with size that is smaller than granularity.
|
||||
The unit size is one block, now only support configuring in range
|
||||
of [1, 512].
|
||||
The unit size is one block(4KB), now only support configuring
|
||||
in range of [1, 512]. Default value is 4(=16KB).
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/umount_discard_timeout
|
||||
Date: January 2019
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Set timeout to issue discard commands during umount.
|
||||
Description: Set timeout to issue discard commands during umount.
|
||||
Default: 5 secs
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/max_victim_search
|
||||
Date: January 2014
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
Description:
|
||||
Controls the number of trials to find a victim segment.
|
||||
Description: Controls the number of trials to find a victim segment
|
||||
when conducting SSR and cleaning operations. The default value
|
||||
is 4096 which covers 8GB block address range.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/migration_granularity
|
||||
Date: October 2018
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description:
|
||||
Controls migration granularity of garbage collection on large
|
||||
Description: Controls migration granularity of garbage collection on large
|
||||
section, it can let GC move partial segment{s} of one section
|
||||
in one GC cycle, so that dispersing heavy overhead GC to
|
||||
multiple lightweight one.
|
||||
@@ -117,106 +120,106 @@ Description:
|
||||
What: /sys/fs/f2fs/<disk>/dir_level
|
||||
Date: March 2014
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
Description:
|
||||
Controls the directory level for large directory.
|
||||
Description: Controls the directory level for large directory. If a
|
||||
directory has a number of files, it can reduce the file lookup
|
||||
latency by increasing this dir_level value. Otherwise, it
|
||||
needs to decrease this value to reduce the space overhead.
|
||||
The default value is 0.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/ram_thresh
|
||||
Date: March 2014
|
||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||
Description:
|
||||
Controls the memory footprint used by f2fs.
|
||||
Description: Controls the memory footprint used by free nids and cached
|
||||
nat entries. By default, 1 is set, which indicates
|
||||
10 MB / 1 GB RAM.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/batched_trim_sections
|
||||
Date: February 2015
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Controls the trimming rate in batch mode.
|
||||
Description: Controls the trimming rate in batch mode.
|
||||
<deprecated>
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/cp_interval
|
||||
Date: October 2015
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Controls the checkpoint timing.
|
||||
Description: Controls the checkpoint timing, set to 60 seconds by default.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/idle_interval
|
||||
Date: January 2016
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Controls the idle timing for all paths other than
|
||||
discard and gc path.
|
||||
Description: Controls the idle timing of system, if there is no FS operation
|
||||
during given interval.
|
||||
Set to 5 seconds by default.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/discard_idle_interval
|
||||
Date: September 2018
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Contact: "Sahitya Tummala" <stummala@codeaurora.org>
|
||||
Description:
|
||||
Controls the idle timing for discard path.
|
||||
Description: Controls the idle timing of discard thread given
|
||||
this time interval.
|
||||
Default is 5 secs.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_idle_interval
|
||||
Date: September 2018
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Contact: "Sahitya Tummala" <stummala@codeaurora.org>
|
||||
Description:
|
||||
Controls the idle timing for gc path.
|
||||
Description: Controls the idle timing for gc path. Set to 5 seconds by default.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/iostat_enable
|
||||
Date: August 2017
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description:
|
||||
Controls to enable/disable IO stat.
|
||||
Description: Controls to enable/disable IO stat.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/ra_nid_pages
|
||||
Date: October 2015
|
||||
Contact: "Chao Yu" <chao2.yu@samsung.com>
|
||||
Description:
|
||||
Controls the count of nid pages to be readaheaded.
|
||||
Description: Controls the count of nid pages to be readaheaded.
|
||||
When building free nids, F2FS reads NAT blocks ahead for
|
||||
speed up. Default is 0.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/dirty_nats_ratio
|
||||
Date: January 2016
|
||||
Contact: "Chao Yu" <chao2.yu@samsung.com>
|
||||
Description:
|
||||
Controls dirty nat entries ratio threshold, if current
|
||||
Description: Controls dirty nat entries ratio threshold, if current
|
||||
ratio exceeds configured threshold, checkpoint will
|
||||
be triggered for flushing dirty nat entries.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/lifetime_write_kbytes
|
||||
Date: January 2016
|
||||
Contact: "Shuoran Liu" <liushuoran@huawei.com>
|
||||
Description:
|
||||
Shows total written kbytes issued to disk.
|
||||
Description: Shows total written kbytes issued to disk.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/features
|
||||
Date: July 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Shows all enabled features in current device.
|
||||
Description: Shows all enabled features in current device.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/inject_rate
|
||||
Date: May 2016
|
||||
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
||||
Description:
|
||||
Controls the injection rate.
|
||||
Description: Controls the injection rate of arbitrary faults.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/inject_type
|
||||
Date: May 2016
|
||||
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
||||
Description:
|
||||
Controls the injection type.
|
||||
Description: Controls the injection type of arbitrary faults.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/dirty_segments
|
||||
Date: October 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description: Shows the number of dirty segments.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/reserved_blocks
|
||||
Date: June 2017
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description:
|
||||
Controls target reserved blocks in system, the threshold
|
||||
Description: Controls target reserved blocks in system, the threshold
|
||||
is soft, it could exceed current available user space.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/current_reserved_blocks
|
||||
Date: October 2017
|
||||
Contact: "Yunlong Song" <yunlong.song@huawei.com>
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description:
|
||||
Shows current reserved blocks in system, it may be temporarily
|
||||
Description: Shows current reserved blocks in system, it may be temporarily
|
||||
smaller than target_reserved_blocks, but will gradually
|
||||
increase to target_reserved_blocks when more free blocks are
|
||||
freed by user later.
|
||||
@@ -224,26 +227,31 @@ Description:
|
||||
What: /sys/fs/f2fs/<disk>/gc_urgent
|
||||
Date: August 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Do background GC agressively
|
||||
Description: Do background GC agressively when set. When gc_urgent = 1,
|
||||
background thread starts to do GC by given gc_urgent_sleep_time
|
||||
interval. It is set to 0 by default.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
|
||||
Date: August 2017
|
||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||
Description:
|
||||
Controls sleep time of GC urgent mode
|
||||
Description: Controls sleep time of GC urgent mode. Set to 500ms by default.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/readdir_ra
|
||||
Date: November 2017
|
||||
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
||||
Description:
|
||||
Controls readahead inode block in readdir.
|
||||
Description: Controls readahead inode block in readdir. Enabled by default.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_pin_file_thresh
|
||||
Date: January 2018
|
||||
Contact: Jaegeuk Kim <jaegeuk@kernel.org>
|
||||
Description: This indicates how many GC can be failed for the pinned
|
||||
file. If it exceeds this, F2FS doesn't guarantee its pinning
|
||||
state. 2048 trials is set by default.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/extension_list
|
||||
Date: Feburary 2018
|
||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||
Description:
|
||||
Used to control configure extension list:
|
||||
Description: Used to control configure extension list:
|
||||
- Query: cat /sys/fs/f2fs/<disk>/extension_list
|
||||
- Add: echo '[h/c]extension' > /sys/fs/f2fs/<disk>/extension_list
|
||||
- Del: echo '[h/c]!extension' > /sys/fs/f2fs/<disk>/extension_list
|
||||
@@ -253,14 +261,60 @@ Description:
|
||||
What: /sys/fs/f2fs/<disk>/unusable
|
||||
Date April 2019
|
||||
Contact: "Daniel Rosenberg" <drosen@google.com>
|
||||
Description:
|
||||
If checkpoint=disable, it displays the number of blocks that are unusable.
|
||||
If checkpoint=enable it displays the enumber of blocks that would be unusable
|
||||
if checkpoint=disable were to be set.
|
||||
Description: If checkpoint=disable, it displays the number of blocks that
|
||||
are unusable.
|
||||
If checkpoint=enable it displays the enumber of blocks that
|
||||
would be unusable if checkpoint=disable were to be set.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/encoding
|
||||
Date July 2019
|
||||
Contact: "Daniel Rosenberg" <drosen@google.com>
|
||||
Description:
|
||||
Displays name and version of the encoding set for the filesystem.
|
||||
Description: Displays name and version of the encoding set for the filesystem.
|
||||
If no encoding is set, displays (none)
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/free_segments
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Number of free segments in disk.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/cp_foreground_calls
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Number of checkpoint operations performed on demand. Available when
|
||||
CONFIG_F2FS_STAT_FS=y.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/cp_background_calls
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Number of checkpoint operations performed in the background to
|
||||
free segments. Available when CONFIG_F2FS_STAT_FS=y.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_foreground_calls
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Number of garbage collection operations performed on demand.
|
||||
Available when CONFIG_F2FS_STAT_FS=y.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/gc_background_calls
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Number of garbage collection operations triggered in background.
|
||||
Available when CONFIG_F2FS_STAT_FS=y.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/moved_blocks_foreground
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Number of blocks moved by garbage collection in foreground.
|
||||
Available when CONFIG_F2FS_STAT_FS=y.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/moved_blocks_background
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Number of blocks moved by garbage collection in background.
|
||||
Available when CONFIG_F2FS_STAT_FS=y.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/avg_vblocks
|
||||
Date: September 2019
|
||||
Contact: "Hridya Valsaraju" <hridya@google.com>
|
||||
Description: Average number of valid blocks.
|
||||
Available when CONFIG_F2FS_STAT_FS=y.
|
||||
|
@@ -283,5 +283,5 @@ or disabled (0). If 0 is found in any of the msi_bus files belonging
|
||||
to bridges between the PCI root and the device, MSIs are disabled.
|
||||
|
||||
It is also worth checking the device driver to see whether it supports MSIs.
|
||||
For example, it may contain calls to pci_irq_alloc_vectors() with the
|
||||
For example, it may contain calls to pci_alloc_irq_vectors() with the
|
||||
PCI_IRQ_MSI or PCI_IRQ_MSIX flags.
|
||||
|
@@ -834,6 +834,18 @@
|
||||
dump out devices still on the deferred probe list after
|
||||
retrying.
|
||||
|
||||
dfltcc= [HW,S390]
|
||||
Format: { on | off | def_only | inf_only | always }
|
||||
on: s390 zlib hardware support for compression on
|
||||
level 1 and decompression (default)
|
||||
off: No s390 zlib hardware support
|
||||
def_only: s390 zlib hardware support for deflate
|
||||
only (compression on level 1)
|
||||
inf_only: s390 zlib hardware support for inflate
|
||||
only (decompression)
|
||||
always: Same as 'on' but ignores the selected compression
|
||||
level always using hardware support (used for debugging)
|
||||
|
||||
dhash_entries= [KNL]
|
||||
Set number of hash buckets for dentry cache.
|
||||
|
||||
|
@@ -31,6 +31,7 @@ Core utilities
|
||||
generic-radix-tree
|
||||
memory-allocation
|
||||
mm-api
|
||||
pin_user_pages
|
||||
gfp_mask-from-fs-io
|
||||
timekeeping
|
||||
boot-time-mm
|
||||
|
232
Documentation/core-api/pin_user_pages.rst
Normal file
232
Documentation/core-api/pin_user_pages.rst
Normal file
@@ -0,0 +1,232 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
====================================================
|
||||
pin_user_pages() and related calls
|
||||
====================================================
|
||||
|
||||
.. contents:: :local:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
This document describes the following functions::
|
||||
|
||||
pin_user_pages()
|
||||
pin_user_pages_fast()
|
||||
pin_user_pages_remote()
|
||||
|
||||
Basic description of FOLL_PIN
|
||||
=============================
|
||||
|
||||
FOLL_PIN and FOLL_LONGTERM are flags that can be passed to the get_user_pages*()
|
||||
("gup") family of functions. FOLL_PIN has significant interactions and
|
||||
interdependencies with FOLL_LONGTERM, so both are covered here.
|
||||
|
||||
FOLL_PIN is internal to gup, meaning that it should not appear at the gup call
|
||||
sites. This allows the associated wrapper functions (pin_user_pages*() and
|
||||
others) to set the correct combination of these flags, and to check for problems
|
||||
as well.
|
||||
|
||||
FOLL_LONGTERM, on the other hand, *is* allowed to be set at the gup call sites.
|
||||
This is in order to avoid creating a large number of wrapper functions to cover
|
||||
all combinations of get*(), pin*(), FOLL_LONGTERM, and more. Also, the
|
||||
pin_user_pages*() APIs are clearly distinct from the get_user_pages*() APIs, so
|
||||
that's a natural dividing line, and a good point to make separate wrapper calls.
|
||||
In other words, use pin_user_pages*() for DMA-pinned pages, and
|
||||
get_user_pages*() for other cases. There are four cases described later on in
|
||||
this document, to further clarify that concept.
|
||||
|
||||
FOLL_PIN and FOLL_GET are mutually exclusive for a given gup call. However,
|
||||
multiple threads and call sites are free to pin the same struct pages, via both
|
||||
FOLL_PIN and FOLL_GET. It's just the call site that needs to choose one or the
|
||||
other, not the struct page(s).
|
||||
|
||||
The FOLL_PIN implementation is nearly the same as FOLL_GET, except that FOLL_PIN
|
||||
uses a different reference counting technique.
|
||||
|
||||
FOLL_PIN is a prerequisite to FOLL_LONGTERM. Another way of saying that is,
|
||||
FOLL_LONGTERM is a specific case, more restrictive case of FOLL_PIN.
|
||||
|
||||
Which flags are set by each wrapper
|
||||
===================================
|
||||
|
||||
For these pin_user_pages*() functions, FOLL_PIN is OR'd in with whatever gup
|
||||
flags the caller provides. The caller is required to pass in a non-null struct
|
||||
pages* array, and the function then pin pages by incrementing each by a special
|
||||
value. For now, that value is +1, just like get_user_pages*().::
|
||||
|
||||
Function
|
||||
--------
|
||||
pin_user_pages FOLL_PIN is always set internally by this function.
|
||||
pin_user_pages_fast FOLL_PIN is always set internally by this function.
|
||||
pin_user_pages_remote FOLL_PIN is always set internally by this function.
|
||||
|
||||
For these get_user_pages*() functions, FOLL_GET might not even be specified.
|
||||
Behavior is a little more complex than above. If FOLL_GET was *not* specified,
|
||||
but the caller passed in a non-null struct pages* array, then the function
|
||||
sets FOLL_GET for you, and proceeds to pin pages by incrementing the refcount
|
||||
of each page by +1.::
|
||||
|
||||
Function
|
||||
--------
|
||||
get_user_pages FOLL_GET is sometimes set internally by this function.
|
||||
get_user_pages_fast FOLL_GET is sometimes set internally by this function.
|
||||
get_user_pages_remote FOLL_GET is sometimes set internally by this function.
|
||||
|
||||
Tracking dma-pinned pages
|
||||
=========================
|
||||
|
||||
Some of the key design constraints, and solutions, for tracking dma-pinned
|
||||
pages:
|
||||
|
||||
* An actual reference count, per struct page, is required. This is because
|
||||
multiple processes may pin and unpin a page.
|
||||
|
||||
* False positives (reporting that a page is dma-pinned, when in fact it is not)
|
||||
are acceptable, but false negatives are not.
|
||||
|
||||
* struct page may not be increased in size for this, and all fields are already
|
||||
used.
|
||||
|
||||
* Given the above, we can overload the page->_refcount field by using, sort of,
|
||||
the upper bits in that field for a dma-pinned count. "Sort of", means that,
|
||||
rather than dividing page->_refcount into bit fields, we simple add a medium-
|
||||
large value (GUP_PIN_COUNTING_BIAS, initially chosen to be 1024: 10 bits) to
|
||||
page->_refcount. This provides fuzzy behavior: if a page has get_page() called
|
||||
on it 1024 times, then it will appear to have a single dma-pinned count.
|
||||
And again, that's acceptable.
|
||||
|
||||
This also leads to limitations: there are only 31-10==21 bits available for a
|
||||
counter that increments 10 bits at a time.
|
||||
|
||||
TODO: for 1GB and larger huge pages, this is cutting it close. That's because
|
||||
when pin_user_pages() follows such pages, it increments the head page by "1"
|
||||
(where "1" used to mean "+1" for get_user_pages(), but now means "+1024" for
|
||||
pin_user_pages()) for each tail page. So if you have a 1GB huge page:
|
||||
|
||||
* There are 256K (18 bits) worth of 4 KB tail pages.
|
||||
* There are 21 bits available to count up via GUP_PIN_COUNTING_BIAS (that is,
|
||||
10 bits at a time)
|
||||
* There are 21 - 18 == 3 bits available to count. Except that there aren't,
|
||||
because you need to allow for a few normal get_page() calls on the head page,
|
||||
as well. Fortunately, the approach of using addition, rather than "hard"
|
||||
bitfields, within page->_refcount, allows for sharing these bits gracefully.
|
||||
But we're still looking at about 8 references.
|
||||
|
||||
This, however, is a missing feature more than anything else, because it's easily
|
||||
solved by addressing an obvious inefficiency in the original get_user_pages()
|
||||
approach of retrieving pages: stop treating all the pages as if they were
|
||||
PAGE_SIZE. Retrieve huge pages as huge pages. The callers need to be aware of
|
||||
this, so some work is required. Once that's in place, this limitation mostly
|
||||
disappears from view, because there will be ample refcounting range available.
|
||||
|
||||
* Callers must specifically request "dma-pinned tracking of pages". In other
|
||||
words, just calling get_user_pages() will not suffice; a new set of functions,
|
||||
pin_user_page() and related, must be used.
|
||||
|
||||
FOLL_PIN, FOLL_GET, FOLL_LONGTERM: when to use which flags
|
||||
==========================================================
|
||||
|
||||
Thanks to Jan Kara, Vlastimil Babka and several other -mm people, for describing
|
||||
these categories:
|
||||
|
||||
CASE 1: Direct IO (DIO)
|
||||
-----------------------
|
||||
There are GUP references to pages that are serving
|
||||
as DIO buffers. These buffers are needed for a relatively short time (so they
|
||||
are not "long term"). No special synchronization with page_mkclean() or
|
||||
munmap() is provided. Therefore, flags to set at the call site are: ::
|
||||
|
||||
FOLL_PIN
|
||||
|
||||
...but rather than setting FOLL_PIN directly, call sites should use one of
|
||||
the pin_user_pages*() routines that set FOLL_PIN.
|
||||
|
||||
CASE 2: RDMA
|
||||
------------
|
||||
There are GUP references to pages that are serving as DMA
|
||||
buffers. These buffers are needed for a long time ("long term"). No special
|
||||
synchronization with page_mkclean() or munmap() is provided. Therefore, flags
|
||||
to set at the call site are: ::
|
||||
|
||||
FOLL_PIN | FOLL_LONGTERM
|
||||
|
||||
NOTE: Some pages, such as DAX pages, cannot be pinned with longterm pins. That's
|
||||
because DAX pages do not have a separate page cache, and so "pinning" implies
|
||||
locking down file system blocks, which is not (yet) supported in that way.
|
||||
|
||||
CASE 3: Hardware with page faulting support
|
||||
-------------------------------------------
|
||||
Here, a well-written driver doesn't normally need to pin pages at all. However,
|
||||
if the driver does choose to do so, it can register MMU notifiers for the range,
|
||||
and will be called back upon invalidation. Either way (avoiding page pinning, or
|
||||
using MMU notifiers to unpin upon request), there is proper synchronization with
|
||||
both filesystem and mm (page_mkclean(), munmap(), etc).
|
||||
|
||||
Therefore, neither flag needs to be set.
|
||||
|
||||
In this case, ideally, neither get_user_pages() nor pin_user_pages() should be
|
||||
called. Instead, the software should be written so that it does not pin pages.
|
||||
This allows mm and filesystems to operate more efficiently and reliably.
|
||||
|
||||
CASE 4: Pinning for struct page manipulation only
|
||||
-------------------------------------------------
|
||||
Here, normal GUP calls are sufficient, so neither flag needs to be set.
|
||||
|
||||
page_dma_pinned(): the whole point of pinning
|
||||
=============================================
|
||||
|
||||
The whole point of marking pages as "DMA-pinned" or "gup-pinned" is to be able
|
||||
to query, "is this page DMA-pinned?" That allows code such as page_mkclean()
|
||||
(and file system writeback code in general) to make informed decisions about
|
||||
what to do when a page cannot be unmapped due to such pins.
|
||||
|
||||
What to do in those cases is the subject of a years-long series of discussions
|
||||
and debates (see the References at the end of this document). It's a TODO item
|
||||
here: fill in the details once that's worked out. Meanwhile, it's safe to say
|
||||
that having this available: ::
|
||||
|
||||
static inline bool page_dma_pinned(struct page *page)
|
||||
|
||||
...is a prerequisite to solving the long-running gup+DMA problem.
|
||||
|
||||
Another way of thinking about FOLL_GET, FOLL_PIN, and FOLL_LONGTERM
|
||||
===================================================================
|
||||
|
||||
Another way of thinking about these flags is as a progression of restrictions:
|
||||
FOLL_GET is for struct page manipulation, without affecting the data that the
|
||||
struct page refers to. FOLL_PIN is a *replacement* for FOLL_GET, and is for
|
||||
short term pins on pages whose data *will* get accessed. As such, FOLL_PIN is
|
||||
a "more severe" form of pinning. And finally, FOLL_LONGTERM is an even more
|
||||
restrictive case that has FOLL_PIN as a prerequisite: this is for pages that
|
||||
will be pinned longterm, and whose data will be accessed.
|
||||
|
||||
Unit testing
|
||||
============
|
||||
This file::
|
||||
|
||||
tools/testing/selftests/vm/gup_benchmark.c
|
||||
|
||||
has the following new calls to exercise the new pin*() wrapper functions:
|
||||
|
||||
* PIN_FAST_BENCHMARK (./gup_benchmark -a)
|
||||
* PIN_BENCHMARK (./gup_benchmark -b)
|
||||
|
||||
You can monitor how many total dma-pinned pages have been acquired and released
|
||||
since the system was booted, via two new /proc/vmstat entries: ::
|
||||
|
||||
/proc/vmstat/nr_foll_pin_requested
|
||||
/proc/vmstat/nr_foll_pin_requested
|
||||
|
||||
Those are both going to show zero, unless CONFIG_DEBUG_VM is set. This is
|
||||
because there is a noticeable performance drop in unpin_user_page(), when they
|
||||
are activated.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
* `Some slow progress on get_user_pages() (Apr 2, 2019) <https://lwn.net/Articles/784574/>`_
|
||||
* `DMA and get_user_pages() (LPC: Dec 12, 2018) <https://lwn.net/Articles/774411/>`_
|
||||
* `The trouble with get_user_pages() (Apr 30, 2018) <https://lwn.net/Articles/753027/>`_
|
||||
|
||||
John Hubbard, October, 2019
|
@@ -21,8 +21,8 @@ global variables yet.
|
||||
|
||||
Tag-based KASAN is only supported in Clang and requires version 7.0.0 or later.
|
||||
|
||||
Currently generic KASAN is supported for the x86_64, arm64, xtensa and s390
|
||||
architectures, and tag-based KASAN is supported only for arm64.
|
||||
Currently generic KASAN is supported for the x86_64, arm64, xtensa, s390 and
|
||||
riscv architectures, and tag-based KASAN is supported only for arm64.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
@@ -0,0 +1,50 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/clock/amlogic,meson8-ddr-clkc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Amlogic DDR Clock Controller Device Tree Bindings
|
||||
|
||||
maintainers:
|
||||
- Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- amlogic,meson8-ddr-clkc
|
||||
- amlogic,meson8b-ddr-clkc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: xtal
|
||||
|
||||
"#clock-cells":
|
||||
const: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- "#clock-cells"
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
ddr_clkc: clock-controller@400 {
|
||||
compatible = "amlogic,meson8-ddr-clkc";
|
||||
reg = <0x400 0x20>;
|
||||
clocks = <&xtal>;
|
||||
clock-names = "xtal";
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
...
|
@@ -11,6 +11,11 @@ Required Properties:
|
||||
- "amlogic,meson8m2-clkc" for Meson8m2 (S812) SoCs
|
||||
- #clock-cells: should be 1.
|
||||
- #reset-cells: should be 1.
|
||||
- clocks: list of clock phandles, one for each entry in clock-names
|
||||
- clock-names: should contain the following:
|
||||
* "xtal": the 24MHz system oscillator
|
||||
* "ddr_pll": the DDR PLL clock
|
||||
* "clk_32k": (if present) the 32kHz clock signal from GPIOAO_6 (CLK_32K_IN)
|
||||
|
||||
Parent node should have the following properties :
|
||||
- compatible: "amlogic,meson-hhi-sysctrl", "simple-mfd", "syscon"
|
||||
|
54
Documentation/devicetree/bindings/clock/fsl,plldig.yaml
Normal file
54
Documentation/devicetree/bindings/clock/fsl,plldig.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/clock/fsl,plldig.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NXP QorIQ Layerscape LS1028A Display PIXEL Clock Binding
|
||||
|
||||
maintainers:
|
||||
- Wen He <wen.he_1@nxp.com>
|
||||
|
||||
description: |
|
||||
NXP LS1028A has a clock domain PXLCLK0 used for the Display output
|
||||
interface in the display core, as implemented in TSMC CLN28HPM PLL.
|
||||
which generate and offers pixel clocks to Display.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,ls1028a-plldig
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
'#clock-cells':
|
||||
const: 0
|
||||
|
||||
fsl,vco-hz:
|
||||
description: Optional for VCO frequency of the PLL in Hertz.
|
||||
The VCO frequency of this PLL cannot be changed during runtime
|
||||
only at startup. Therefore, the output frequencies are very
|
||||
limited and might not even closely match the requested frequency.
|
||||
To work around this restriction the user may specify its own
|
||||
desired VCO frequency for the PLL.
|
||||
minimum: 650000000
|
||||
maximum: 1300000000
|
||||
default: 1188000000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- '#clock-cells'
|
||||
|
||||
examples:
|
||||
# Display PIXEL Clock node:
|
||||
- |
|
||||
dpclk: clock-display@f1f0000 {
|
||||
compatible = "fsl,ls1028a-plldig";
|
||||
reg = <0x0 0xf1f0000 0x0 0xffff>;
|
||||
#clock-cells = <0>;
|
||||
clocks = <&osc_27m>;
|
||||
};
|
||||
|
||||
...
|
55
Documentation/devicetree/bindings/clock/fsl,sai-clock.yaml
Normal file
55
Documentation/devicetree/bindings/clock/fsl,sai-clock.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/clock/fsl,sai-clock.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale SAI bitclock-as-a-clock binding
|
||||
|
||||
maintainers:
|
||||
- Michael Walle <michael@walle.cc>
|
||||
|
||||
description: |
|
||||
It is possible to use the BCLK pin of a SAI module as a generic clock
|
||||
output. Some SoC are very constrained in their pin multiplexer
|
||||
configuration. Eg. pins can only be changed groups. For example, on the
|
||||
LS1028A SoC you can only enable SAIs in pairs. If you use only one SAI,
|
||||
the second pins are wasted. Using this binding it is possible to use the
|
||||
clock of the second SAI as a MCLK clock for an audio codec, for example.
|
||||
|
||||
This is a composite of a gated clock and a divider clock.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,vf610-sai-clock
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
'#clock-cells':
|
||||
const: 0
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- '#clock-cells'
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
mclk: clock-mclk@f130080 {
|
||||
compatible = "fsl,vf610-sai-clock";
|
||||
reg = <0x0 0xf130080 0x0 0x80>;
|
||||
#clock-cells = <0>;
|
||||
clocks = <&parentclk>;
|
||||
};
|
||||
};
|
68
Documentation/devicetree/bindings/clock/imx8mp-clock.yaml
Normal file
68
Documentation/devicetree/bindings/clock/imx8mp-clock.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/clock/imx8mp-clock.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NXP i.MX8M Plus Clock Control Module Binding
|
||||
|
||||
maintainers:
|
||||
- Anson Huang <Anson.Huang@nxp.com>
|
||||
|
||||
description:
|
||||
NXP i.MX8M Plus clock control module is an integrated clock controller, which
|
||||
generates and supplies to all modules.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx8mp-ccm
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: 32k osc
|
||||
- description: 24m osc
|
||||
- description: ext1 clock input
|
||||
- description: ext2 clock input
|
||||
- description: ext3 clock input
|
||||
- description: ext4 clock input
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: osc_32k
|
||||
- const: osc_24m
|
||||
- const: clk_ext1
|
||||
- const: clk_ext2
|
||||
- const: clk_ext3
|
||||
- const: clk_ext4
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
description:
|
||||
The clock consumer should specify the desired clock by having the clock
|
||||
ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8mp-clock.h
|
||||
for the full list of i.MX8M Plus clock IDs.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- '#clock-cells'
|
||||
|
||||
examples:
|
||||
# Clock Control Module node:
|
||||
- |
|
||||
clk: clock-controller@30380000 {
|
||||
compatible = "fsl,imx8mp-ccm";
|
||||
reg = <0x30380000 0x10000>;
|
||||
#clock-cells = <1>;
|
||||
clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>,
|
||||
<&clk_ext2>, <&clk_ext3>, <&clk_ext4>;
|
||||
clock-names = "osc_32k", "osc_24m", "clk_ext1",
|
||||
"clk_ext2", "clk_ext3", "clk_ext4";
|
||||
};
|
||||
|
||||
...
|
@@ -1,19 +0,0 @@
|
||||
Qualcomm Technologies, Inc. Display Clock Controller Binding
|
||||
------------------------------------------------------------
|
||||
|
||||
Required properties :
|
||||
|
||||
- compatible : shall contain "qcom,sdm845-dispcc"
|
||||
- reg : shall contain base register location and length.
|
||||
- #clock-cells : from common clock binding, shall contain 1.
|
||||
- #reset-cells : from common reset binding, shall contain 1.
|
||||
- #power-domain-cells : from generic power domain binding, shall contain 1.
|
||||
|
||||
Example:
|
||||
dispcc: clock-controller@af00000 {
|
||||
compatible = "qcom,sdm845-dispcc";
|
||||
reg = <0xaf00000 0x100000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
67
Documentation/devicetree/bindings/clock/qcom,dispcc.yaml
Normal file
67
Documentation/devicetree/bindings/clock/qcom,dispcc.yaml
Normal file
@@ -0,0 +1,67 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/clock/qcom,dispcc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Display Clock & Reset Controller Binding
|
||||
|
||||
maintainers:
|
||||
- Taniya Das <tdas@codeaurora.org>
|
||||
|
||||
description: |
|
||||
Qualcomm display clock control module which supports the clocks, resets and
|
||||
power domains.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sc7180-dispcc
|
||||
- qcom,sdm845-dispcc
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
items:
|
||||
- description: Board XO source
|
||||
- description: GPLL0 source from GCC
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: xo
|
||||
- const: gpll0
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
|
||||
'#reset-cells':
|
||||
const: 1
|
||||
|
||||
'#power-domain-cells':
|
||||
const: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- '#clock-cells'
|
||||
- '#reset-cells'
|
||||
- '#power-domain-cells'
|
||||
|
||||
examples:
|
||||
# Example of DISPCC with clock node properties for SDM845:
|
||||
- |
|
||||
clock-controller@af00000 {
|
||||
compatible = "qcom,sdm845-dispcc";
|
||||
reg = <0xaf00000 0x10000>;
|
||||
clocks = <&rpmhcc 0>, <&gcc 24>;
|
||||
clock-names = "xo", "gpll0";
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
||||
...
|
@@ -19,8 +19,9 @@ properties:
|
||||
enum:
|
||||
- qcom,gcc-apq8064
|
||||
- qcom,gcc-apq8084
|
||||
- qcom,gcc-ipq8064
|
||||
- qcom,gcc-ipq4019
|
||||
- qcom,gcc-ipq6018
|
||||
- qcom,gcc-ipq8064
|
||||
- qcom,gcc-ipq8074
|
||||
- qcom,gcc-msm8660
|
||||
- qcom,gcc-msm8916
|
||||
@@ -40,20 +41,50 @@ properties:
|
||||
- qcom,gcc-sm8150
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
items:
|
||||
oneOf:
|
||||
#qcom,gcc-sm8150
|
||||
#qcom,gcc-sc7180
|
||||
- items:
|
||||
- description: Board XO source
|
||||
- description: Board active XO source
|
||||
- description: Sleep clock source
|
||||
#qcom,gcc-msm8996
|
||||
- items:
|
||||
- description: XO source
|
||||
- description: Second XO source
|
||||
- description: Sleep clock source
|
||||
#qcom,gcc-msm8998
|
||||
- items:
|
||||
- description: Board XO source
|
||||
- description: Sleep clock source
|
||||
- description: USB 3.0 phy pipe clock
|
||||
- description: UFS phy rx symbol clock for pipe 0
|
||||
- description: UFS phy rx symbol clock for pipe 1
|
||||
- description: UFS phy tx symbol clock
|
||||
- description: PCIE phy pipe clock
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
items:
|
||||
oneOf:
|
||||
#qcom,gcc-sm8150
|
||||
#qcom,gcc-sc7180
|
||||
- items:
|
||||
- const: bi_tcxo
|
||||
- const: bi_tcxo_ao
|
||||
- const: sleep_clk
|
||||
#qcom,gcc-msm8996
|
||||
- items:
|
||||
- const: cxo
|
||||
- const: cxo2
|
||||
- const: sleep_clk
|
||||
#qcom,gcc-msm8998
|
||||
- items:
|
||||
- const: xo
|
||||
- const: sleep_clk
|
||||
- const: usb3_pipe
|
||||
- const: ufs_rx_symbol0
|
||||
- const: ufs_rx_symbol1
|
||||
- const: ufs_tx_symbol0
|
||||
- const: pcie0_pipe
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
@@ -118,6 +149,7 @@ else:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,gcc-msm8998
|
||||
- qcom,gcc-sm8150
|
||||
- qcom,gcc-sc7180
|
||||
then:
|
||||
@@ -179,10 +211,35 @@ examples:
|
||||
clock-controller@100000 {
|
||||
compatible = "qcom,gcc-sc7180";
|
||||
reg = <0x100000 0x1f0000>;
|
||||
clocks = <&rpmhcc 0>, <&rpmhcc 1>;
|
||||
clock-names = "bi_tcxo", "bi_tcxo_ao";
|
||||
clocks = <&rpmhcc 0>, <&rpmhcc 1>, <0>;
|
||||
clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
||||
|
||||
# Example of MSM8998 GCC:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,rpmcc.h>
|
||||
clock-controller@100000 {
|
||||
compatible = "qcom,gcc-msm8998";
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
reg = <0x00100000 0xb0000>;
|
||||
clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
|
||||
<&sleep>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>;
|
||||
clock-names = "xo",
|
||||
"sleep_clk",
|
||||
"usb3_pipe",
|
||||
"ufs_rx_symbol0",
|
||||
"ufs_rx_symbol1",
|
||||
"ufs_tx_symbol0",
|
||||
"pcie0_pipe";
|
||||
};
|
||||
...
|
||||
|
@@ -1,24 +0,0 @@
|
||||
Qualcomm Graphics Clock & Reset Controller Binding
|
||||
--------------------------------------------------
|
||||
|
||||
Required properties :
|
||||
- compatible : shall contain "qcom,sdm845-gpucc" or "qcom,msm8998-gpucc"
|
||||
- reg : shall contain base register location and length
|
||||
- #clock-cells : from common clock binding, shall contain 1
|
||||
- #reset-cells : from common reset binding, shall contain 1
|
||||
- #power-domain-cells : from generic power domain binding, shall contain 1
|
||||
- clocks : shall contain the XO clock
|
||||
shall contain the gpll0 out main clock (msm8998)
|
||||
- clock-names : shall be "xo"
|
||||
shall be "gpll0" (msm8998)
|
||||
|
||||
Example:
|
||||
gpucc: clock-controller@5090000 {
|
||||
compatible = "qcom,sdm845-gpucc";
|
||||
reg = <0x5090000 0x9000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
clocks = <&rpmhcc RPMH_CXO_CLK>;
|
||||
clock-names = "xo";
|
||||
};
|
72
Documentation/devicetree/bindings/clock/qcom,gpucc.yaml
Normal file
72
Documentation/devicetree/bindings/clock/qcom,gpucc.yaml
Normal file
@@ -0,0 +1,72 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/clock/qcom,gpucc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Graphics Clock & Reset Controller Binding
|
||||
|
||||
maintainers:
|
||||
- Taniya Das <tdas@codeaurora.org>
|
||||
|
||||
description: |
|
||||
Qualcomm grpahics clock control module which supports the clocks, resets and
|
||||
power domains.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,msm8998-gpucc
|
||||
- qcom,sc7180-gpucc
|
||||
- qcom,sdm845-gpucc
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
items:
|
||||
- description: Board XO source
|
||||
- description: GPLL0 main branch source from GCC(gcc_gpu_gpll0_clk_src)
|
||||
- description: GPLL0 div branch source from GCC(gcc_gpu_gpll0_div_clk_src)
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
items:
|
||||
- const: xo
|
||||
- const: gpll0_main
|
||||
- const: gpll0_div
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
|
||||
'#reset-cells':
|
||||
const: 1
|
||||
|
||||
'#power-domain-cells':
|
||||
const: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- '#clock-cells'
|
||||
- '#reset-cells'
|
||||
- '#power-domain-cells'
|
||||
|
||||
examples:
|
||||
# Example of GPUCC with clock node properties for SDM845:
|
||||
- |
|
||||
clock-controller@5090000 {
|
||||
compatible = "qcom,sdm845-gpucc";
|
||||
reg = <0x5090000 0x9000>;
|
||||
clocks = <&rpmhcc 0>, <&gcc 31>, <&gcc 32>;
|
||||
clock-names = "xo", "gpll0_main", "gpll0_div";
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
||||
...
|
@@ -1,28 +0,0 @@
|
||||
Qualcomm Multimedia Clock & Reset Controller Binding
|
||||
----------------------------------------------------
|
||||
|
||||
Required properties :
|
||||
- compatible : shall contain only one of the following:
|
||||
|
||||
"qcom,mmcc-apq8064"
|
||||
"qcom,mmcc-apq8084"
|
||||
"qcom,mmcc-msm8660"
|
||||
"qcom,mmcc-msm8960"
|
||||
"qcom,mmcc-msm8974"
|
||||
"qcom,mmcc-msm8996"
|
||||
|
||||
- reg : shall contain base register location and length
|
||||
- #clock-cells : shall contain 1
|
||||
- #reset-cells : shall contain 1
|
||||
|
||||
Optional properties :
|
||||
- #power-domain-cells : shall contain 1
|
||||
|
||||
Example:
|
||||
clock-controller@4000000 {
|
||||
compatible = "qcom,mmcc-msm8960";
|
||||
reg = <0x4000000 0x1000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
98
Documentation/devicetree/bindings/clock/qcom,mmcc.yaml
Normal file
98
Documentation/devicetree/bindings/clock/qcom,mmcc.yaml
Normal file
@@ -0,0 +1,98 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/clock/qcom,mmcc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Multimedia Clock & Reset Controller Binding
|
||||
|
||||
maintainers:
|
||||
- Jeffrey Hugo <jhugo@codeaurora.org>
|
||||
- Taniya Das <tdas@codeaurora.org>
|
||||
|
||||
description: |
|
||||
Qualcomm multimedia clock control module which supports the clocks, resets and
|
||||
power domains.
|
||||
|
||||
properties:
|
||||
compatible :
|
||||
enum:
|
||||
- qcom,mmcc-apq8064
|
||||
- qcom,mmcc-apq8084
|
||||
- qcom,mmcc-msm8660
|
||||
- qcom,mmcc-msm8960
|
||||
- qcom,mmcc-msm8974
|
||||
- qcom,mmcc-msm8996
|
||||
- qcom,mmcc-msm8998
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Board XO source
|
||||
- description: Board sleep source
|
||||
- description: Global PLL 0 clock
|
||||
- description: DSI phy instance 0 dsi clock
|
||||
- description: DSI phy instance 0 byte clock
|
||||
- description: DSI phy instance 1 dsi clock
|
||||
- description: DSI phy instance 1 byte clock
|
||||
- description: HDMI phy PLL clock
|
||||
- description: DisplayPort phy PLL vco clock
|
||||
- description: DisplayPort phy PLL link clock
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: xo
|
||||
- const: sleep
|
||||
- const: gpll0
|
||||
- const: dsi0dsi
|
||||
- const: dsi0byte
|
||||
- const: dsi1dsi
|
||||
- const: dsi1byte
|
||||
- const: hdmipll
|
||||
- const: dpvco
|
||||
- const: dplink
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
|
||||
'#reset-cells':
|
||||
const: 1
|
||||
|
||||
'#power-domain-cells':
|
||||
const: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
protected-clocks:
|
||||
description:
|
||||
Protected clock specifier list as per common clock binding
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- '#clock-cells'
|
||||
- '#reset-cells'
|
||||
- '#power-domain-cells'
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: qcom,mmcc-msm8998
|
||||
|
||||
then:
|
||||
required:
|
||||
- clocks
|
||||
- clock-names
|
||||
|
||||
examples:
|
||||
# Example for MMCC for MSM8960:
|
||||
- |
|
||||
clock-controller@4000000 {
|
||||
compatible = "qcom,mmcc-msm8960";
|
||||
reg = <0x4000000 0x1000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
||||
...
|
@@ -1,18 +0,0 @@
|
||||
Qualcomm Video Clock & Reset Controller Binding
|
||||
-----------------------------------------------
|
||||
|
||||
Required properties :
|
||||
- compatible : shall contain "qcom,sdm845-videocc"
|
||||
- reg : shall contain base register location and length
|
||||
- #clock-cells : from common clock binding, shall contain 1.
|
||||
- #power-domain-cells : from generic power domain binding, shall contain 1.
|
||||
- #reset-cells : from common reset binding, shall contain 1.
|
||||
|
||||
Example:
|
||||
videocc: clock-controller@ab00000 {
|
||||
compatible = "qcom,sdm845-videocc";
|
||||
reg = <0xab00000 0x10000>;
|
||||
#clock-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
};
|
62
Documentation/devicetree/bindings/clock/qcom,videocc.yaml
Normal file
62
Documentation/devicetree/bindings/clock/qcom,videocc.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/clock/qcom,videocc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Video Clock & Reset Controller Binding
|
||||
|
||||
maintainers:
|
||||
- Taniya Das <tdas@codeaurora.org>
|
||||
|
||||
description: |
|
||||
Qualcomm video clock control module which supports the clocks, resets and
|
||||
power domains.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sc7180-videocc
|
||||
- qcom,sdm845-videocc
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: xo
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
|
||||
'#reset-cells':
|
||||
const: 1
|
||||
|
||||
'#power-domain-cells':
|
||||
const: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- '#clock-cells'
|
||||
- '#reset-cells'
|
||||
- '#power-domain-cells'
|
||||
|
||||
examples:
|
||||
# Example of VIDEOCC with clock node properties for SDM845:
|
||||
- |
|
||||
clock-controller@ab00000 {
|
||||
compatible = "qcom,sdm845-videocc";
|
||||
reg = <0xab00000 0x10000>;
|
||||
clocks = <&rpmhcc 0>;
|
||||
clock-names = "xo";
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
||||
...
|
@@ -19,7 +19,7 @@ Required Properties:
|
||||
- "renesas,r8a7745-cpg-mssr" for the r8a7745 SoC (RZ/G1E)
|
||||
- "renesas,r8a77470-cpg-mssr" for the r8a77470 SoC (RZ/G1C)
|
||||
- "renesas,r8a774a1-cpg-mssr" for the r8a774a1 SoC (RZ/G2M)
|
||||
- "renesas,r8a774b1-cpg-mssr" for the r8a774a1 SoC (RZ/G2N)
|
||||
- "renesas,r8a774b1-cpg-mssr" for the r8a774b1 SoC (RZ/G2N)
|
||||
- "renesas,r8a774c0-cpg-mssr" for the r8a774c0 SoC (RZ/G2E)
|
||||
- "renesas,r8a7790-cpg-mssr" for the r8a7790 SoC (R-Car H2)
|
||||
- "renesas,r8a7791-cpg-mssr" for the r8a7791 SoC (R-Car M2-W)
|
||||
|
@@ -16,18 +16,23 @@ For more information, please see the Linux clock framework binding at
|
||||
Documentation/devicetree/bindings/clock/clock-bindings.txt.
|
||||
|
||||
Required properties :
|
||||
- compatible : shall be "ti,clkctrl"
|
||||
- compatible : shall be "ti,clkctrl" or a clock domain specific name:
|
||||
"ti,clkctrl-l4-cfg"
|
||||
"ti,clkctrl-l4-per"
|
||||
"ti,clkctrl-l4-secure"
|
||||
"ti,clkctrl-l4-wkup"
|
||||
- #clock-cells : shall contain 2 with the first entry being the instance
|
||||
offset from the clock domain base and the second being the
|
||||
clock index
|
||||
- reg : clock registers
|
||||
|
||||
Example: Clock controller node on omap 4430:
|
||||
|
||||
&cm2 {
|
||||
l4per: cm@1400 {
|
||||
cm_l4per@0 {
|
||||
cm_l4per_clkctrl: clk@20 {
|
||||
compatible = "ti,clkctrl";
|
||||
cm_l4per_clkctrl: clock@20 {
|
||||
compatible = "ti,clkctrl-l4-per", "ti,clkctrl";
|
||||
reg = <0x20 0x1b0>;
|
||||
#clock-cells = <2>;
|
||||
};
|
||||
|
@@ -43,7 +43,7 @@ Configuration of ATL instances:
|
||||
- aws : Audio word select signal selection
|
||||
};
|
||||
|
||||
For valid word select signals, see the dt-bindings/clk/ti-dra7-atl.h include
|
||||
For valid word select signals, see the dt-bindings/clock/ti-dra7-atl.h include
|
||||
file.
|
||||
|
||||
Examples:
|
||||
@@ -83,7 +83,7 @@ atl: atl@4843c000 {
|
||||
clock-names = "fck";
|
||||
};
|
||||
|
||||
#include <dt-bindings/clk/ti-dra7-atl.h>
|
||||
#include <dt-bindings/clock/ti-dra7-atl.h>
|
||||
|
||||
&atl {
|
||||
|
||||
|
64
Documentation/devicetree/bindings/clock/xlnx,versal-clk.yaml
Normal file
64
Documentation/devicetree/bindings/clock/xlnx,versal-clk.yaml
Normal file
@@ -0,0 +1,64 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/bindings/clock/xlnx,versal-clk.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Xilinx Versal clock controller
|
||||
|
||||
maintainers:
|
||||
- Michal Simek <michal.simek@xilinx.com>
|
||||
- Jolly Shah <jolly.shah@xilinx.com>
|
||||
- Rajan Vaja <rajan.vaja@xilinx.com>
|
||||
|
||||
description: |
|
||||
The clock controller is a hardware block of Xilinx versal clock tree. It
|
||||
reads required input clock frequencies from the devicetree and acts as clock
|
||||
provider for all clock consumers of PS clocks.
|
||||
|
||||
select: false
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: xlnx,versal-clk
|
||||
|
||||
"#clock-cells":
|
||||
const: 1
|
||||
|
||||
clocks:
|
||||
description: List of clock specifiers which are external input
|
||||
clocks to the given clock controller.
|
||||
items:
|
||||
- description: reference clock
|
||||
- description: alternate reference clock
|
||||
- description: alternate reference clock for programmable logic
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: ref
|
||||
- const: alt_ref
|
||||
- const: pl_alt_ref
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- "#clock-cells"
|
||||
- clocks
|
||||
- clock-names
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
firmware {
|
||||
zynqmp_firmware: zynqmp-firmware {
|
||||
compatible = "xlnx,zynqmp-firmware";
|
||||
method = "smc";
|
||||
versal_clk: clock-controller {
|
||||
#clock-cells = <1>;
|
||||
compatible = "xlnx,versal-clk";
|
||||
clocks = <&ref>, <&alt_ref>, <&pl_alt_ref>;
|
||||
clock-names = "ref", "alt_ref", "pl_alt_ref";
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
@@ -36,6 +36,8 @@ Optional properties:
|
||||
- pinctrl-0: a phandle pointing to the pin settings for the
|
||||
control gpios
|
||||
|
||||
- wakeup-source: If present the device will act as wakeup-source
|
||||
|
||||
- threshold: allows setting the "click"-threshold in the range
|
||||
from 0 to 80.
|
||||
|
||||
|
@@ -1,50 +0,0 @@
|
||||
Device tree bindings for Goodix GT9xx series touchscreen controller
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : Should be "goodix,gt1151"
|
||||
or "goodix,gt5663"
|
||||
or "goodix,gt5688"
|
||||
or "goodix,gt911"
|
||||
or "goodix,gt9110"
|
||||
or "goodix,gt912"
|
||||
or "goodix,gt927"
|
||||
or "goodix,gt9271"
|
||||
or "goodix,gt928"
|
||||
or "goodix,gt967"
|
||||
- reg : I2C address of the chip. Should be 0x5d or 0x14
|
||||
- interrupts : Interrupt to which the chip is connected
|
||||
|
||||
Optional properties:
|
||||
|
||||
- irq-gpios : GPIO pin used for IRQ. The driver uses the
|
||||
interrupt gpio pin as output to reset the device.
|
||||
- reset-gpios : GPIO pin used for reset
|
||||
- AVDD28-supply : Analog power supply regulator on AVDD28 pin
|
||||
- VDDIO-supply : GPIO power supply regulator on VDDIO pin
|
||||
- touchscreen-inverted-x
|
||||
- touchscreen-inverted-y
|
||||
- touchscreen-size-x
|
||||
- touchscreen-size-y
|
||||
- touchscreen-swapped-x-y
|
||||
|
||||
The touchscreen-* properties are documented in touchscreen.txt in this
|
||||
directory.
|
||||
|
||||
Example:
|
||||
|
||||
i2c@00000000 {
|
||||
/* ... */
|
||||
|
||||
gt928@5d {
|
||||
compatible = "goodix,gt928";
|
||||
reg = <0x5d>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <0 0>;
|
||||
|
||||
irq-gpios = <&gpio1 0 0>;
|
||||
reset-gpios = <&gpio1 1 0>;
|
||||
};
|
||||
|
||||
/* ... */
|
||||
};
|
@@ -0,0 +1,78 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/input/touchscreen/goodix.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Goodix GT9xx series touchscreen controller Bindings
|
||||
|
||||
maintainers:
|
||||
- Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
|
||||
allOf:
|
||||
- $ref: touchscreen.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- goodix,gt1151
|
||||
- goodix,gt5663
|
||||
- goodix,gt5688
|
||||
- goodix,gt911
|
||||
- goodix,gt9110
|
||||
- goodix,gt912
|
||||
- goodix,gt927
|
||||
- goodix,gt9271
|
||||
- goodix,gt928
|
||||
- goodix,gt967
|
||||
|
||||
reg:
|
||||
enum: [ 0x5d, 0x14 ]
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
irq-gpios:
|
||||
description: GPIO pin used for IRQ.
|
||||
The driver uses the interrupt gpio pin as
|
||||
output to reset the device.
|
||||
maxItems: 1
|
||||
|
||||
reset-gpios:
|
||||
maxItems: 1
|
||||
|
||||
AVDD28-supply:
|
||||
description: Analog power supply regulator on AVDD28 pin
|
||||
|
||||
VDDIO-supply:
|
||||
description: GPIO power supply regulator on VDDIO pin
|
||||
|
||||
touchscreen-inverted-x: true
|
||||
touchscreen-inverted-y: true
|
||||
touchscreen-size-x: true
|
||||
touchscreen-size-y: true
|
||||
touchscreen-swapped-x-y: true
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@00000000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
gt928@5d {
|
||||
compatible = "goodix,gt928";
|
||||
reg = <0x5d>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <0 0>;
|
||||
irq-gpios = <&gpio1 0 0>;
|
||||
reset-gpios = <&gpio1 1 0>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
@@ -1,39 +1 @@
|
||||
General Touchscreen Properties:
|
||||
|
||||
Optional properties for Touchscreens:
|
||||
- touchscreen-min-x : minimum x coordinate reported (0 if not set)
|
||||
- touchscreen-min-y : minimum y coordinate reported (0 if not set)
|
||||
- touchscreen-size-x : horizontal resolution of touchscreen
|
||||
(maximum x coordinate reported + 1)
|
||||
- touchscreen-size-y : vertical resolution of touchscreen
|
||||
(maximum y coordinate reported + 1)
|
||||
- touchscreen-max-pressure : maximum reported pressure (arbitrary range
|
||||
dependent on the controller)
|
||||
- touchscreen-min-pressure : minimum pressure on the touchscreen to be
|
||||
achieved in order for the touchscreen
|
||||
driver to report a touch event.
|
||||
- touchscreen-fuzz-x : horizontal noise value of the absolute input
|
||||
device (in pixels)
|
||||
- touchscreen-fuzz-y : vertical noise value of the absolute input
|
||||
device (in pixels)
|
||||
- touchscreen-fuzz-pressure : pressure noise value of the absolute input
|
||||
device (arbitrary range dependent on the
|
||||
controller)
|
||||
- touchscreen-average-samples : Number of data samples which are averaged
|
||||
for each read (valid values dependent on the
|
||||
controller)
|
||||
- touchscreen-inverted-x : X axis is inverted (boolean)
|
||||
- touchscreen-inverted-y : Y axis is inverted (boolean)
|
||||
- touchscreen-swapped-x-y : X and Y axis are swapped (boolean)
|
||||
Swapping is done after inverting the axis
|
||||
- touchscreen-x-mm : horizontal length in mm of the touchscreen
|
||||
- touchscreen-y-mm : vertical length in mm of the touchscreen
|
||||
|
||||
Deprecated properties for Touchscreens:
|
||||
- x-size : deprecated name for touchscreen-size-x
|
||||
- y-size : deprecated name for touchscreen-size-y
|
||||
- moving-threshold : deprecated name for a combination of
|
||||
touchscreen-fuzz-x and touchscreen-fuzz-y
|
||||
- contact-threshold : deprecated name for touchscreen-fuzz-pressure
|
||||
- x-invert : deprecated name for touchscreen-inverted-x
|
||||
- y-invert : deprecated name for touchscreen-inverted-y
|
||||
See touchscreen.yaml
|
||||
|
@@ -0,0 +1,83 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/input/touchscreen/touchscreen.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Common touchscreen Bindings
|
||||
|
||||
maintainers:
|
||||
- Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
|
||||
properties:
|
||||
touchscreen-min-x:
|
||||
description: minimum x coordinate reported
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
default: 0
|
||||
|
||||
touchscreen-min-y:
|
||||
description: minimum y coordinate reported
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
default: 0
|
||||
|
||||
touchscreen-size-x:
|
||||
description: horizontal resolution of touchscreen (maximum x coordinate reported + 1)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-size-y:
|
||||
description: vertical resolution of touchscreen (maximum y coordinate reported + 1)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-max-pressure:
|
||||
description: maximum reported pressure (arbitrary range dependent on the controller)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-min-pressure:
|
||||
description: minimum pressure on the touchscreen to be achieved in order for the
|
||||
touchscreen driver to report a touch event.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-fuzz-x:
|
||||
description: horizontal noise value of the absolute input device (in pixels)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-fuzz-y:
|
||||
description: vertical noise value of the absolute input device (in pixels)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-fuzz-pressure:
|
||||
description: pressure noise value of the absolute input device (arbitrary range
|
||||
dependent on the controller)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-average-samples:
|
||||
description: Number of data samples which are averaged for each read (valid values
|
||||
dependent on the controller)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-inverted-x:
|
||||
description: X axis is inverted
|
||||
type: boolean
|
||||
|
||||
touchscreen-inverted-y:
|
||||
description: Y axis is inverted
|
||||
type: boolean
|
||||
|
||||
touchscreen-swapped-x-y:
|
||||
description: X and Y axis are swapped
|
||||
Swapping is done after inverting the axis
|
||||
type: boolean
|
||||
|
||||
touchscreen-x-mm:
|
||||
description: horizontal length in mm of the touchscreen
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
touchscreen-y-mm:
|
||||
description: vertical length in mm of the touchscreen
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
dependencies:
|
||||
touchscreen-size-x: [ touchscreen-size-y ]
|
||||
touchscreen-size-y: [ touchscreen-size-x ]
|
||||
touchscreen-x-mm: [ touchscreen-y-mm ]
|
||||
touchscreen-y-mm: [ touchscreen-x-mm ]
|
@@ -18,6 +18,10 @@ Required properties:
|
||||
Optional properties:
|
||||
- enable-gpios : gpio pin to enable/disable the device.
|
||||
- vled-supply : LED supply
|
||||
- ti,ovp-microvolt: Overvoltage protection in
|
||||
micro-volt, can be 17000000, 21000000, 25000000 or
|
||||
29000000. If ti,ovp-microvolt is not specified it
|
||||
defaults to 29000000.
|
||||
|
||||
Required child properties:
|
||||
- reg : 0 - Will enable all LED sync paths
|
||||
@@ -31,6 +35,8 @@ Optional child properties:
|
||||
- label : see Documentation/devicetree/bindings/leds/common.txt (deprecated)
|
||||
- linux,default-trigger :
|
||||
see Documentation/devicetree/bindings/leds/common.txt
|
||||
- led-max-microamp :
|
||||
see Documentation/devicetree/bindings/leds/common.txt
|
||||
|
||||
Example:
|
||||
|
||||
@@ -44,12 +50,14 @@ led-controller@36 {
|
||||
|
||||
enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
|
||||
vled-supply = <&vbatt>;
|
||||
ti,ovp-microvolt = <29000000>;
|
||||
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
function = LED_FUNCTION_BACKLIGHT;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
linux,default-trigger = "backlight";
|
||||
led-max-microamp = <20000>;
|
||||
};
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,52 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/leds/rohm,bd71828-leds.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ROHM BD71828 Power Management Integrated Circuit LED driver
|
||||
|
||||
maintainers:
|
||||
- Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
|
||||
|
||||
description: |
|
||||
This module is part of the ROHM BD71828 MFD device. For more details
|
||||
see Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml.
|
||||
|
||||
The LED controller is represented as a sub-node of the PMIC node on the device
|
||||
tree.
|
||||
|
||||
The device has two LED outputs referred as GRNLED and AMBLED in data-sheet.
|
||||
|
||||
select: false
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: rohm,bd71828-leds
|
||||
|
||||
patternProperties:
|
||||
"^led-[1-2]$":
|
||||
type: object
|
||||
description:
|
||||
Properties for a single LED.
|
||||
properties:
|
||||
#allOf:
|
||||
#- $ref: "common.yaml#"
|
||||
rohm,led-compatible:
|
||||
description: LED identification string
|
||||
allOf:
|
||||
- $ref: "/schemas/types.yaml#/definitions/string"
|
||||
- enum:
|
||||
- bd71828-ambled
|
||||
- bd71828-grnled
|
||||
function:
|
||||
description:
|
||||
Purpose of LED as defined in dt-bindings/leds/common.h
|
||||
$ref: "/schemas/types.yaml#/definitions/string"
|
||||
color:
|
||||
description:
|
||||
LED colour as defined in dt-bindings/leds/common.h
|
||||
$ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
|
||||
required:
|
||||
- compatible
|
@@ -21,10 +21,11 @@ platforms.
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: must specify the base address and size of the global block
|
||||
|
||||
- clocks:
|
||||
Usage: required if #clocks-cells property is present
|
||||
Value type: <phandle>
|
||||
Definition: phandle to the input PLL, which feeds the APCS mux/divider
|
||||
Usage: required if #clock-names property is present
|
||||
Value type: <phandle array>
|
||||
Definition: phandles to the two parent clocks of the clock driver.
|
||||
|
||||
- #mbox-cells:
|
||||
Usage: required
|
||||
@@ -36,6 +37,12 @@ platforms.
|
||||
Value type: <u32>
|
||||
Definition: as described in clock.txt, must be 0
|
||||
|
||||
- clock-names:
|
||||
Usage: required if the platform data based clock driver needs to
|
||||
retrieve the parent clock names from device tree.
|
||||
This will requires two mandatory clocks to be defined.
|
||||
Value type: <string-array>
|
||||
Definition: must be "pll" and "aux"
|
||||
|
||||
= EXAMPLE
|
||||
The following example describes the APCS HMSS found in MSM8996 and part of the
|
||||
@@ -68,3 +75,14 @@ Below is another example of the APCS binding on MSM8916 platforms:
|
||||
clocks = <&a53pll>;
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
Below is another example of the APCS binding on QCS404 platforms:
|
||||
|
||||
apcs_glb: mailbox@b011000 {
|
||||
compatible = "qcom,qcs404-apcs-apps-global", "syscon";
|
||||
reg = <0x0b011000 0x1000>;
|
||||
#mbox-cells = <1>;
|
||||
clocks = <&apcs_hfpll>, <&gcc GCC_GPLL0_AO_OUT_MAIN>;
|
||||
clock-names = "pll", "aux";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
@@ -16,7 +16,15 @@ description: |-
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: allwinner,sun7i-a20-csi0
|
||||
oneOf:
|
||||
- const: allwinner,sun4i-a10-csi1
|
||||
- const: allwinner,sun7i-a20-csi0
|
||||
- items:
|
||||
- const: allwinner,sun7i-a20-csi1
|
||||
- const: allwinner,sun4i-a10-csi1
|
||||
- items:
|
||||
- const: allwinner,sun8i-r40-csi0
|
||||
- const: allwinner,sun7i-a20-csi0
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
@@ -25,12 +33,16 @@ properties:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 2
|
||||
maxItems: 3
|
||||
items:
|
||||
- description: The CSI interface clock
|
||||
- description: The CSI ISP clock
|
||||
- description: The CSI DRAM clock
|
||||
|
||||
clock-names:
|
||||
minItems: 2
|
||||
maxItems: 3
|
||||
items:
|
||||
- const: bus
|
||||
- const: isp
|
||||
|
141
Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
Normal file
141
Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
Normal file
@@ -0,0 +1,141 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
# Copyright 2019 BayLibre, SAS
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/media/amlogic,gx-vdec.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Amlogic Video Decoder
|
||||
|
||||
maintainers:
|
||||
- Neil Armstrong <narmstrong@baylibre.com>
|
||||
- Maxime Jourdan <mjourdan@baylibre.com>
|
||||
|
||||
description: |
|
||||
The video decoding IP lies within the DOS memory region,
|
||||
except for the hardware bitstream parser that makes use of an undocumented
|
||||
region.
|
||||
|
||||
It makes use of the following blocks:
|
||||
- ESPARSER is a bitstream parser that outputs to a VIFIFO. Further VDEC blocks
|
||||
then feed from this VIFIFO.
|
||||
- VDEC_1 can decode MPEG-1, MPEG-2, MPEG-4 part 2, MJPEG, H.263, H.264, VC-1.
|
||||
- VDEC_HEVC can decode HEVC and VP9.
|
||||
|
||||
Both VDEC_1 and VDEC_HEVC share the "vdec" IRQ and as such cannot run
|
||||
concurrently.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- amlogic,gxbb-vdec # GXBB (S905)
|
||||
- amlogic,gxl-vdec # GXL (S905X, S905D)
|
||||
- amlogic,gxm-vdec # GXM (S912)
|
||||
- const: amlogic,gx-vdec
|
||||
- enum:
|
||||
- amlogic,g12a-vdec # G12A (S905X2, S905D2)
|
||||
- amlogic,sm1-vdec # SM1 (S905X3, S905D3)
|
||||
|
||||
interrupts:
|
||||
minItems: 2
|
||||
|
||||
interrupt-names:
|
||||
items:
|
||||
- const: vdec
|
||||
- const: esparser
|
||||
|
||||
reg:
|
||||
minItems: 2
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: dos
|
||||
- const: esparser
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: esparser
|
||||
|
||||
clocks:
|
||||
minItems: 4
|
||||
maxItems: 5
|
||||
|
||||
clock-names:
|
||||
minItems: 4
|
||||
maxItems: 5
|
||||
items:
|
||||
- const: dos_parser
|
||||
- const: dos
|
||||
- const: vdec_1
|
||||
- const: vdec_hevc
|
||||
- const: vdec_hevcf
|
||||
|
||||
amlogic,ao-sysctrl:
|
||||
description: should point to the AOBUS sysctrl node
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/phandle
|
||||
|
||||
amlogic,canvas:
|
||||
description: should point to a canvas provider node
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/phandle
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- amlogic,gx-vdec
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
maxItems: 4
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- amlogic,g12a-vdec
|
||||
- amlogic,sm1-vdec
|
||||
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
minItems: 5
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
- clocks
|
||||
- clock-names
|
||||
- resets
|
||||
- reset-names
|
||||
- amlogic,ao-sysctrl
|
||||
- amlogic,canvas
|
||||
|
||||
examples:
|
||||
- |
|
||||
vdec: video-decoder@c8820000 {
|
||||
compatible = "amlogic,gxl-vdec", "amlogic,gx-vdec";
|
||||
reg = <0xc8820000 0x10000>, <0xc110a580 0xe4>;
|
||||
reg-names = "dos", "esparser";
|
||||
interrupts = <44>, <32>;
|
||||
interrupt-names = "vdec", "esparser";
|
||||
clocks = <&clk_dos_parser> ,<&clk_dos>, <&clk_vdec_1>, <&clk_vdec_hevc>;
|
||||
clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";
|
||||
resets = <&reset_parser>;
|
||||
reset-names = "esparser";
|
||||
amlogic,ao-sysctrl = <&sysctrl_AO>;
|
||||
amlogic,canvas = <&canvas>;
|
||||
};
|
@@ -1,72 +0,0 @@
|
||||
Amlogic Video Decoder
|
||||
================================
|
||||
|
||||
The video decoding IP lies within the DOS memory region,
|
||||
except for the hardware bitstream parser that makes use of an undocumented
|
||||
region.
|
||||
|
||||
It makes use of the following blocks:
|
||||
|
||||
- ESPARSER is a bitstream parser that outputs to a VIFIFO. Further VDEC blocks
|
||||
then feed from this VIFIFO.
|
||||
- VDEC_1 can decode MPEG-1, MPEG-2, MPEG-4 part 2, MJPEG, H.263, H.264, VC-1.
|
||||
- VDEC_HEVC can decode HEVC and VP9.
|
||||
|
||||
Both VDEC_1 and VDEC_HEVC share the "vdec" IRQ and as such cannot run
|
||||
concurrently.
|
||||
|
||||
Device Tree Bindings:
|
||||
---------------------
|
||||
|
||||
VDEC: Video Decoder
|
||||
--------------------------
|
||||
|
||||
Required properties:
|
||||
- compatible: value should be different for each SoC family as :
|
||||
- GXBB (S905) : "amlogic,gxbb-vdec"
|
||||
- GXL (S905X, S905D) : "amlogic,gxl-vdec"
|
||||
- GXM (S912) : "amlogic,gxm-vdec"
|
||||
followed by the common "amlogic,gx-vdec"
|
||||
- reg: base address and size of he following memory-mapped regions :
|
||||
- dos
|
||||
- esparser
|
||||
- reg-names: should contain the names of the previous memory regions
|
||||
- interrupts: should contain the following IRQs:
|
||||
- vdec
|
||||
- esparser
|
||||
- interrupt-names: should contain the names of the previous interrupts
|
||||
- amlogic,ao-sysctrl: should point to the AOBUS sysctrl node
|
||||
- amlogic,canvas: should point to a canvas provider node
|
||||
- clocks: should contain the following clocks :
|
||||
- dos_parser
|
||||
- dos
|
||||
- vdec_1
|
||||
- vdec_hevc
|
||||
- clock-names: should contain the names of the previous clocks
|
||||
- resets: should contain the parser reset
|
||||
- reset-names: should be "esparser"
|
||||
|
||||
Example:
|
||||
|
||||
vdec: video-codec@c8820000 {
|
||||
compatible = "amlogic,gxbb-vdec", "amlogic,gx-vdec";
|
||||
reg = <0x0 0xc8820000 0x0 0x10000>,
|
||||
<0x0 0xc110a580 0x0 0xe4>;
|
||||
reg-names = "dos", "esparser";
|
||||
|
||||
interrupts = <GIC_SPI 44 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "vdec", "esparser";
|
||||
|
||||
amlogic,ao-sysctrl = <&sysctrl_AO>;
|
||||
amlogic,canvas = <&canvas>;
|
||||
|
||||
clocks = <&clkc CLKID_DOS_PARSER>,
|
||||
<&clkc CLKID_DOS>,
|
||||
<&clkc CLKID_VDEC_1>,
|
||||
<&clkc CLKID_VDEC_HEVC>;
|
||||
clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";
|
||||
|
||||
resets = <&reset RESET_PARSER>;
|
||||
reset-names = "esparser";
|
||||
};
|
@@ -1,7 +1,8 @@
|
||||
Device-Tree bindings for hix5hd2 ir IP
|
||||
|
||||
Required properties:
|
||||
- compatible: Should contain "hisilicon,hix5hd2-ir".
|
||||
- compatible: Should contain "hisilicon,hix5hd2-ir", or:
|
||||
- "hisilicon,hi3796cv300-ir" for Hi3796CV300 IR device.
|
||||
- reg: Base physical address of the controller and length of memory
|
||||
mapped region.
|
||||
- interrupts: interrupt-specifier for the sole interrupt generated by
|
||||
|
@@ -13,6 +13,7 @@ on Gen3 and RZ/G2 platforms to a CSI-2 receiver.
|
||||
- "renesas,vin-r8a7743" for the R8A7743 device
|
||||
- "renesas,vin-r8a7744" for the R8A7744 device
|
||||
- "renesas,vin-r8a7745" for the R8A7745 device
|
||||
- "renesas,vin-r8a77470" for the R8A77470 device
|
||||
- "renesas,vin-r8a774a1" for the R8A774A1 device
|
||||
- "renesas,vin-r8a774b1" for the R8A774B1 device
|
||||
- "renesas,vin-r8a774c0" for the R8A774C0 device
|
||||
@@ -41,9 +42,6 @@ on Gen3 and RZ/G2 platforms to a CSI-2 receiver.
|
||||
- interrupts: the interrupt for the device
|
||||
- clocks: Reference to the parent clock
|
||||
|
||||
Additionally, an alias named vinX will need to be created to specify
|
||||
which video input device this is.
|
||||
|
||||
The per-board settings for Gen2 and RZ/G1 platforms:
|
||||
|
||||
- port - sub-node describing a single endpoint connected to the VIN
|
||||
|
202
Documentation/devicetree/bindings/media/ti,cal.yaml
Normal file
202
Documentation/devicetree/bindings/media/ti,cal.yaml
Normal file
@@ -0,0 +1,202 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/media/ti,cal.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Texas Instruments DRA72x CAMERA ADAPTATION LAYER (CAL) Device Tree Bindings
|
||||
|
||||
maintainers:
|
||||
- Benoit Parrot <bparrot@ti.com>
|
||||
|
||||
description: |-
|
||||
The Camera Adaptation Layer (CAL) is a key component for image capture
|
||||
applications. The capture module provides the system interface and the
|
||||
processing capability to connect CSI2 image-sensor modules to the
|
||||
DRA72x device.
|
||||
|
||||
CAL supports 2 camera port nodes on MIPI bus. Each CSI2 camera port nodes
|
||||
should contain a 'port' child node with child 'endpoint' node. Please
|
||||
refer to the bindings defined in
|
||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
# for DRA72 controllers
|
||||
- ti,dra72-cal
|
||||
# for DRA72 controllers pre ES2.0
|
||||
- ti,dra72-pre-es2-cal
|
||||
# for DRA76 controllers
|
||||
- ti,dra76-cal
|
||||
# for AM654 controllers
|
||||
- ti,am654-cal
|
||||
|
||||
reg:
|
||||
minItems: 2
|
||||
items:
|
||||
- description: The CAL main register region
|
||||
- description: The RX Core0 (DPHY0) register region
|
||||
- description: The RX Core1 (DPHY1) register region
|
||||
|
||||
reg-names:
|
||||
minItems: 2
|
||||
items:
|
||||
- const: cal_top
|
||||
- const: cal_rx_core0
|
||||
- const: cal_rx_core1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
ti,camerrx-control:
|
||||
$ref: "/schemas/types.yaml#/definitions/phandle-array"
|
||||
description:
|
||||
phandle to the device control module and offset to the
|
||||
control_camerarx_core register
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
const: fck
|
||||
|
||||
power-domains:
|
||||
description:
|
||||
List of phandle and PM domain specifier as documented in
|
||||
Documentation/devicetree/bindings/power/power_domain.txt
|
||||
maxItems: 1
|
||||
|
||||
# See ./video-interfaces.txt for details
|
||||
ports:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
port@0:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
reg:
|
||||
const: 0
|
||||
description: CSI2 Port #0
|
||||
|
||||
patternProperties:
|
||||
endpoint:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
clock-lanes:
|
||||
maxItems: 1
|
||||
|
||||
data-lanes:
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
|
||||
remote-endpoint: true
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
port@1:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
reg:
|
||||
const: 1
|
||||
description: CSI2 Port #1
|
||||
|
||||
patternProperties:
|
||||
endpoint:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
clock-lanes:
|
||||
maxItems: 1
|
||||
|
||||
data-lanes:
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
|
||||
remote-endpoint: true
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
required:
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- port@0
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- interrupts
|
||||
- ti,camerrx-control
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
cal: cal@4845b000 {
|
||||
compatible = "ti,dra72-cal";
|
||||
reg = <0x4845B000 0x400>,
|
||||
<0x4845B800 0x40>,
|
||||
<0x4845B900 0x40>;
|
||||
reg-names = "cal_top",
|
||||
"cal_rx_core0",
|
||||
"cal_rx_core1";
|
||||
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
|
||||
ti,camerrx-control = <&scm_conf 0xE94>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
csi2_0: port@0 {
|
||||
reg = <0>;
|
||||
csi2_phy0: endpoint {
|
||||
remote-endpoint = <&csi2_cam0>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
i2c5: i2c@4807c000 {
|
||||
clock-frequency = <400000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
camera-sensor@3c {
|
||||
compatible = "ovti,ov5640";
|
||||
reg = <0x3c>;
|
||||
|
||||
clocks = <&clk_ov5640_fixed>;
|
||||
clock-names = "xclk";
|
||||
|
||||
port {
|
||||
csi2_cam0: endpoint {
|
||||
remote-endpoint = <&csi2_phy0>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
...
|
@@ -1,72 +0,0 @@
|
||||
Texas Instruments DRA72x CAMERA ADAPTATION LAYER (CAL)
|
||||
------------------------------------------------------
|
||||
|
||||
The Camera Adaptation Layer (CAL) is a key component for image capture
|
||||
applications. The capture module provides the system interface and the
|
||||
processing capability to connect CSI2 image-sensor modules to the
|
||||
DRA72x device.
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "ti,dra72-cal"
|
||||
- reg: CAL Top level, Receiver Core #0, Receiver Core #1 and Camera RX
|
||||
control address space
|
||||
- reg-names: cal_top, cal_rx_core0, cal_rx_core1, and camerrx_control
|
||||
registers
|
||||
- interrupts: should contain IRQ line for the CAL;
|
||||
|
||||
CAL supports 2 camera port nodes on MIPI bus. Each CSI2 camera port nodes
|
||||
should contain a 'port' child node with child 'endpoint' node. Please
|
||||
refer to the bindings defined in
|
||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
||||
|
||||
Example:
|
||||
cal: cal@4845b000 {
|
||||
compatible = "ti,dra72-cal";
|
||||
ti,hwmods = "cal";
|
||||
reg = <0x4845B000 0x400>,
|
||||
<0x4845B800 0x40>,
|
||||
<0x4845B900 0x40>,
|
||||
<0x4A002e94 0x4>;
|
||||
reg-names = "cal_top",
|
||||
"cal_rx_core0",
|
||||
"cal_rx_core1",
|
||||
"camerrx_control";
|
||||
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
csi2_0: port@0 {
|
||||
reg = <0>;
|
||||
endpoint {
|
||||
slave-mode;
|
||||
remote-endpoint = <&ar0330_1>;
|
||||
};
|
||||
};
|
||||
csi2_1: port@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
i2c5: i2c@4807c000 {
|
||||
ar0330@10 {
|
||||
compatible = "ti,ar0330";
|
||||
reg = <0x10>;
|
||||
|
||||
port {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ar0330_1: endpoint {
|
||||
reg = <0>;
|
||||
clock-lanes = <1>;
|
||||
data-lanes = <0 2 3 4>;
|
||||
remote-endpoint = <&csi2_0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@@ -1,7 +1,7 @@
|
||||
* AB8500 Multi-Functional Device (MFD)
|
||||
|
||||
Required parent device properties:
|
||||
- compatible : contains "stericsson,ab8500";
|
||||
- compatible : contains "stericsson,ab8500" or "stericsson,ab8505";
|
||||
- interrupts : contains the IRQ line for the AB8500
|
||||
- interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain)
|
||||
- #interrupt-cells : should be 2, for 2-cell format
|
||||
@@ -49,11 +49,13 @@ ab8500-charger : : vddadc : Charger interface
|
||||
: CH_WD_EXP : : Charger watchdog detected
|
||||
ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter
|
||||
SW_CONV_END : :
|
||||
ab8500-gpio : : : GPIO Controller
|
||||
ab8500-gpio : : : GPIO Controller (AB8500)
|
||||
ab8505-gpio : : : GPIO Controller (AB8505)
|
||||
ab8500-ponkey : ONKEY_DBF : : Power-on Key
|
||||
ONKEY_DBR : :
|
||||
ab8500-pwm : : : Pulse Width Modulator
|
||||
ab8500-regulator : : : Regulators
|
||||
ab8500-regulator : : : Regulators (AB8500)
|
||||
ab8505-regulator : : : Regulators (AB8505)
|
||||
ab8500-rtc : 60S : : Real Time Clock
|
||||
: ALARM : :
|
||||
ab8500-sysctrl : : : System Control
|
||||
|
@@ -1,10 +1,13 @@
|
||||
* Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)
|
||||
|
||||
Required properties for USART:
|
||||
- compatible: Should be "atmel,<chip>-usart" or "atmel,<chip>-dbgu"
|
||||
The compatible <chip> indicated will be the first SoC to support an
|
||||
additional mode or an USART new feature.
|
||||
For the dbgu UART, use "atmel,<chip>-dbgu", "atmel,<chip>-usart"
|
||||
- compatible: Should be one of the following:
|
||||
- "atmel,at91rm9200-usart"
|
||||
- "atmel,at91sam9260-usart"
|
||||
- "microchip,sam9x60-usart"
|
||||
- "atmel,at91rm9200-dbgu", "atmel,at91rm9200-usart"
|
||||
- "atmel,at91sam9260-dbgu", "atmel,at91sam9260-usart"
|
||||
- "microchip,sam9x60-dbgu", "microchip,sam9x60-usart"
|
||||
- reg: Should contain registers location and length
|
||||
- interrupts: Should contain interrupt
|
||||
- clock-names: tuple listing input clock names.
|
||||
|
@@ -13,6 +13,7 @@ da9062-rtc : : Real-Time Clock
|
||||
da9062-onkey : : On Key
|
||||
da9062-watchdog : : Watchdog Timer
|
||||
da9062-thermal : : Thermal
|
||||
da9062-gpio : : GPIOs
|
||||
|
||||
The DA9061 PMIC consists of:
|
||||
|
||||
@@ -38,6 +39,15 @@ Required properties:
|
||||
See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for
|
||||
further information on IRQ bindings.
|
||||
|
||||
Optional properties:
|
||||
|
||||
- gpio-controller : Marks the device as a gpio controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and the
|
||||
second cell is used to specify the gpio polarity.
|
||||
|
||||
See Documentation/devicetree/bindings/gpio/gpio.txt for further information on
|
||||
GPIO bindings.
|
||||
|
||||
Sub-nodes:
|
||||
|
||||
- regulators : This node defines the settings for the LDOs and BUCKs.
|
||||
|
@@ -5,6 +5,8 @@ Battery Charger and SFOUT LDO output for powering USB devices. It is
|
||||
interfaced to host controller using I2C.
|
||||
|
||||
MAX77836 additionally contains PMIC (with two LDO regulators) and Fuel Gauge.
|
||||
For the description of Fuel Gauge low SOC alert interrupt see:
|
||||
../power/supply/max17040_battery.txt
|
||||
|
||||
|
||||
Required properties:
|
||||
|
193
Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml
Normal file
193
Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml
Normal file
@@ -0,0 +1,193 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/rohm,bd71828-pmic.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ROHM BD71828 Power Management Integrated Circuit bindings
|
||||
|
||||
maintainers:
|
||||
- Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
|
||||
|
||||
description: |
|
||||
BD71828GW is a single-chip power management IC for battery-powered portable
|
||||
devices. The IC integrates 7 buck converters, 7 LDOs, and a 1500 mA
|
||||
single-cell linear charger. Also included is a Coulomb counter, a real-time
|
||||
clock (RTC), and a 32.768 kHz clock gate.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: rohm,bd71828
|
||||
|
||||
reg:
|
||||
description:
|
||||
I2C slave address.
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: |
|
||||
The first cell is the pin number and the second cell is used to specify
|
||||
flags. See ../gpio/gpio.txt for more information.
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
"#clock-cells":
|
||||
const: 0
|
||||
|
||||
rohm,charger-sense-resistor-ohms:
|
||||
minimum: 10000000
|
||||
maximum: 50000000
|
||||
description: |
|
||||
BD71827 and BD71828 have SAR ADC for measuring charging currents.
|
||||
External sense resistor (RSENSE in data sheet) should be used. If some
|
||||
other but 30MOhm resistor is used the resistance value should be given
|
||||
here in Ohms.
|
||||
|
||||
regulators:
|
||||
$ref: ../regulator/rohm,bd71828-regulator.yaml
|
||||
description:
|
||||
List of child nodes that specify the regulators.
|
||||
|
||||
leds:
|
||||
$ref: ../leds/rohm,bd71828-leds.yaml
|
||||
|
||||
gpio-reserved-ranges:
|
||||
description: |
|
||||
Usage of BD71828 GPIO pins can be changed via OTP. This property can be
|
||||
used to mark the pins which should not be configured for GPIO. Please see
|
||||
the ../gpio/gpio.txt for more information.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- "#clock-cells"
|
||||
- regulators
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pmic: pmic@4b {
|
||||
compatible = "rohm,bd71828";
|
||||
reg = <0x4b>;
|
||||
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
clocks = <&osc 0>;
|
||||
#clock-cells = <0>;
|
||||
clock-output-names = "bd71828-32k-out";
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-reserved-ranges = <0 1>, <2 1>;
|
||||
|
||||
rohm,charger-sense-resistor-ohms = <10000000>;
|
||||
|
||||
regulators {
|
||||
buck1: BUCK1 {
|
||||
regulator-name = "buck1";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-ramp-delay = <2500>;
|
||||
};
|
||||
buck2: BUCK2 {
|
||||
regulator-name = "buck2";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-ramp-delay = <2500>;
|
||||
};
|
||||
buck3: BUCK3 {
|
||||
regulator-name = "buck3";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
};
|
||||
buck4: BUCK4 {
|
||||
regulator-name = "buck4";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
buck5: BUCK5 {
|
||||
regulator-name = "buck5";
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
buck6: BUCK6 {
|
||||
regulator-name = "buck6";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-ramp-delay = <2500>;
|
||||
};
|
||||
buck7: BUCK7 {
|
||||
regulator-name = "buck7";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-ramp-delay = <2500>;
|
||||
};
|
||||
ldo1: LDO1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo2: LDO2 {
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo3: LDO3 {
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo4: LDO4 {
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo5: LDO5 {
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo6: LDO6 {
|
||||
regulator-name = "ldo6";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
ldo7_reg: LDO7 {
|
||||
regulator-name = "ldo7";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "rohm,bd71828-leds";
|
||||
|
||||
led-1 {
|
||||
rohm,led-compatible = "bd71828-grnled";
|
||||
function = LED_FUNCTION_INDICATOR;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
};
|
||||
led-2 {
|
||||
rohm,led-compatible = "bd71828-ambled";
|
||||
function = LED_FUNCTION_CHARGING;
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@@ -7,7 +7,22 @@ Required properties:
|
||||
- compatible: "ti,tps61050" or "ti,tps61052"
|
||||
- reg: Specifies the I2C slave address
|
||||
|
||||
Example:
|
||||
Optional sub-node:
|
||||
|
||||
This subnode selects the chip's operational mode.
|
||||
There can be at most one single available subnode.
|
||||
|
||||
- regulator: presence of this sub-node puts the chip in regulator mode.
|
||||
see ../regulator/regulator.yaml
|
||||
|
||||
- led: presence of this sub-node puts the chip in led mode.
|
||||
Optional properties:
|
||||
- function : see ../leds/common.txt
|
||||
- color : see ../leds/common.txt
|
||||
- label : see ../leds/common.txt
|
||||
(deprecated)
|
||||
|
||||
Example (GPIO operation only):
|
||||
|
||||
i2c0 {
|
||||
tps61052@33 {
|
||||
@@ -15,3 +30,33 @@ i2c0 {
|
||||
reg = <0x33>;
|
||||
};
|
||||
};
|
||||
|
||||
Example (GPIO + regulator operation):
|
||||
|
||||
i2c0 {
|
||||
tps61052@33 {
|
||||
compatible = "ti,tps61052";
|
||||
reg = <0x33>;
|
||||
|
||||
regulator {
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Example (GPIO + led operation):
|
||||
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
i2c0 {
|
||||
tps61052@33 {
|
||||
compatible = "ti,tps61052";
|
||||
reg = <0x33>;
|
||||
|
||||
led {
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
35
Documentation/devicetree/bindings/mips/ingenic/devices.yaml
Normal file
35
Documentation/devicetree/bindings/mips/ingenic/devices.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mips/ingenic/devices.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Ingenic XBurst based Platforms Device Tree Bindings
|
||||
|
||||
maintainers:
|
||||
- 周琰杰 (Zhou Yanjie) <zhouyanjie@wanyeetech.com>
|
||||
description: |
|
||||
Devices with a Ingenic XBurst CPU shall have the following properties.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
const: '/'
|
||||
compatible:
|
||||
oneOf:
|
||||
|
||||
- description: Qi Hardware Ben NanoNote
|
||||
items:
|
||||
- const: qi,lb60
|
||||
|
||||
- description: Game Consoles Worldwide GCW Zero
|
||||
items:
|
||||
- const: gcw,zero
|
||||
|
||||
- description: MIPS Creator CI20
|
||||
items:
|
||||
- const: img,ci20
|
||||
|
||||
- description: YSH & ATIL General Board CU Neo
|
||||
items:
|
||||
- const: yna,cu1000-neo
|
||||
...
|
@@ -14,6 +14,11 @@ Required properties:
|
||||
interface clock, and the ECC circuit clock.
|
||||
- clock-names: should contain "nand", "nand_x", "ecc"
|
||||
|
||||
Optional properties:
|
||||
- resets: may contain phandles to the controller core reset, the register
|
||||
reset
|
||||
- reset-names: may contain "nand", "reg"
|
||||
|
||||
Sub-nodes:
|
||||
Sub-nodes represent available NAND chips.
|
||||
|
||||
@@ -46,6 +51,8 @@ nand: nand@ff900000 {
|
||||
reg-names = "nand_data", "denali_reg";
|
||||
clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
|
||||
clock-names = "nand", "nand_x", "ecc";
|
||||
resets = <&nand_rst>, <&nand_reg_rst>;
|
||||
reset-names = "nand", "reg";
|
||||
interrupts = <0 144 4>;
|
||||
|
||||
nand@0 {
|
||||
|
97
Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
Normal file
97
Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
Normal file
@@ -0,0 +1,97 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pci/brcm,stb-pcie.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Brcmstb PCIe Host Controller Device Tree Bindings
|
||||
|
||||
maintainers:
|
||||
- Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/pci/pci-bus.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm2711-pcie # The Raspberry Pi 4
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
items:
|
||||
- description: PCIe host controller
|
||||
- description: builtin MSI controller
|
||||
|
||||
interrupt-names:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
items:
|
||||
- const: pcie
|
||||
- const: msi
|
||||
|
||||
ranges:
|
||||
maxItems: 1
|
||||
|
||||
dma-ranges:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: sw_pcie
|
||||
|
||||
msi-controller:
|
||||
description: Identifies the node as an MSI controller.
|
||||
|
||||
msi-parent:
|
||||
description: MSI controller the device is capable of using.
|
||||
|
||||
brcm,enable-ssc:
|
||||
description: Indicates usage of spread-spectrum clocking.
|
||||
type: boolean
|
||||
|
||||
required:
|
||||
- reg
|
||||
- dma-ranges
|
||||
- "#interrupt-cells"
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
- interrupt-map-mask
|
||||
- interrupt-map
|
||||
- msi-controller
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
scb {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
pcie0: pcie@7d500000 {
|
||||
compatible = "brcm,bcm2711-pcie";
|
||||
reg = <0x0 0x7d500000 0x9310>;
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "pcie", "msi";
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
|
||||
msi-parent = <&pcie0>;
|
||||
msi-controller;
|
||||
ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 0x0 0x04000000>;
|
||||
dma-ranges = <0x02000000 0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>;
|
||||
brcm,enable-ssc;
|
||||
};
|
||||
};
|
138
Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml
Normal file
138
Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml
Normal file
@@ -0,0 +1,138 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pci/intel-gw-pcie.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: PCIe RC controller on Intel Gateway SoCs
|
||||
|
||||
maintainers:
|
||||
- Dilip Kota <eswara.kota@linux.intel.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- const: intel,lgm-pcie
|
||||
- const: snps,dw-pcie
|
||||
|
||||
device_type:
|
||||
const: pci
|
||||
|
||||
"#address-cells":
|
||||
const: 3
|
||||
|
||||
"#size-cells":
|
||||
const: 2
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: Controller control and status registers.
|
||||
- description: PCIe configuration registers.
|
||||
- description: Controller application registers.
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: dbi
|
||||
- const: config
|
||||
- const: app
|
||||
|
||||
ranges:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
phys:
|
||||
maxItems: 1
|
||||
|
||||
phy-names:
|
||||
const: pcie
|
||||
|
||||
reset-gpios:
|
||||
maxItems: 1
|
||||
|
||||
linux,pci-domain: true
|
||||
|
||||
num-lanes:
|
||||
maximum: 2
|
||||
description: Number of lanes to use for this port.
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 1
|
||||
|
||||
interrupt-map-mask:
|
||||
description: Standard PCI IRQ mapping properties.
|
||||
|
||||
interrupt-map:
|
||||
description: Standard PCI IRQ mapping properties.
|
||||
|
||||
max-link-speed:
|
||||
description: Specify PCI Gen for link capability.
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
- enum: [ 1, 2, 3, 4 ]
|
||||
- default: 1
|
||||
|
||||
bus-range:
|
||||
description: Range of bus numbers associated with this controller.
|
||||
|
||||
reset-assert-ms:
|
||||
description: |
|
||||
Delay after asserting reset to the PCIe device.
|
||||
maximum: 500
|
||||
default: 100
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- device_type
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- reg
|
||||
- reg-names
|
||||
- ranges
|
||||
- resets
|
||||
- clocks
|
||||
- phys
|
||||
- phy-names
|
||||
- reset-gpios
|
||||
- '#interrupt-cells'
|
||||
- interrupt-map
|
||||
- interrupt-map-mask
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/clock/intel,lgm-clk.h>
|
||||
pcie10: pcie@d0e00000 {
|
||||
compatible = "intel,lgm-pcie", "snps,dw-pcie";
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
reg = <0xd0e00000 0x1000>,
|
||||
<0xd2000000 0x800000>,
|
||||
<0xd0a41000 0x1000>;
|
||||
reg-names = "dbi", "config", "app";
|
||||
linux,pci-domain = <0>;
|
||||
max-link-speed = <4>;
|
||||
bus-range = <0x00 0x08>;
|
||||
interrupt-parent = <&ioapic1>;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0x7>;
|
||||
interrupt-map = <0 0 0 1 &ioapic1 27 1>,
|
||||
<0 0 0 2 &ioapic1 28 1>,
|
||||
<0 0 0 3 &ioapic1 29 1>,
|
||||
<0 0 0 4 &ioapic1 30 1>;
|
||||
ranges = <0x02000000 0 0xd4000000 0xd4000000 0 0x04000000>;
|
||||
resets = <&rcu0 0x50 0>;
|
||||
clocks = <&cgu0 LGM_GCLK_PCIE10>;
|
||||
phys = <&cb0phy0>;
|
||||
phy-names = "pcie";
|
||||
reset-assert-ms = <500>;
|
||||
reset-gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
|
||||
num-lanes = <2>;
|
||||
};
|
@@ -11,6 +11,7 @@
|
||||
- "qcom,pcie-ipq4019" for ipq4019
|
||||
- "qcom,pcie-ipq8074" for ipq8074
|
||||
- "qcom,pcie-qcs404" for qcs404
|
||||
- "qcom,pcie-sdm845" for sdm845
|
||||
|
||||
- reg:
|
||||
Usage: required
|
||||
@@ -126,6 +127,18 @@
|
||||
- "master_bus" AXI Master clock
|
||||
- "slave_bus" AXI Slave clock
|
||||
|
||||
-clock-names:
|
||||
Usage: required for sdm845
|
||||
Value type: <stringlist>
|
||||
Definition: Should contain the following entries
|
||||
- "aux" Auxiliary clock
|
||||
- "cfg" Configuration clock
|
||||
- "bus_master" Master AXI clock
|
||||
- "bus_slave" Slave AXI clock
|
||||
- "slave_q2a" Slave Q2A clock
|
||||
- "tbu" PCIe TBU clock
|
||||
- "pipe" PIPE clock
|
||||
|
||||
- resets:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
@@ -188,6 +201,12 @@
|
||||
- "pwr" PWR reset
|
||||
- "ahb" AHB reset
|
||||
|
||||
- reset-names:
|
||||
Usage: required for sdm845
|
||||
Value type: <stringlist>
|
||||
Definition: Should contain the following entries
|
||||
- "pci" PCIe core reset
|
||||
|
||||
- power-domains:
|
||||
Usage: required for apq8084 and msm8996/apq8096
|
||||
Value type: <prop-encoded-array>
|
||||
|
36
Documentation/devicetree/bindings/remoteproc/mtk,scp.txt
Normal file
36
Documentation/devicetree/bindings/remoteproc/mtk,scp.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
Mediatek SCP Bindings
|
||||
----------------------------------------
|
||||
|
||||
This binding provides support for ARM Cortex M4 Co-processor found on some
|
||||
Mediatek SoCs.
|
||||
|
||||
Required properties:
|
||||
- compatible Should be "mediatek,mt8183-scp"
|
||||
- reg Should contain the address ranges for the two memory
|
||||
regions, SRAM and CFG.
|
||||
- reg-names Contains the corresponding names for the two memory
|
||||
regions. These should be named "sram" & "cfg".
|
||||
- clocks Clock for co-processor (See: ../clock/clock-bindings.txt)
|
||||
- clock-names Contains the corresponding name for the clock. This
|
||||
should be named "main".
|
||||
|
||||
Subnodes
|
||||
--------
|
||||
|
||||
Subnodes of the SCP represent rpmsg devices. The names of the devices are not
|
||||
important. The properties of these nodes are defined by the individual bindings
|
||||
for the rpmsg devices - but must contain the following property:
|
||||
|
||||
- mtk,rpmsg-name Contains the name for the rpmsg device. Used to match
|
||||
the subnode to rpmsg device announced by SCP.
|
||||
|
||||
Example:
|
||||
|
||||
scp: scp@10500000 {
|
||||
compatible = "mediatek,mt8183-scp";
|
||||
reg = <0 0x10500000 0 0x80000>,
|
||||
<0 0x105c0000 0 0x5000>;
|
||||
reg-names = "sram", "cfg";
|
||||
clocks = <&infracfg CLK_INFRA_SCPSYS>;
|
||||
clock-names = "main";
|
||||
};
|
@@ -10,11 +10,17 @@ on the Qualcomm ADSP Hexagon core.
|
||||
"qcom,msm8974-adsp-pil"
|
||||
"qcom,msm8996-adsp-pil"
|
||||
"qcom,msm8996-slpi-pil"
|
||||
"qcom,msm8998-adsp-pas"
|
||||
"qcom,msm8998-slpi-pas"
|
||||
"qcom,qcs404-adsp-pas"
|
||||
"qcom,qcs404-cdsp-pas"
|
||||
"qcom,qcs404-wcss-pas"
|
||||
"qcom,sdm845-adsp-pas"
|
||||
"qcom,sdm845-cdsp-pas"
|
||||
"qcom,sm8150-adsp-pas"
|
||||
"qcom,sm8150-cdsp-pas"
|
||||
"qcom,sm8150-mpss-pas"
|
||||
"qcom,sm8150-slpi-pas"
|
||||
|
||||
- interrupts-extended:
|
||||
Usage: required
|
||||
@@ -29,12 +35,18 @@ on the Qualcomm ADSP Hexagon core.
|
||||
qcom,msm8974-adsp-pil:
|
||||
qcom,msm8996-adsp-pil:
|
||||
qcom,msm8996-slpi-pil:
|
||||
qcom,msm8998-adsp-pas:
|
||||
qcom,msm8998-slpi-pas:
|
||||
qcom,qcs404-adsp-pas:
|
||||
qcom,qcs404-cdsp-pas:
|
||||
qcom,sdm845-adsp-pas:
|
||||
qcom,sdm845-cdsp-pas:
|
||||
qcom,sm8150-adsp-pas:
|
||||
qcom,sm8150-cdsp-pas:
|
||||
qcom,sm8150-slpi-pas:
|
||||
must be "wdog", "fatal", "ready", "handover", "stop-ack"
|
||||
qcom,qcs404-wcss-pas:
|
||||
qcom,sm8150-mpss-pas:
|
||||
must be "wdog", "fatal", "ready", "handover", "stop-ack",
|
||||
"shutdown-ack"
|
||||
|
||||
@@ -67,6 +79,38 @@ on the Qualcomm ADSP Hexagon core.
|
||||
Definition: reference to the px regulator to be held on behalf of the
|
||||
booting Hexagon core
|
||||
|
||||
- power-domains:
|
||||
Usage: required
|
||||
Value type: <phandle>
|
||||
Definition: reference to power-domains that match the power-domain-names
|
||||
|
||||
- power-domain-names:
|
||||
Usage: required
|
||||
Value type: <stringlist>
|
||||
Definition: The power-domains needed depend on the compatible string:
|
||||
qcom,msm8974-adsp-pil:
|
||||
qcom,msm8996-adsp-pil:
|
||||
qcom,msm8998-adsp-pas:
|
||||
must be "cx"
|
||||
qcom,msm8996-slpi-pil:
|
||||
must be "ss_cx"
|
||||
qcom,msm8998-slpi-pas:
|
||||
must be "ssc_cx"
|
||||
qcom,qcs404-adsp-pas:
|
||||
must be "lpi_cx"
|
||||
qcom,qcs404-cdsp-pas:
|
||||
qcom,qcs404-wcss-pas:
|
||||
must be "mx"
|
||||
qcom,sdm845-adsp-pas:
|
||||
qcom,sdm845-cdsp-pas:
|
||||
qcom,sm8150-adsp-pas:
|
||||
qcom,sm8150-cdsp-pas:
|
||||
must be "cx", "load_state"
|
||||
qcom,sm8150-mpss-pas:
|
||||
must be "cx", "load_state", "mss"
|
||||
qcom,sm8150-slpi-pas:
|
||||
must be "lcx", "lmx", "load_state"
|
||||
|
||||
- memory-region:
|
||||
Usage: required
|
||||
Value type: <phandle>
|
||||
|
@@ -13,6 +13,7 @@ on the Qualcomm Hexagon core.
|
||||
"qcom,msm8974-mss-pil"
|
||||
"qcom,msm8996-mss-pil"
|
||||
"qcom,msm8998-mss-pil"
|
||||
"qcom,sc7180-mss-pil"
|
||||
"qcom,sdm845-mss-pil"
|
||||
|
||||
- reg:
|
||||
@@ -43,6 +44,7 @@ on the Qualcomm Hexagon core.
|
||||
must be "wdog", "fatal", "ready", "handover", "stop-ack"
|
||||
qcom,msm8996-mss-pil:
|
||||
qcom,msm8998-mss-pil:
|
||||
qcom,sc7180-mss-pil:
|
||||
qcom,sdm845-mss-pil:
|
||||
must be "wdog", "fatal", "ready", "handover", "stop-ack",
|
||||
"shutdown-ack"
|
||||
@@ -75,6 +77,9 @@ on the Qualcomm Hexagon core.
|
||||
qcom,msm8998-mss-pil:
|
||||
must be "iface", "bus", "mem", "xo", "gpll0_mss",
|
||||
"snoc_axi", "mnoc_axi", "qdss"
|
||||
qcom,sc7180-mss-pil:
|
||||
must be "iface", "bus", "xo", "snoc_axi", "mnoc_axi",
|
||||
"mss_crypto", "mss_nav", "nav"
|
||||
qcom,sdm845-mss-pil:
|
||||
must be "iface", "bus", "mem", "xo", "gpll0_mss",
|
||||
"snoc_axi", "mnoc_axi", "prng"
|
||||
@@ -86,7 +91,7 @@ on the Qualcomm Hexagon core.
|
||||
reference to the list of 3 reset-controllers for the
|
||||
wcss sub-system
|
||||
reference to the list of 2 reset-controllers for the modem
|
||||
sub-system on SDM845 SoCs
|
||||
sub-system on SC7180, SDM845 SoCs
|
||||
|
||||
- reset-names:
|
||||
Usage: required
|
||||
@@ -95,7 +100,7 @@ on the Qualcomm Hexagon core.
|
||||
must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
|
||||
for the wcss sub-system
|
||||
must be "mss_restart", "pdc_reset" for the modem
|
||||
sub-system on SDM845 SoCs
|
||||
sub-system on SC7180, SDM845 SoCs
|
||||
|
||||
For the compatible strings below the following supplies are required:
|
||||
"qcom,q6v5-pil"
|
||||
@@ -144,6 +149,7 @@ For the compatible string below the following supplies are required:
|
||||
qcom,msm8996-mss-pil:
|
||||
qcom,msm8998-mss-pil:
|
||||
must be "cx", "mx"
|
||||
qcom,sc7180-mss-pil:
|
||||
qcom,sdm845-mss-pil:
|
||||
must be "cx", "mx", "mss", "load_state"
|
||||
|
||||
@@ -165,6 +171,19 @@ For the compatible string below the following supplies are required:
|
||||
by the three offsets within syscon for q6, modem and nc
|
||||
halt registers.
|
||||
|
||||
For the compatible strings below the following phandle references are required:
|
||||
"qcom,sc7180-mss-pil"
|
||||
- qcom,halt-nav-regs:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: reference to a list of 2 phandles with one offset each for
|
||||
the modem sub-system running on SC7180 SoC. The first
|
||||
phandle reference is to the mss clock node followed by the
|
||||
offset within register space for nav halt register. The
|
||||
second phandle reference is to a syscon representing TCSR
|
||||
followed by the offset within syscon for conn_box_spare0
|
||||
register.
|
||||
|
||||
= SUBNODES:
|
||||
The Hexagon node must contain two subnodes, named "mba" and "mpss" representing
|
||||
the memory regions used by the Hexagon firmware. Each sub-node must contain:
|
||||
|
@@ -1,17 +0,0 @@
|
||||
Atmel AT91RM9200 Real Time Clock
|
||||
|
||||
Required properties:
|
||||
- compatible: should be: "atmel,at91rm9200-rtc" or "atmel,at91sam9x5-rtc"
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: rtc alarm/event interrupt
|
||||
- clocks: phandle to input clock.
|
||||
|
||||
Example:
|
||||
|
||||
rtc@fffffe00 {
|
||||
compatible = "atmel,at91rm9200-rtc";
|
||||
reg = <0xfffffe00 0x100>;
|
||||
interrupts = <1 4 7>;
|
||||
clocks = <&clk32k>;
|
||||
};
|
@@ -0,0 +1,49 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/rtc/atmel,at91rm9200-rtc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Atmel AT91 RTC Device Tree Bindings
|
||||
|
||||
allOf:
|
||||
- $ref: "rtc.yaml#"
|
||||
|
||||
maintainers:
|
||||
- Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- atmel,at91rm9200-rtc
|
||||
- atmel,at91sam9x5-rtc
|
||||
- atmel,sama5d4-rtc
|
||||
- atmel,sama5d2-rtc
|
||||
- microchip,sam9x60-rtc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
rtc@fffffe00 {
|
||||
compatible = "atmel,at91rm9200-rtc";
|
||||
reg = <0xfffffe00 0x100>;
|
||||
interrupts = <1 4 7>;
|
||||
clocks = <&clk32k>;
|
||||
};
|
||||
...
|
@@ -555,6 +555,8 @@ patternProperties:
|
||||
description: Logic PD, Inc.
|
||||
"^longcheer,.*":
|
||||
description: Longcheer Technology (Shanghai) Co., Ltd.
|
||||
"^loongson,.*":
|
||||
description: Loongson Technology Corporation Limited
|
||||
"^lsi,.*":
|
||||
description: LSI Corp. (LSI Logic)
|
||||
"^lwn,.*":
|
||||
@@ -1084,6 +1086,8 @@ patternProperties:
|
||||
description: Shenzhen Xunlong Software CO.,Limited
|
||||
"^xylon,.*":
|
||||
description: Xylon
|
||||
"^yna,.*":
|
||||
description: YSH & ATIL
|
||||
"^yones-toptech,.*":
|
||||
description: Yones Toptech Co., Ltd.
|
||||
"^ysoft,.*":
|
||||
|
@@ -65,6 +65,8 @@ We use a fixed duration of idle injection that gives an acceptable
|
||||
performance penalty and a fixed latency. Mitigation can be increased
|
||||
or decreased by modulating the duty cycle of the idle injection.
|
||||
|
||||
::
|
||||
|
||||
^
|
||||
|
|
||||
|
|
||||
@@ -91,6 +93,8 @@ computed.
|
||||
The governor will change the cooling device state thus the duty cycle
|
||||
and this variation will modulate the cooling effect.
|
||||
|
||||
::
|
||||
|
||||
^
|
||||
|
|
||||
|
|
||||
@@ -154,6 +158,7 @@ equation:
|
||||
|
||||
P(opp)target = ((Trunning x (P(opp)running) + (Tidle x P(opp)idle)) /
|
||||
(Trunning + Tidle)
|
||||
|
||||
...
|
||||
|
||||
Tidle = Trunning x ((P(opp)running / P(opp)target) - 1)
|
||||
|
@@ -7,7 +7,7 @@
|
||||
| arch |status|
|
||||
-----------------------
|
||||
| alpha: | TODO |
|
||||
| arc: | TODO |
|
||||
| arc: | ok |
|
||||
| arm: | ok |
|
||||
| arm64: | ok |
|
||||
| c6x: | TODO |
|
||||
|
@@ -235,6 +235,17 @@ checkpoint=%s[:%u[%]] Set to "disable" to turn off checkpointing. Set to "en
|
||||
hide up to all remaining free space. The actual space that
|
||||
would be unusable can be viewed at /sys/fs/f2fs/<disk>/unusable
|
||||
This space is reclaimed once checkpoint=enable.
|
||||
compress_algorithm=%s Control compress algorithm, currently f2fs supports "lzo"
|
||||
and "lz4" algorithm.
|
||||
compress_log_size=%u Support configuring compress cluster size, the size will
|
||||
be 4KB * (1 << %u), 16KB is minimum size, also it's
|
||||
default size.
|
||||
compress_extension=%s Support adding specified extension, so that f2fs can enable
|
||||
compression on those corresponding files, e.g. if all files
|
||||
with '.ext' has high compression rate, we can set the '.ext'
|
||||
on compression extension list and enable compression on
|
||||
these file by default rather than to enable it via ioctl.
|
||||
For other files, we can still enable compression via ioctl.
|
||||
|
||||
================================================================================
|
||||
DEBUGFS ENTRIES
|
||||
@@ -259,170 +270,6 @@ The files in each per-device directory are shown in table below.
|
||||
|
||||
Files in /sys/fs/f2fs/<devname>
|
||||
(see also Documentation/ABI/testing/sysfs-fs-f2fs)
|
||||
..............................................................................
|
||||
File Content
|
||||
|
||||
gc_urgent_sleep_time This parameter controls sleep time for gc_urgent.
|
||||
500 ms is set by default. See above gc_urgent.
|
||||
|
||||
gc_min_sleep_time This tuning parameter controls the minimum sleep
|
||||
time for the garbage collection thread. Time is
|
||||
in milliseconds.
|
||||
|
||||
gc_max_sleep_time This tuning parameter controls the maximum sleep
|
||||
time for the garbage collection thread. Time is
|
||||
in milliseconds.
|
||||
|
||||
gc_no_gc_sleep_time This tuning parameter controls the default sleep
|
||||
time for the garbage collection thread. Time is
|
||||
in milliseconds.
|
||||
|
||||
gc_idle This parameter controls the selection of victim
|
||||
policy for garbage collection. Setting gc_idle = 0
|
||||
(default) will disable this option. Setting
|
||||
gc_idle = 1 will select the Cost Benefit approach
|
||||
& setting gc_idle = 2 will select the greedy approach.
|
||||
|
||||
gc_urgent This parameter controls triggering background GCs
|
||||
urgently or not. Setting gc_urgent = 0 [default]
|
||||
makes back to default behavior, while if it is set
|
||||
to 1, background thread starts to do GC by given
|
||||
gc_urgent_sleep_time interval.
|
||||
|
||||
reclaim_segments This parameter controls the number of prefree
|
||||
segments to be reclaimed. If the number of prefree
|
||||
segments is larger than the number of segments
|
||||
in the proportion to the percentage over total
|
||||
volume size, f2fs tries to conduct checkpoint to
|
||||
reclaim the prefree segments to free segments.
|
||||
By default, 5% over total # of segments.
|
||||
|
||||
main_blkaddr This value gives the first block address of
|
||||
MAIN area in the partition.
|
||||
|
||||
max_small_discards This parameter controls the number of discard
|
||||
commands that consist small blocks less than 2MB.
|
||||
The candidates to be discarded are cached until
|
||||
checkpoint is triggered, and issued during the
|
||||
checkpoint. By default, it is disabled with 0.
|
||||
|
||||
discard_granularity This parameter controls the granularity of discard
|
||||
command size. It will issue discard commands iif
|
||||
the size is larger than given granularity. Its
|
||||
unit size is 4KB, and 4 (=16KB) is set by default.
|
||||
The maximum value is 128 (=512KB).
|
||||
|
||||
reserved_blocks This parameter indicates the number of blocks that
|
||||
f2fs reserves internally for root.
|
||||
|
||||
batched_trim_sections This parameter controls the number of sections
|
||||
to be trimmed out in batch mode when FITRIM
|
||||
conducts. 32 sections is set by default.
|
||||
|
||||
ipu_policy This parameter controls the policy of in-place
|
||||
updates in f2fs. There are five policies:
|
||||
0x01: F2FS_IPU_FORCE, 0x02: F2FS_IPU_SSR,
|
||||
0x04: F2FS_IPU_UTIL, 0x08: F2FS_IPU_SSR_UTIL,
|
||||
0x10: F2FS_IPU_FSYNC.
|
||||
|
||||
min_ipu_util This parameter controls the threshold to trigger
|
||||
in-place-updates. The number indicates percentage
|
||||
of the filesystem utilization, and used by
|
||||
F2FS_IPU_UTIL and F2FS_IPU_SSR_UTIL policies.
|
||||
|
||||
min_fsync_blocks This parameter controls the threshold to trigger
|
||||
in-place-updates when F2FS_IPU_FSYNC mode is set.
|
||||
The number indicates the number of dirty pages
|
||||
when fsync needs to flush on its call path. If
|
||||
the number is less than this value, it triggers
|
||||
in-place-updates.
|
||||
|
||||
min_seq_blocks This parameter controls the threshold to serialize
|
||||
write IOs issued by multiple threads in parallel.
|
||||
|
||||
min_hot_blocks This parameter controls the threshold to allocate
|
||||
a hot data log for pending data blocks to write.
|
||||
|
||||
min_ssr_sections This parameter adds the threshold when deciding
|
||||
SSR block allocation. If this is large, SSR mode
|
||||
will be enabled early.
|
||||
|
||||
ram_thresh This parameter controls the memory footprint used
|
||||
by free nids and cached nat entries. By default,
|
||||
1 is set, which indicates 10 MB / 1 GB RAM.
|
||||
|
||||
ra_nid_pages When building free nids, F2FS reads NAT blocks
|
||||
ahead for speed up. Default is 0.
|
||||
|
||||
dirty_nats_ratio Given dirty ratio of cached nat entries, F2FS
|
||||
determines flushing them in background.
|
||||
|
||||
max_victim_search This parameter controls the number of trials to
|
||||
find a victim segment when conducting SSR and
|
||||
cleaning operations. The default value is 4096
|
||||
which covers 8GB block address range.
|
||||
|
||||
migration_granularity For large-sized sections, F2FS can stop GC given
|
||||
this granularity instead of reclaiming entire
|
||||
section.
|
||||
|
||||
dir_level This parameter controls the directory level to
|
||||
support large directory. If a directory has a
|
||||
number of files, it can reduce the file lookup
|
||||
latency by increasing this dir_level value.
|
||||
Otherwise, it needs to decrease this value to
|
||||
reduce the space overhead. The default value is 0.
|
||||
|
||||
cp_interval F2FS tries to do checkpoint periodically, 60 secs
|
||||
by default.
|
||||
|
||||
idle_interval F2FS detects system is idle, if there's no F2FS
|
||||
operations during given interval, 5 secs by
|
||||
default.
|
||||
|
||||
discard_idle_interval F2FS detects the discard thread is idle, given
|
||||
time interval. Default is 5 secs.
|
||||
|
||||
gc_idle_interval F2FS detects the GC thread is idle, given time
|
||||
interval. Default is 5 secs.
|
||||
|
||||
umount_discard_timeout When unmounting the disk, F2FS waits for finishing
|
||||
queued discard commands which can take huge time.
|
||||
This gives time out for it, 5 secs by default.
|
||||
|
||||
iostat_enable This controls to enable/disable iostat in F2FS.
|
||||
|
||||
readdir_ra This enables/disabled readahead of inode blocks
|
||||
in readdir, and default is enabled.
|
||||
|
||||
gc_pin_file_thresh This indicates how many GC can be failed for the
|
||||
pinned file. If it exceeds this, F2FS doesn't
|
||||
guarantee its pinning state. 2048 trials is set
|
||||
by default.
|
||||
|
||||
extension_list This enables to change extension_list for hot/cold
|
||||
files in runtime.
|
||||
|
||||
inject_rate This controls injection rate of arbitrary faults.
|
||||
|
||||
inject_type This controls injection type of arbitrary faults.
|
||||
|
||||
dirty_segments This shows # of dirty segments.
|
||||
|
||||
lifetime_write_kbytes This shows # of data written to the disk.
|
||||
|
||||
features This shows current features enabled on F2FS.
|
||||
|
||||
current_reserved_blocks This shows # of blocks currently reserved.
|
||||
|
||||
unusable If checkpoint=disable, this shows the number of
|
||||
blocks that are unusable.
|
||||
If checkpoint=enable it shows the number of blocks
|
||||
that would be unusable if checkpoint=disable were
|
||||
to be set.
|
||||
|
||||
encoding This shows the encoding used for casefolding.
|
||||
If casefolding is not enabled, returns (none)
|
||||
|
||||
================================================================================
|
||||
USAGE
|
||||
@@ -840,3 +687,44 @@ zero or random data, which is useful to the below scenario where:
|
||||
4. address = fibmap(fd, offset)
|
||||
5. open(blkdev)
|
||||
6. write(blkdev, address)
|
||||
|
||||
Compression implementation
|
||||
--------------------------
|
||||
|
||||
- New term named cluster is defined as basic unit of compression, file can
|
||||
be divided into multiple clusters logically. One cluster includes 4 << n
|
||||
(n >= 0) logical pages, compression size is also cluster size, each of
|
||||
cluster can be compressed or not.
|
||||
|
||||
- In cluster metadata layout, one special block address is used to indicate
|
||||
cluster is compressed one or normal one, for compressed cluster, following
|
||||
metadata maps cluster to [1, 4 << n - 1] physical blocks, in where f2fs
|
||||
stores data including compress header and compressed data.
|
||||
|
||||
- In order to eliminate write amplification during overwrite, F2FS only
|
||||
support compression on write-once file, data can be compressed only when
|
||||
all logical blocks in file are valid and cluster compress ratio is lower
|
||||
than specified threshold.
|
||||
|
||||
- To enable compression on regular inode, there are three ways:
|
||||
* chattr +c file
|
||||
* chattr +c dir; touch dir/file
|
||||
* mount w/ -o compress_extension=ext; touch file.ext
|
||||
|
||||
Compress metadata layout:
|
||||
[Dnode Structure]
|
||||
+-----------------------------------------------+
|
||||
| cluster 1 | cluster 2 | ......... | cluster N |
|
||||
+-----------------------------------------------+
|
||||
. . . .
|
||||
. . . .
|
||||
. Compressed Cluster . . Normal Cluster .
|
||||
+----------+---------+---------+---------+ +---------+---------+---------+---------+
|
||||
|compr flag| block 1 | block 2 | block 3 | | block 1 | block 2 | block 3 | block 4 |
|
||||
+----------+---------+---------+---------+ +---------+---------+---------+---------+
|
||||
. .
|
||||
. .
|
||||
. .
|
||||
+-------------+-------------+----------+----------------------------+
|
||||
| data length | data chksum | reserved | compressed data |
|
||||
+-------------+-------------+----------+----------------------------+
|
||||
|
@@ -591,7 +591,8 @@ The two different resolutions for b) can be tested in the sample Kconfig file
|
||||
Documentation/kbuild/Kconfig.recursion-issue-02.
|
||||
|
||||
Below is a list of examples of prior fixes for these types of recursive issues;
|
||||
all errors appear to involve one or more select's and one or more "depends on".
|
||||
all errors appear to involve one or more "select" statements and one or more
|
||||
"depends on".
|
||||
|
||||
============ ===================================
|
||||
commit fix
|
||||
@@ -653,7 +654,7 @@ the use of the xconfig configurator [1]_. Work should be done to confirm if
|
||||
the deduced semantics matches our intended Kconfig design goals.
|
||||
|
||||
Having well defined semantics can be useful for tools for practical
|
||||
evaluation of depenencies, for instance one such use known case was work to
|
||||
evaluation of dependencies, for instance one such case was work to
|
||||
express in boolean abstraction of the inferred semantics of Kconfig to
|
||||
translate Kconfig logic into boolean formulas and run a SAT solver on this to
|
||||
find dead code / features (always inactive), 114 dead features were found in
|
||||
@@ -680,7 +681,7 @@ abstraction the inferred semantics of Kconfig to translate Kconfig logic into
|
||||
boolean formulas and run a SAT solver on it [5]_. Another known related project
|
||||
is CADOS [6]_ (former VAMOS [7]_) and the tools, mainly undertaker [8]_, which
|
||||
has been introduced first with [9]_. The basic concept of undertaker is to
|
||||
exract variability models from Kconfig, and put them together with a
|
||||
extract variability models from Kconfig and put them together with a
|
||||
propositional formula extracted from CPP #ifdefs and build-rules into a SAT
|
||||
solver in order to find dead code, dead files, and dead symbols. If using a SAT
|
||||
solver is desirable on Kconfig one approach would be to evaluate repurposing
|
||||
|
@@ -154,11 +154,6 @@ KCONFIG_AUTOCONFIG
|
||||
This environment variable can be set to specify the path & name of the
|
||||
"auto.conf" file. Its default value is "include/config/auto.conf".
|
||||
|
||||
KCONFIG_TRISTATE
|
||||
----------------
|
||||
This environment variable can be set to specify the path & name of the
|
||||
"tristate.conf" file. Its default value is "include/config/tristate.conf".
|
||||
|
||||
KCONFIG_AUTOHEADER
|
||||
------------------
|
||||
This environment variable can be set to specify the path & name of the
|
||||
|
@@ -15,8 +15,8 @@ The header file for this API is named ``dvb_frontend.h`` and located in
|
||||
Demodulator driver
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The demodulator driver is responsible to talk with the decoding part of the
|
||||
hardware. Such driver should implement :c:type:`dvb_frontend_ops`, with
|
||||
The demodulator driver is responsible for talking with the decoding part of the
|
||||
hardware. Such driver should implement :c:type:`dvb_frontend_ops`, which
|
||||
tells what type of digital TV standards are supported, and points to a
|
||||
series of functions that allow the DVB core to command the hardware via
|
||||
the code under ``include/media/dvb_frontend.c``.
|
||||
@@ -120,7 +120,7 @@ Satellite TV reception is::
|
||||
|
||||
.. |delta| unicode:: U+00394
|
||||
|
||||
The ``include/media/dvb_frontend.c`` has a kernel thread with is
|
||||
The ``include/media/dvb_frontend.c`` has a kernel thread which is
|
||||
responsible for tuning the device. It supports multiple algorithms to
|
||||
detect a channel, as defined at enum :c:func:`dvbfe_algo`.
|
||||
|
||||
@@ -220,11 +220,11 @@ Signal strength (:ref:`DTV-STAT-SIGNAL-STRENGTH`)
|
||||
- As the gain is visible through the set of registers that adjust the gain,
|
||||
typically, this statistics is always available [#f3]_.
|
||||
|
||||
- Drivers should try to make it available all the times, as this statistics
|
||||
- Drivers should try to make it available all the times, as these statistics
|
||||
can be used when adjusting an antenna position and to check for troubles
|
||||
at the cabling.
|
||||
|
||||
.. [#f3] On a few devices, the gain keeps floating if no carrier.
|
||||
.. [#f3] On a few devices, the gain keeps floating if there is no carrier.
|
||||
On such devices, strength report should check first if carrier is
|
||||
detected at the tuner (``FE_HAS_CARRIER``, see :c:type:`fe_status`),
|
||||
and otherwise return the lowest possible value.
|
||||
@@ -232,7 +232,7 @@ Signal strength (:ref:`DTV-STAT-SIGNAL-STRENGTH`)
|
||||
Carrier Signal to Noise ratio (:ref:`DTV-STAT-CNR`)
|
||||
- Signal to Noise ratio for the main carrier.
|
||||
|
||||
- Signal to Noise measurement depends on the device. On some hardware, is
|
||||
- Signal to Noise measurement depends on the device. On some hardware, it is
|
||||
available when the main carrier is detected. On those hardware, CNR
|
||||
measurement usually comes from the tuner (e. g. after ``FE_HAS_CARRIER``,
|
||||
see :c:type:`fe_status`).
|
||||
@@ -323,8 +323,8 @@ A typical example of the logic that handle status and statistics is::
|
||||
.read_status = foo_get_status_and_stats,
|
||||
};
|
||||
|
||||
Statistics collect
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
Statistics collection
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
On almost all frontend hardware, the bit and byte counts are stored by
|
||||
the hardware after a certain amount of time or after the total bit/block
|
||||
|
@@ -177,7 +177,7 @@ Available follower modes are:
|
||||
- ``CEC_MODE_MONITOR``
|
||||
- 0xe0
|
||||
- Put the file descriptor into monitor mode. Can only be used in
|
||||
combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`,i
|
||||
combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`,
|
||||
otherwise the ``EINVAL`` error code will be returned.
|
||||
In monitor mode all messages this CEC
|
||||
device transmits and all messages it receives (both broadcast
|
||||
|
@@ -81,7 +81,7 @@ for this ioctl call.
|
||||
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
||||
#define VIDEO_EVENT_DECODER_STOPPED 3
|
||||
#define VIDEO_EVENT_VSYNC 4
|
||||
__kernel_time_t timestamp;
|
||||
long timestamp;
|
||||
union {
|
||||
video_size_t size;
|
||||
unsigned int frame_rate; /* in frames per 1000sec */
|
||||
|
@@ -170,7 +170,7 @@ VIDEO_GET_EVENT call.
|
||||
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
||||
#define VIDEO_EVENT_DECODER_STOPPED 3
|
||||
#define VIDEO_EVENT_VSYNC 4
|
||||
__kernel_time_t timestamp;
|
||||
long timestamp;
|
||||
union {
|
||||
video_size_t size;
|
||||
unsigned int frame_rate; /* in frames per 1000sec */
|
||||
|
@@ -55,8 +55,7 @@ please make a proposal on the linux-media mailing list.
|
||||
|
||||
- ``V4L2_PIX_FMT_HM12``
|
||||
- 'HM12'
|
||||
- YUV 4:2:0 format used by the IVTV driver,
|
||||
`http://www.ivtvdriver.org/ <http://www.ivtvdriver.org/>`__
|
||||
- YUV 4:2:0 format used by the IVTV driver.
|
||||
|
||||
The format is documented in the kernel sources in the file
|
||||
``Documentation/media/v4l-drivers/cx2341x.rst``
|
||||
|
@@ -13,7 +13,7 @@
|
||||
.. _v4l2-pix-fmt-sgrbg12p:
|
||||
|
||||
*******************************************************************************************************************************
|
||||
V4L2_PIX_FMT_SRGGB12P ('pRAA'), V4L2_PIX_FMT_SGRBG12P ('pgAA'), V4L2_PIX_FMT_SGBRG12P ('pGAA'), V4L2_PIX_FMT_SBGGR12P ('pBAA'),
|
||||
V4L2_PIX_FMT_SRGGB12P ('pRCC'), V4L2_PIX_FMT_SGRBG12P ('pgCC'), V4L2_PIX_FMT_SGBRG12P ('pGCC'), V4L2_PIX_FMT_SBGGR12P ('pBCC'),
|
||||
*******************************************************************************************************************************
|
||||
|
||||
|
||||
|
@@ -13,7 +13,7 @@
|
||||
.. _v4l2-pix-fmt-sgrbg14p:
|
||||
|
||||
*******************************************************************************************************************************
|
||||
V4L2_PIX_FMT_SRGGB14P ('pRCC'), V4L2_PIX_FMT_SGRBG14P ('pgCC'), V4L2_PIX_FMT_SGBRG14P ('pGCC'), V4L2_PIX_FMT_SBGGR14P ('pBCC'),
|
||||
V4L2_PIX_FMT_SRGGB14P ('pREE'), V4L2_PIX_FMT_SGRBG14P ('pgEE'), V4L2_PIX_FMT_SGBRG14P ('pGEE'), V4L2_PIX_FMT_SBGGR14P ('pBEE'),
|
||||
*******************************************************************************************************************************
|
||||
|
||||
*man V4L2_PIX_FMT_SRGGB14P(2)*
|
||||
|
@@ -15,7 +15,7 @@ V4L2_TCH_FMT_DELTA_TD16 ('TD16')
|
||||
|
||||
*man V4L2_TCH_FMT_DELTA_TD16(2)*
|
||||
|
||||
16-bit signed Touch Delta
|
||||
16-bit signed little endian Touch Delta
|
||||
|
||||
|
||||
Description
|
||||
@@ -37,38 +37,38 @@ Each cell is one byte.
|
||||
:widths: 2 1 1 1 1 1 1 1 1
|
||||
|
||||
* - start + 0:
|
||||
- D'\ :sub:`00high`
|
||||
- D'\ :sub:`00low`
|
||||
- D'\ :sub:`01high`
|
||||
- D'\ :sub:`00high`
|
||||
- D'\ :sub:`01low`
|
||||
- D'\ :sub:`02high`
|
||||
- D'\ :sub:`01high`
|
||||
- D'\ :sub:`02low`
|
||||
- D'\ :sub:`03high`
|
||||
- D'\ :sub:`02high`
|
||||
- D'\ :sub:`03low`
|
||||
- D'\ :sub:`03high`
|
||||
* - start + 8:
|
||||
- D'\ :sub:`10high`
|
||||
- D'\ :sub:`10low`
|
||||
- D'\ :sub:`11high`
|
||||
- D'\ :sub:`10high`
|
||||
- D'\ :sub:`11low`
|
||||
- D'\ :sub:`12high`
|
||||
- D'\ :sub:`11high`
|
||||
- D'\ :sub:`12low`
|
||||
- D'\ :sub:`13high`
|
||||
- D'\ :sub:`12high`
|
||||
- D'\ :sub:`13low`
|
||||
- D'\ :sub:`13high`
|
||||
* - start + 16:
|
||||
- D'\ :sub:`20high`
|
||||
- D'\ :sub:`20low`
|
||||
- D'\ :sub:`21high`
|
||||
- D'\ :sub:`20high`
|
||||
- D'\ :sub:`21low`
|
||||
- D'\ :sub:`22high`
|
||||
- D'\ :sub:`21high`
|
||||
- D'\ :sub:`22low`
|
||||
- D'\ :sub:`23high`
|
||||
- D'\ :sub:`22high`
|
||||
- D'\ :sub:`23low`
|
||||
- D'\ :sub:`23high`
|
||||
* - start + 24:
|
||||
- D'\ :sub:`30high`
|
||||
- D'\ :sub:`30low`
|
||||
- D'\ :sub:`31high`
|
||||
- D'\ :sub:`30high`
|
||||
- D'\ :sub:`31low`
|
||||
- D'\ :sub:`32high`
|
||||
- D'\ :sub:`31high`
|
||||
- D'\ :sub:`32low`
|
||||
- D'\ :sub:`33high`
|
||||
- D'\ :sub:`32high`
|
||||
- D'\ :sub:`33low`
|
||||
- D'\ :sub:`33high`
|
||||
|
@@ -15,7 +15,7 @@ V4L2_TCH_FMT_TU16 ('TU16')
|
||||
|
||||
*man V4L2_TCH_FMT_TU16(2)*
|
||||
|
||||
16-bit unsigned raw touch data
|
||||
16-bit unsigned little endian raw touch data
|
||||
|
||||
|
||||
Description
|
||||
@@ -36,38 +36,38 @@ Each cell is one byte.
|
||||
:widths: 2 1 1 1 1 1 1 1 1
|
||||
|
||||
* - start + 0:
|
||||
- R'\ :sub:`00high`
|
||||
- R'\ :sub:`00low`
|
||||
- R'\ :sub:`01high`
|
||||
- R'\ :sub:`00high`
|
||||
- R'\ :sub:`01low`
|
||||
- R'\ :sub:`02high`
|
||||
- R'\ :sub:`01high`
|
||||
- R'\ :sub:`02low`
|
||||
- R'\ :sub:`03high`
|
||||
- R'\ :sub:`02high`
|
||||
- R'\ :sub:`03low`
|
||||
- R'\ :sub:`03high`
|
||||
* - start + 8:
|
||||
- R'\ :sub:`10high`
|
||||
- R'\ :sub:`10low`
|
||||
- R'\ :sub:`11high`
|
||||
- R'\ :sub:`10high`
|
||||
- R'\ :sub:`11low`
|
||||
- R'\ :sub:`12high`
|
||||
- R'\ :sub:`11high`
|
||||
- R'\ :sub:`12low`
|
||||
- R'\ :sub:`13high`
|
||||
- R'\ :sub:`12high`
|
||||
- R'\ :sub:`13low`
|
||||
- R'\ :sub:`13high`
|
||||
* - start + 16:
|
||||
- R'\ :sub:`20high`
|
||||
- R'\ :sub:`20low`
|
||||
- R'\ :sub:`21high`
|
||||
- R'\ :sub:`20high`
|
||||
- R'\ :sub:`21low`
|
||||
- R'\ :sub:`22high`
|
||||
- R'\ :sub:`21high`
|
||||
- R'\ :sub:`22low`
|
||||
- R'\ :sub:`23high`
|
||||
- R'\ :sub:`22high`
|
||||
- R'\ :sub:`23low`
|
||||
- R'\ :sub:`23high`
|
||||
* - start + 24:
|
||||
- R'\ :sub:`30high`
|
||||
- R'\ :sub:`30low`
|
||||
- R'\ :sub:`31high`
|
||||
- R'\ :sub:`30high`
|
||||
- R'\ :sub:`31low`
|
||||
- R'\ :sub:`32high`
|
||||
- R'\ :sub:`31high`
|
||||
- R'\ :sub:`32low`
|
||||
- R'\ :sub:`33high`
|
||||
- R'\ :sub:`32high`
|
||||
- R'\ :sub:`33low`
|
||||
- R'\ :sub:`33high`
|
||||
|
@@ -44,7 +44,9 @@ To enumerate image formats applications initialize the ``type`` and
|
||||
the :ref:`VIDIOC_ENUM_FMT` ioctl with a pointer to this structure. Drivers
|
||||
fill the rest of the structure or return an ``EINVAL`` error code. All
|
||||
formats are enumerable by beginning at index zero and incrementing by
|
||||
one until ``EINVAL`` is returned.
|
||||
one until ``EINVAL`` is returned. If applicable, drivers shall return
|
||||
formats in preference order, where preferred formats are returned before
|
||||
(that is, with lower ``index`` value) less-preferred formats.
|
||||
|
||||
.. note::
|
||||
|
||||
|
@@ -279,7 +279,7 @@ EBUSY
|
||||
then it will set this flag to signal this to the application.
|
||||
* - ``V4L2_DV_FL_HALF_LINE``
|
||||
- Specific to interlaced formats: if set, then the vertical
|
||||
backporch of field 1 (aka the odd field) is really one half-line
|
||||
frontporch of field 1 (aka the odd field) is really one half-line
|
||||
longer and the vertical backporch of field 2 (aka the even field)
|
||||
is really one half-line shorter, so each field has exactly the
|
||||
same number of half-lines. Whether half-lines can be detected or
|
||||
|
@@ -1,39 +0,0 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
The cx18 driver
|
||||
===============
|
||||
|
||||
.. note::
|
||||
|
||||
This documentation is outdated.
|
||||
|
||||
Some notes regarding the cx18 driver for the Conexant CX23418 MPEG
|
||||
encoder chip:
|
||||
|
||||
1) Currently supported are:
|
||||
|
||||
- Hauppauge HVR-1600
|
||||
- Compro VideoMate H900
|
||||
- Yuan MPC718
|
||||
- Conexant Raptor PAL/SECAM devkit
|
||||
|
||||
2) Some people have problems getting the i2c bus to work.
|
||||
The symptom is that the eeprom cannot be read and the card is
|
||||
unusable. This is probably fixed, but if you have problems
|
||||
then post to the video4linux or ivtv-users mailing list.
|
||||
|
||||
3) VBI (raw or sliced) has not yet been implemented.
|
||||
|
||||
4) MPEG indexing is not yet implemented.
|
||||
|
||||
5) The driver is still a bit rough around the edges, this should
|
||||
improve over time.
|
||||
|
||||
|
||||
Firmware:
|
||||
|
||||
You can obtain the firmware files here:
|
||||
|
||||
http://dl.ivtvdriver.org/ivtv/firmware/cx18-firmware.tar.gz
|
||||
|
||||
Untar and copy the .fw files to your firmware directory.
|
@@ -38,7 +38,6 @@ For more details see the file COPYING in the source distribution of Linux.
|
||||
bttv
|
||||
cafe_ccic
|
||||
cpia2
|
||||
cx18
|
||||
cx2341x
|
||||
cx88
|
||||
davinci-vpbe
|
||||
|
@@ -1868,12 +1868,16 @@ There are some more advanced barrier functions:
|
||||
(*) smp_mb__before_atomic();
|
||||
(*) smp_mb__after_atomic();
|
||||
|
||||
These are for use with atomic (such as add, subtract, increment and
|
||||
decrement) functions that don't return a value, especially when used for
|
||||
reference counting. These functions do not imply memory barriers.
|
||||
These are for use with atomic RMW functions that do not imply memory
|
||||
barriers, but where the code needs a memory barrier. Examples for atomic
|
||||
RMW functions that do not imply are memory barrier are e.g. add,
|
||||
subtract, (failed) conditional operations, _relaxed functions,
|
||||
but not atomic_read or atomic_set. A common example where a memory
|
||||
barrier may be required is when atomic ops are used for reference
|
||||
counting.
|
||||
|
||||
These are also used for atomic bitop functions that do not return a
|
||||
value (such as set_bit and clear_bit).
|
||||
These are also used for atomic RMW bitop functions that do not imply a
|
||||
memory barrier (such as set_bit and clear_bit).
|
||||
|
||||
As an example, consider a piece of code that marks an object as being dead
|
||||
and then decrements the object's reference count:
|
||||
|
@@ -130,6 +130,19 @@ checking for the same-value filled pages during store operation. However, the
|
||||
existing pages which are marked as same-value filled pages remain stored
|
||||
unchanged in zswap until they are either loaded or invalidated.
|
||||
|
||||
To prevent zswap from shrinking pool when zswap is full and there's a high
|
||||
pressure on swap (this will result in flipping pages in and out zswap pool
|
||||
without any real benefit but with a performance drop for the system), a
|
||||
special parameter has been introduced to implement a sort of hysteresis to
|
||||
refuse taking pages into zswap pool until it has sufficient space if the limit
|
||||
has been hit. To set the threshold at which zswap would start accepting pages
|
||||
again after it became full, use the sysfs ``accept_threhsold_percent``
|
||||
attribute, e. g.::
|
||||
|
||||
echo 80 > /sys/module/zswap/parameters/accept_threhsold_percent
|
||||
|
||||
Setting this parameter to 100 will disable the hysteresis.
|
||||
|
||||
A debugfs interface is provided for various statistic about pool size, number
|
||||
of pages stored, same-value filled pages and various counters for the reasons
|
||||
pages are rejected.
|
||||
|
@@ -1,252 +0,0 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
===========================================
|
||||
Intel(R) Memory Protection Extensions (MPX)
|
||||
===========================================
|
||||
|
||||
Intel(R) MPX Overview
|
||||
=====================
|
||||
|
||||
Intel(R) Memory Protection Extensions (Intel(R) MPX) is a new capability
|
||||
introduced into Intel Architecture. Intel MPX provides hardware features
|
||||
that can be used in conjunction with compiler changes to check memory
|
||||
references, for those references whose compile-time normal intentions are
|
||||
usurped at runtime due to buffer overflow or underflow.
|
||||
|
||||
You can tell if your CPU supports MPX by looking in /proc/cpuinfo::
|
||||
|
||||
cat /proc/cpuinfo | grep ' mpx '
|
||||
|
||||
For more information, please refer to Intel(R) Architecture Instruction
|
||||
Set Extensions Programming Reference, Chapter 9: Intel(R) Memory Protection
|
||||
Extensions.
|
||||
|
||||
Note: As of December 2014, no hardware with MPX is available but it is
|
||||
possible to use SDE (Intel(R) Software Development Emulator) instead, which
|
||||
can be downloaded from
|
||||
http://software.intel.com/en-us/articles/intel-software-development-emulator
|
||||
|
||||
|
||||
How to get the advantage of MPX
|
||||
===============================
|
||||
|
||||
For MPX to work, changes are required in the kernel, binutils and compiler.
|
||||
No source changes are required for applications, just a recompile.
|
||||
|
||||
There are a lot of moving parts of this to all work right. The following
|
||||
is how we expect the compiler, application and kernel to work together.
|
||||
|
||||
1) Application developer compiles with -fmpx. The compiler will add the
|
||||
instrumentation as well as some setup code called early after the app
|
||||
starts. New instruction prefixes are noops for old CPUs.
|
||||
2) That setup code allocates (virtual) space for the "bounds directory",
|
||||
points the "bndcfgu" register to the directory (must also set the valid
|
||||
bit) and notifies the kernel (via the new prctl(PR_MPX_ENABLE_MANAGEMENT))
|
||||
that the app will be using MPX. The app must be careful not to access
|
||||
the bounds tables between the time when it populates "bndcfgu" and
|
||||
when it calls the prctl(). This might be hard to guarantee if the app
|
||||
is compiled with MPX. You can add "__attribute__((bnd_legacy))" to
|
||||
the function to disable MPX instrumentation to help guarantee this.
|
||||
Also be careful not to call out to any other code which might be
|
||||
MPX-instrumented.
|
||||
3) The kernel detects that the CPU has MPX, allows the new prctl() to
|
||||
succeed, and notes the location of the bounds directory. Userspace is
|
||||
expected to keep the bounds directory at that location. We note it
|
||||
instead of reading it each time because the 'xsave' operation needed
|
||||
to access the bounds directory register is an expensive operation.
|
||||
4) If the application needs to spill bounds out of the 4 registers, it
|
||||
issues a bndstx instruction. Since the bounds directory is empty at
|
||||
this point, a bounds fault (#BR) is raised, the kernel allocates a
|
||||
bounds table (in the user address space) and makes the relevant entry
|
||||
in the bounds directory point to the new table.
|
||||
5) If the application violates the bounds specified in the bounds registers,
|
||||
a separate kind of #BR is raised which will deliver a signal with
|
||||
information about the violation in the 'struct siginfo'.
|
||||
6) Whenever memory is freed, we know that it can no longer contain valid
|
||||
pointers, and we attempt to free the associated space in the bounds
|
||||
tables. If an entire table becomes unused, we will attempt to free
|
||||
the table and remove the entry in the directory.
|
||||
|
||||
To summarize, there are essentially three things interacting here:
|
||||
|
||||
GCC with -fmpx:
|
||||
* enables annotation of code with MPX instructions and prefixes
|
||||
* inserts code early in the application to call in to the "gcc runtime"
|
||||
GCC MPX Runtime:
|
||||
* Checks for hardware MPX support in cpuid leaf
|
||||
* allocates virtual space for the bounds directory (malloc() essentially)
|
||||
* points the hardware BNDCFGU register at the directory
|
||||
* calls a new prctl(PR_MPX_ENABLE_MANAGEMENT) to notify the kernel to
|
||||
start managing the bounds directories
|
||||
Kernel MPX Code:
|
||||
* Checks for hardware MPX support in cpuid leaf
|
||||
* Handles #BR exceptions and sends SIGSEGV to the app when it violates
|
||||
bounds, like during a buffer overflow.
|
||||
* When bounds are spilled in to an unallocated bounds table, the kernel
|
||||
notices in the #BR exception, allocates the virtual space, then
|
||||
updates the bounds directory to point to the new table. It keeps
|
||||
special track of the memory with a VM_MPX flag.
|
||||
* Frees unused bounds tables at the time that the memory they described
|
||||
is unmapped.
|
||||
|
||||
|
||||
How does MPX kernel code work
|
||||
=============================
|
||||
|
||||
Handling #BR faults caused by MPX
|
||||
---------------------------------
|
||||
|
||||
When MPX is enabled, there are 2 new situations that can generate
|
||||
#BR faults.
|
||||
|
||||
* new bounds tables (BT) need to be allocated to save bounds.
|
||||
* bounds violation caused by MPX instructions.
|
||||
|
||||
We hook #BR handler to handle these two new situations.
|
||||
|
||||
On-demand kernel allocation of bounds tables
|
||||
--------------------------------------------
|
||||
|
||||
MPX only has 4 hardware registers for storing bounds information. If
|
||||
MPX-enabled code needs more than these 4 registers, it needs to spill
|
||||
them somewhere. It has two special instructions for this which allow
|
||||
the bounds to be moved between the bounds registers and some new "bounds
|
||||
tables".
|
||||
|
||||
#BR exceptions are a new class of exceptions just for MPX. They are
|
||||
similar conceptually to a page fault and will be raised by the MPX
|
||||
hardware during both bounds violations or when the tables are not
|
||||
present. The kernel handles those #BR exceptions for not-present tables
|
||||
by carving the space out of the normal processes address space and then
|
||||
pointing the bounds-directory over to it.
|
||||
|
||||
The tables need to be accessed and controlled by userspace because
|
||||
the instructions for moving bounds in and out of them are extremely
|
||||
frequent. They potentially happen every time a register points to
|
||||
memory. Any direct kernel involvement (like a syscall) to access the
|
||||
tables would obviously destroy performance.
|
||||
|
||||
Why not do this in userspace? MPX does not strictly require anything in
|
||||
the kernel. It can theoretically be done completely from userspace. Here
|
||||
are a few ways this could be done. We don't think any of them are practical
|
||||
in the real-world, but here they are.
|
||||
|
||||
:Q: Can virtual space simply be reserved for the bounds tables so that we
|
||||
never have to allocate them?
|
||||
:A: MPX-enabled application will possibly create a lot of bounds tables in
|
||||
process address space to save bounds information. These tables can take
|
||||
up huge swaths of memory (as much as 80% of the memory on the system)
|
||||
even if we clean them up aggressively. In the worst-case scenario, the
|
||||
tables can be 4x the size of the data structure being tracked. IOW, a
|
||||
1-page structure can require 4 bounds-table pages. An X-GB virtual
|
||||
area needs 4*X GB of virtual space, plus 2GB for the bounds directory.
|
||||
If we were to preallocate them for the 128TB of user virtual address
|
||||
space, we would need to reserve 512TB+2GB, which is larger than the
|
||||
entire virtual address space today. This means they can not be reserved
|
||||
ahead of time. Also, a single process's pre-populated bounds directory
|
||||
consumes 2GB of virtual *AND* physical memory. IOW, it's completely
|
||||
infeasible to prepopulate bounds directories.
|
||||
|
||||
:Q: Can we preallocate bounds table space at the same time memory is
|
||||
allocated which might contain pointers that might eventually need
|
||||
bounds tables?
|
||||
:A: This would work if we could hook the site of each and every memory
|
||||
allocation syscall. This can be done for small, constrained applications.
|
||||
But, it isn't practical at a larger scale since a given app has no
|
||||
way of controlling how all the parts of the app might allocate memory
|
||||
(think libraries). The kernel is really the only place to intercept
|
||||
these calls.
|
||||
|
||||
:Q: Could a bounds fault be handed to userspace and the tables allocated
|
||||
there in a signal handler instead of in the kernel?
|
||||
:A: mmap() is not on the list of safe async handler functions and even
|
||||
if mmap() would work it still requires locking or nasty tricks to
|
||||
keep track of the allocation state there.
|
||||
|
||||
Having ruled out all of the userspace-only approaches for managing
|
||||
bounds tables that we could think of, we create them on demand in
|
||||
the kernel.
|
||||
|
||||
Decoding MPX instructions
|
||||
-------------------------
|
||||
|
||||
If a #BR is generated due to a bounds violation caused by MPX.
|
||||
We need to decode MPX instructions to get violation address and
|
||||
set this address into extended struct siginfo.
|
||||
|
||||
The _sigfault field of struct siginfo is extended as follow::
|
||||
|
||||
87 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
|
||||
88 struct {
|
||||
89 void __user *_addr; /* faulting insn/memory ref. */
|
||||
90 #ifdef __ARCH_SI_TRAPNO
|
||||
91 int _trapno; /* TRAP # which caused the signal */
|
||||
92 #endif
|
||||
93 short _addr_lsb; /* LSB of the reported address */
|
||||
94 struct {
|
||||
95 void __user *_lower;
|
||||
96 void __user *_upper;
|
||||
97 } _addr_bnd;
|
||||
98 } _sigfault;
|
||||
|
||||
The '_addr' field refers to violation address, and new '_addr_and'
|
||||
field refers to the upper/lower bounds when a #BR is caused.
|
||||
|
||||
Glibc will be also updated to support this new siginfo. So user
|
||||
can get violation address and bounds when bounds violations occur.
|
||||
|
||||
Cleanup unused bounds tables
|
||||
----------------------------
|
||||
|
||||
When a BNDSTX instruction attempts to save bounds to a bounds directory
|
||||
entry marked as invalid, a #BR is generated. This is an indication that
|
||||
no bounds table exists for this entry. In this case the fault handler
|
||||
will allocate a new bounds table on demand.
|
||||
|
||||
Since the kernel allocated those tables on-demand without userspace
|
||||
knowledge, it is also responsible for freeing them when the associated
|
||||
mappings go away.
|
||||
|
||||
Here, the solution for this issue is to hook do_munmap() to check
|
||||
whether one process is MPX enabled. If yes, those bounds tables covered
|
||||
in the virtual address region which is being unmapped will be freed also.
|
||||
|
||||
Adding new prctl commands
|
||||
-------------------------
|
||||
|
||||
Two new prctl commands are added to enable and disable MPX bounds tables
|
||||
management in kernel.
|
||||
::
|
||||
|
||||
155 #define PR_MPX_ENABLE_MANAGEMENT 43
|
||||
156 #define PR_MPX_DISABLE_MANAGEMENT 44
|
||||
|
||||
Runtime library in userspace is responsible for allocation of bounds
|
||||
directory. So kernel have to use XSAVE instruction to get the base
|
||||
of bounds directory from BNDCFG register.
|
||||
|
||||
But XSAVE is expected to be very expensive. In order to do performance
|
||||
optimization, we have to get the base of bounds directory and save it
|
||||
into struct mm_struct to be used in future during PR_MPX_ENABLE_MANAGEMENT
|
||||
command execution.
|
||||
|
||||
|
||||
Special rules
|
||||
=============
|
||||
|
||||
1) If userspace is requesting help from the kernel to do the management
|
||||
of bounds tables, it may not create or modify entries in the bounds directory.
|
||||
|
||||
Certainly users can allocate bounds tables and forcibly point the bounds
|
||||
directory at them through XSAVE instruction, and then set valid bit
|
||||
of bounds entry to have this entry valid. But, the kernel will decline
|
||||
to assist in managing these tables.
|
||||
|
||||
2) Userspace may not take multiple bounds directory entries and point
|
||||
them at the same bounds table.
|
||||
|
||||
This is allowed architecturally. See more information "Intel(R) Architecture
|
||||
Instruction Set Extensions Programming Reference" (9.3.4).
|
||||
|
||||
However, if users did this, the kernel might be fooled in to unmapping an
|
||||
in-use bounds table since it does not recognize sharing.
|
70
MAINTAINERS
70
MAINTAINERS
@@ -317,30 +317,30 @@ ACPI
|
||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||
M: Len Brown <lenb@kernel.org>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
W: https://01.org/linux-acpi
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
W: https://01.org/linux-acpi
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
B: https://bugzilla.kernel.org
|
||||
F: Documentation/ABI/testing/configfs-acpi
|
||||
F: Documentation/ABI/testing/sysfs-bus-acpi
|
||||
F: Documentation/firmware-guide/acpi/
|
||||
F: drivers/acpi/
|
||||
F: drivers/pci/*/*acpi*
|
||||
F: drivers/pci/*acpi*
|
||||
F: drivers/pnp/pnpacpi/
|
||||
F: include/acpi/
|
||||
F: include/linux/acpi.h
|
||||
F: include/linux/fwnode.h
|
||||
F: include/acpi/
|
||||
F: Documentation/firmware-guide/acpi/
|
||||
F: Documentation/ABI/testing/sysfs-bus-acpi
|
||||
F: Documentation/ABI/testing/configfs-acpi
|
||||
F: drivers/pci/*acpi*
|
||||
F: drivers/pci/*/*acpi*
|
||||
F: tools/power/acpi/
|
||||
|
||||
ACPI APEI
|
||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||
M: Len Brown <lenb@kernel.org>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
R: James Morse <james.morse@arm.com>
|
||||
R: Tony Luck <tony.luck@intel.com>
|
||||
R: Borislav Petkov <bp@alien8.de>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
F: drivers/acpi/apei/
|
||||
|
||||
ACPI COMPONENT ARCHITECTURE (ACPICA)
|
||||
@@ -349,13 +349,13 @@ M: Erik Kaneda <erik.kaneda@intel.com>
|
||||
M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
L: devel@acpica.org
|
||||
S: Supported
|
||||
W: https://acpica.org/
|
||||
W: https://github.com/acpica/acpica/
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
B: https://bugzilla.kernel.org
|
||||
B: https://bugs.acpica.org
|
||||
S: Supported
|
||||
F: drivers/acpi/acpica/
|
||||
F: include/acpi/
|
||||
F: tools/power/acpi/
|
||||
@@ -363,9 +363,9 @@ F: tools/power/acpi/
|
||||
ACPI FAN DRIVER
|
||||
M: Zhang Rui <rui.zhang@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
S: Supported
|
||||
W: https://01.org/linux-acpi
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/fan.c
|
||||
|
||||
ACPI FOR ARM64 (ACPI/arm64)
|
||||
@@ -389,26 +389,26 @@ M: Len Brown <lenb@kernel.org>
|
||||
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
R: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
B: https://bugzilla.kernel.org
|
||||
F: drivers/acpi/pmic/
|
||||
|
||||
ACPI THERMAL DRIVER
|
||||
M: Zhang Rui <rui.zhang@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
S: Supported
|
||||
W: https://01.org/linux-acpi
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/*thermal*
|
||||
|
||||
ACPI VIDEO DRIVER
|
||||
M: Zhang Rui <rui.zhang@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
S: Supported
|
||||
W: https://01.org/linux-acpi
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/acpi_video.c
|
||||
|
||||
ACPI WMI DRIVER
|
||||
@@ -4478,13 +4478,10 @@ F: drivers/net/wireless/st/cw1200/
|
||||
|
||||
CX18 VIDEO4LINUX DRIVER
|
||||
M: Andy Walls <awalls@md.metrocast.net>
|
||||
L: ivtv-devel@ivtvdriver.org (subscribers-only)
|
||||
L: linux-media@vger.kernel.org
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
W: https://linuxtv.org
|
||||
W: http://www.ivtvdriver.org/index.php/Cx18
|
||||
S: Maintained
|
||||
F: Documentation/media/v4l-drivers/cx18*
|
||||
F: drivers/media/pci/cx18/
|
||||
F: include/uapi/linux/ivtv*
|
||||
|
||||
@@ -7381,6 +7378,7 @@ F: drivers/hwtracing/
|
||||
HARDWARE SPINLOCK CORE
|
||||
M: Ohad Ben-Cohen <ohad@wizery.com>
|
||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
R: Baolin Wang <baolin.wang7@gmail.com>
|
||||
L: linux-remoteproc@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git hwspinlock-next
|
||||
@@ -8200,8 +8198,7 @@ F: Documentation/devicetree/bindings/auxdisplay/img-ascii-lcd.txt
|
||||
F: drivers/auxdisplay/img-ascii-lcd.c
|
||||
|
||||
IMGTEC IR DECODER DRIVER
|
||||
M: James Hogan <jhogan@kernel.org>
|
||||
S: Maintained
|
||||
S: Orphan
|
||||
F: drivers/media/rc/img-ir/
|
||||
|
||||
IMON SOUNDGRAPH USB IR RECEIVER
|
||||
@@ -8946,10 +8943,9 @@ F: drivers/media/tuners/it913x*
|
||||
|
||||
IVTV VIDEO4LINUX DRIVER
|
||||
M: Andy Walls <awalls@md.metrocast.net>
|
||||
L: ivtv-devel@ivtvdriver.org (subscribers-only)
|
||||
L: linux-media@vger.kernel.org
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
W: http://www.ivtvdriver.org
|
||||
W: https://linuxtv.org
|
||||
S: Maintained
|
||||
F: Documentation/media/v4l-drivers/ivtv*
|
||||
F: drivers/media/pci/ivtv/
|
||||
@@ -11116,7 +11112,6 @@ F: drivers/usb/image/microtek.*
|
||||
MIPS
|
||||
M: Ralf Baechle <ralf@linux-mips.org>
|
||||
M: Paul Burton <paulburton@kernel.org>
|
||||
M: James Hogan <jhogan@kernel.org>
|
||||
L: linux-mips@vger.kernel.org
|
||||
W: http://www.linux-mips.org/
|
||||
T: git git://git.linux-mips.org/pub/scm/ralf/linux.git
|
||||
@@ -12920,7 +12915,7 @@ F: arch/x86/kernel/early-quirks.c
|
||||
|
||||
PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS
|
||||
M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
||||
R: Andrew Murray <andrew.murray@arm.com>
|
||||
R: Andrew Murray <amurray@thegoodpenguin.co.uk>
|
||||
L: linux-pci@vger.kernel.org
|
||||
Q: http://patchwork.ozlabs.org/project/linux-pci/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git/
|
||||
@@ -13341,11 +13336,6 @@ T: git git://github.com/intel/pm-graph
|
||||
S: Supported
|
||||
F: tools/power/pm-graph
|
||||
|
||||
PNP SUPPORT
|
||||
M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
|
||||
S: Maintained
|
||||
F: drivers/pnp/
|
||||
|
||||
PNI RM3100 IIO DRIVER
|
||||
M: Song Qiang <songqiang1304521@gmail.com>
|
||||
L: linux-iio@vger.kernel.org
|
||||
@@ -13353,6 +13343,11 @@ S: Maintained
|
||||
F: drivers/iio/magnetometer/rm3100*
|
||||
F: Documentation/devicetree/bindings/iio/magnetometer/pni,rm3100.txt
|
||||
|
||||
PNP SUPPORT
|
||||
M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
|
||||
S: Maintained
|
||||
F: drivers/pnp/
|
||||
|
||||
POSIX CLOCKS and TIMERS
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
@@ -14298,6 +14293,12 @@ F: drivers/hid/hid-roccat*
|
||||
F: include/linux/hid-roccat*
|
||||
F: Documentation/ABI/*/sysfs-driver-hid-roccat*
|
||||
|
||||
ROCKCHIP ISP V1 DRIVER
|
||||
M: Helen Koike <helen.koike@collabora.com>
|
||||
L: linux-media@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/staging/media/rkisp1/
|
||||
|
||||
ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER
|
||||
M: Jacob Chen <jacob-chen@iotwrt.com>
|
||||
M: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
@@ -16738,6 +16739,7 @@ Q: http://patchwork.linuxtv.org/project/linux-media/list/
|
||||
S: Maintained
|
||||
F: drivers/media/platform/ti-vpe/
|
||||
F: Documentation/devicetree/bindings/media/ti,vpe.yaml
|
||||
Documentation/devicetree/bindings/media/ti,cal.yaml
|
||||
|
||||
TI WILINK WIRELESS DRIVERS
|
||||
L: linux-wireless@vger.kernel.org
|
||||
@@ -18105,8 +18107,8 @@ F: Documentation/core-api/workqueue.rst
|
||||
X-POWERS AXP288 PMIC DRIVERS
|
||||
M: Hans de Goede <hdegoede@redhat.com>
|
||||
S: Maintained
|
||||
N: axp288
|
||||
F: drivers/acpi/pmic/intel_pmic_xpower.c
|
||||
N: axp288
|
||||
|
||||
X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
|
||||
M: Chen-Yu Tsai <wens@csie.org>
|
||||
|
24
Makefile
24
Makefile
@@ -423,7 +423,6 @@ INSTALLKERNEL := installkernel
|
||||
DEPMOD = /sbin/depmod
|
||||
PERL = perl
|
||||
PYTHON = python
|
||||
PYTHON2 = python2
|
||||
PYTHON3 = python3
|
||||
CHECK = sparse
|
||||
BASH = bash
|
||||
@@ -474,7 +473,7 @@ CLANG_FLAGS :=
|
||||
|
||||
export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
|
||||
export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF PAHOLE LEX YACC AWK INSTALLKERNEL
|
||||
export PERL PYTHON PYTHON2 PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
|
||||
export PERL PYTHON PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
|
||||
export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
|
||||
|
||||
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
|
||||
@@ -688,7 +687,7 @@ $(KCONFIG_CONFIG):
|
||||
#
|
||||
# This exploits the 'multi-target pattern rule' trick.
|
||||
# The syncconfig should be executed only once to make all the targets.
|
||||
%/auto.conf %/auto.conf.cmd %/tristate.conf: $(KCONFIG_CONFIG)
|
||||
%/auto.conf %/auto.conf.cmd: $(KCONFIG_CONFIG)
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
|
||||
else # !may-sync-config
|
||||
# External modules and some install targets need include/generated/autoconf.h
|
||||
@@ -1341,24 +1340,13 @@ all: modules
|
||||
# using awk while concatenating to the final file.
|
||||
|
||||
PHONY += modules
|
||||
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules.order modules.builtin
|
||||
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules.order
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
|
||||
|
||||
modules.order: descend
|
||||
$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(build-dirs)) > $@
|
||||
|
||||
modbuiltin-dirs := $(addprefix _modbuiltin_, $(build-dirs))
|
||||
|
||||
modules.builtin: $(modbuiltin-dirs)
|
||||
$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(build-dirs)) > $@
|
||||
|
||||
PHONY += $(modbuiltin-dirs)
|
||||
# tristate.conf is not included from this Makefile. Add it as a prerequisite
|
||||
# here to make it self-healing in case somebody accidentally removes it.
|
||||
$(modbuiltin-dirs): include/config/tristate.conf
|
||||
$(Q)$(MAKE) $(modbuiltin)=$(patsubst _modbuiltin_%,%,$@)
|
||||
|
||||
# Target to prepare building external modules
|
||||
PHONY += modules_prepare
|
||||
modules_prepare: prepare
|
||||
@@ -1378,7 +1366,7 @@ _modinst_:
|
||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||
fi
|
||||
@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
|
||||
@sed 's:^:kernel/:' modules.builtin > $(MODLIB)/modules.builtin
|
||||
@cp -f modules.builtin $(MODLIB)/
|
||||
@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
||||
|
||||
@@ -1420,7 +1408,7 @@ endif # CONFIG_MODULES
|
||||
|
||||
# Directories & files removed with 'make clean'
|
||||
CLEAN_DIRS += include/ksym
|
||||
CLEAN_FILES += modules.builtin.modinfo modules.nsdeps
|
||||
CLEAN_FILES += modules.builtin modules.builtin.modinfo modules.nsdeps
|
||||
|
||||
# Directories & files removed with 'make mrproper'
|
||||
MRPROPER_DIRS += include/config include/generated \
|
||||
@@ -1775,7 +1763,7 @@ clean: $(clean-dirs)
|
||||
-o -name '*.lex.c' -o -name '*.tab.[ch]' \
|
||||
-o -name '*.asn1.[ch]' \
|
||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
||||
-o -name modules.builtin -o -name '.tmp_*.o.*' \
|
||||
-o -name '.tmp_*.o.*' \
|
||||
-o -name '*.c.[012]*.*' \
|
||||
-o -name '*.ll' \
|
||||
-o -name '*.gcno' \
|
||||
|
13
arch/Kconfig
13
arch/Kconfig
@@ -393,17 +393,22 @@ config HAVE_ARCH_JUMP_LABEL
|
||||
config HAVE_ARCH_JUMP_LABEL_RELATIVE
|
||||
bool
|
||||
|
||||
config HAVE_RCU_TABLE_FREE
|
||||
config MMU_GATHER_TABLE_FREE
|
||||
bool
|
||||
|
||||
config HAVE_RCU_TABLE_NO_INVALIDATE
|
||||
config MMU_GATHER_RCU_TABLE_FREE
|
||||
bool
|
||||
select MMU_GATHER_TABLE_FREE
|
||||
|
||||
config MMU_GATHER_PAGE_SIZE
|
||||
bool
|
||||
|
||||
config HAVE_MMU_GATHER_PAGE_SIZE
|
||||
config MMU_GATHER_NO_RANGE
|
||||
bool
|
||||
|
||||
config HAVE_MMU_GATHER_NO_GATHER
|
||||
config MMU_GATHER_NO_GATHER
|
||||
bool
|
||||
depends on MMU_GATHER_TABLE_FREE
|
||||
|
||||
config ARCH_HAVE_NMI_SAFE_CMPXCHG
|
||||
bool
|
||||
|
@@ -119,13 +119,12 @@ static ssize_t srm_env_proc_write(struct file *file, const char __user *buffer,
|
||||
return res;
|
||||
}
|
||||
|
||||
static const struct file_operations srm_env_proc_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = srm_env_proc_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
.write = srm_env_proc_write,
|
||||
static const struct proc_ops srm_env_proc_ops = {
|
||||
.proc_open = srm_env_proc_open,
|
||||
.proc_read = seq_read,
|
||||
.proc_lseek = seq_lseek,
|
||||
.proc_release = single_release,
|
||||
.proc_write = srm_env_proc_write,
|
||||
};
|
||||
|
||||
static int __init
|
||||
@@ -182,7 +181,7 @@ srm_env_init(void)
|
||||
entry = srm_named_entries;
|
||||
while (entry->name && entry->id) {
|
||||
if (!proc_create_data(entry->name, 0644, named_dir,
|
||||
&srm_env_proc_fops, (void *)entry->id))
|
||||
&srm_env_proc_ops, (void *)entry->id))
|
||||
goto cleanup;
|
||||
entry++;
|
||||
}
|
||||
@@ -194,7 +193,7 @@ srm_env_init(void)
|
||||
char name[4];
|
||||
sprintf(name, "%ld", var_num);
|
||||
if (!proc_create_data(name, 0644, numbered_dir,
|
||||
&srm_env_proc_fops, (void *)var_num))
|
||||
&srm_env_proc_ops, (void *)var_num))
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@@ -28,6 +28,7 @@ config ARC
|
||||
select GENERIC_SMP_IDLE_THREAD
|
||||
select HAVE_ARCH_KGDB
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_COPY_THREAD_TLS
|
||||
select HAVE_DEBUG_STACKOVERFLOW
|
||||
select HAVE_DEBUG_KMEMLEAK
|
||||
select HAVE_FUTEX_CMPXCHG if FUTEX
|
||||
@@ -350,9 +351,8 @@ config NODES_SHIFT
|
||||
Accessing memory beyond 1GB (with or w/o PAE) requires 2 memory
|
||||
zones.
|
||||
|
||||
if ISA_ARCOMPACT
|
||||
|
||||
config ARC_COMPACT_IRQ_LEVELS
|
||||
depends on ISA_ARCOMPACT
|
||||
bool "Setup Timer IRQ as high Priority"
|
||||
# if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
|
||||
depends on !SMP
|
||||
@@ -360,14 +360,10 @@ config ARC_COMPACT_IRQ_LEVELS
|
||||
config ARC_FPU_SAVE_RESTORE
|
||||
bool "Enable FPU state persistence across context switch"
|
||||
help
|
||||
Double Precision Floating Point unit had dedicated regs which
|
||||
need to be saved/restored across context-switch.
|
||||
Note that ARC FPU is overly simplistic, unlike say x86, which has
|
||||
hardware pieces to allow software to conditionally save/restore,
|
||||
based on actual usage of FPU by a task. Thus our implemn does
|
||||
this for all tasks in system.
|
||||
|
||||
endif #ISA_ARCOMPACT
|
||||
ARCompact FPU has internal registers to assist with Double precision
|
||||
Floating Point operations. There are control and stauts registers
|
||||
for floating point exceptions and rounding modes. These are
|
||||
preserved across task context switch when enabled.
|
||||
|
||||
config ARC_CANT_LLSC
|
||||
def_bool n
|
||||
|
@@ -78,6 +78,7 @@
|
||||
interrupt-names = "macirq";
|
||||
phy-mode = "rgmii";
|
||||
snps,pbl = < 32 >;
|
||||
snps,multicast-filter-bins = <256>;
|
||||
clocks = <&apbclk>;
|
||||
clock-names = "stmmaceth";
|
||||
max-speed = <100>;
|
||||
|
@@ -39,6 +39,8 @@
|
||||
#define ARC_REG_CLUSTER_BCR 0xcf
|
||||
#define ARC_REG_AUX_ICCM 0x208 /* ICCM Base Addr (ARCv2) */
|
||||
#define ARC_REG_LPB_CTRL 0x488 /* ARCv2 Loop Buffer control */
|
||||
#define ARC_REG_FPU_CTRL 0x300
|
||||
#define ARC_REG_FPU_STATUS 0x301
|
||||
|
||||
/* Common for ARCompact and ARCv2 status register */
|
||||
#define ARC_REG_STATUS32 0x0A
|
||||
|
55
arch/arc/include/asm/fpu.h
Normal file
55
arch/arc/include/asm/fpu.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2020 Synopsys, Inc. (www.synopsys.com)
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARC_FPU_H
|
||||
#define _ASM_ARC_FPU_H
|
||||
|
||||
#ifdef CONFIG_ARC_FPU_SAVE_RESTORE
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#ifdef CONFIG_ISA_ARCOMPACT
|
||||
|
||||
/* These DPFP regs need to be saved/restored across ctx-sw */
|
||||
struct arc_fpu {
|
||||
struct {
|
||||
unsigned int l, h;
|
||||
} aux_dpfp[2];
|
||||
};
|
||||
|
||||
#define fpu_init_task(regs)
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
* ARCv2 FPU Control aux register
|
||||
* - bits to enable Traps on Exceptions
|
||||
* - Rounding mode
|
||||
*
|
||||
* ARCv2 FPU Status aux register
|
||||
* - FPU exceptions flags (Inv, Div-by-Zero, overflow, underflow, inexact)
|
||||
* - Flag Write Enable to clear flags explicitly (vs. by fpu instructions
|
||||
* only
|
||||
*/
|
||||
|
||||
struct arc_fpu {
|
||||
unsigned int ctrl, status;
|
||||
};
|
||||
|
||||
extern void fpu_init_task(struct pt_regs *regs);
|
||||
|
||||
#endif /* !CONFIG_ISA_ARCOMPACT */
|
||||
|
||||
extern void fpu_save_restore(struct task_struct *p, struct task_struct *n);
|
||||
|
||||
#else /* !CONFIG_ARC_FPU_SAVE_RESTORE */
|
||||
|
||||
#define fpu_save_restore(p, n)
|
||||
#define fpu_init_task(regs)
|
||||
|
||||
#endif /* CONFIG_ARC_FPU_SAVE_RESTORE */
|
||||
|
||||
#endif /* _ASM_ARC_FPU_H */
|
@@ -273,6 +273,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
|
||||
#define pmd_none(x) (!pmd_val(x))
|
||||
#define pmd_bad(x) ((pmd_val(x) & ~PAGE_MASK))
|
||||
#define pmd_present(x) (pmd_val(x))
|
||||
#define pmd_leaf(x) (pmd_val(x) & _PAGE_HW_SZ)
|
||||
#define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0)
|
||||
|
||||
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
||||
|
@@ -14,15 +14,7 @@
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#ifdef CONFIG_ARC_FPU_SAVE_RESTORE
|
||||
/* These DPFP regs need to be saved/restored across ctx-sw */
|
||||
struct arc_fpu {
|
||||
struct {
|
||||
unsigned int l, h;
|
||||
} aux_dpfp[2];
|
||||
};
|
||||
#endif
|
||||
#include <asm/fpu.h>
|
||||
|
||||
#ifdef CONFIG_ARC_PLAT_EZNPS
|
||||
struct eznps_dp {
|
||||
|
@@ -9,19 +9,7 @@
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <linux/sched.h>
|
||||
|
||||
#ifdef CONFIG_ARC_FPU_SAVE_RESTORE
|
||||
|
||||
extern void fpu_save_restore(struct task_struct *p, struct task_struct *n);
|
||||
#define ARC_FPU_PREV(p, n) fpu_save_restore(p, n)
|
||||
#define ARC_FPU_NEXT(t)
|
||||
|
||||
#else
|
||||
|
||||
#define ARC_FPU_PREV(p, n)
|
||||
#define ARC_FPU_NEXT(n)
|
||||
|
||||
#endif /* !CONFIG_ARC_FPU_SAVE_RESTORE */
|
||||
#include <asm/fpu.h>
|
||||
|
||||
#ifdef CONFIG_ARC_PLAT_EZNPS
|
||||
extern void dp_save_restore(struct task_struct *p, struct task_struct *n);
|
||||
@@ -36,9 +24,8 @@ struct task_struct *__switch_to(struct task_struct *p, struct task_struct *n);
|
||||
#define switch_to(prev, next, last) \
|
||||
do { \
|
||||
ARC_EZNPS_DP_PREV(prev, next); \
|
||||
ARC_FPU_PREV(prev, next); \
|
||||
fpu_save_restore(prev, next); \
|
||||
last = __switch_to(prev, next);\
|
||||
ARC_FPU_NEXT(next); \
|
||||
mb(); \
|
||||
} while (0)
|
||||
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#include <linux/types.h>
|
||||
|
||||
int sys_clone_wrapper(int, int, int, int, int);
|
||||
int sys_clone3_wrapper(void *, size_t);
|
||||
int sys_cacheflush(uint32_t, uint32_t uint32_t);
|
||||
int sys_arc_settls(void *);
|
||||
int sys_arc_gettls(void);
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#define __ARCH_WANT_SET_GET_RLIMIT
|
||||
#define __ARCH_WANT_SYS_EXECVE
|
||||
#define __ARCH_WANT_SYS_CLONE
|
||||
#define __ARCH_WANT_SYS_CLONE3
|
||||
#define __ARCH_WANT_SYS_VFORK
|
||||
#define __ARCH_WANT_SYS_FORK
|
||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
||||
|
@@ -23,7 +23,9 @@ obj-$(CONFIG_PERF_EVENTS) += perf_event.o
|
||||
obj-$(CONFIG_JUMP_LABEL) += jump_label.o
|
||||
|
||||
obj-$(CONFIG_ARC_FPU_SAVE_RESTORE) += fpu.o
|
||||
ifdef CONFIG_ISA_ARCOMPACT
|
||||
CFLAGS_fpu.o += -mdpfp
|
||||
endif
|
||||
|
||||
ifdef CONFIG_ARC_DW2_UNWIND
|
||||
CFLAGS_ctx_sw.o += -fno-omit-frame-pointer
|
||||
|
@@ -35,6 +35,18 @@ ENTRY(sys_clone_wrapper)
|
||||
b .Lret_from_system_call
|
||||
END(sys_clone_wrapper)
|
||||
|
||||
ENTRY(sys_clone3_wrapper)
|
||||
SAVE_CALLEE_SAVED_USER
|
||||
bl @sys_clone3
|
||||
DISCARD_CALLEE_SAVED_USER
|
||||
|
||||
GET_CURR_THR_INFO_FLAGS r10
|
||||
btst r10, TIF_SYSCALL_TRACE
|
||||
bnz tracesys_exit
|
||||
|
||||
b .Lret_from_system_call
|
||||
END(sys_clone3_wrapper)
|
||||
|
||||
ENTRY(ret_from_fork)
|
||||
; when the forked child comes here from the __switch_to function
|
||||
; r0 has the last task pointer.
|
||||
|
@@ -6,7 +6,9 @@
|
||||
*/
|
||||
|
||||
#include <linux/sched.h>
|
||||
#include <asm/switch_to.h>
|
||||
#include <asm/fpu.h>
|
||||
|
||||
#ifdef CONFIG_ISA_ARCOMPACT
|
||||
|
||||
/*
|
||||
* To save/restore FPU regs, simplest scheme would use LR/SR insns.
|
||||
@@ -50,3 +52,28 @@ void fpu_save_restore(struct task_struct *prev, struct task_struct *next)
|
||||
: "r" (zero), "r" (*(readfrom + 3)), "r" (*(readfrom + 2))
|
||||
);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void fpu_init_task(struct pt_regs *regs)
|
||||
{
|
||||
/* default rounding mode */
|
||||
write_aux_reg(ARC_REG_FPU_CTRL, 0x100);
|
||||
|
||||
/* set "Write enable" to allow explicit write to exception flags */
|
||||
write_aux_reg(ARC_REG_FPU_STATUS, 0x80000000);
|
||||
}
|
||||
|
||||
void fpu_save_restore(struct task_struct *prev, struct task_struct *next)
|
||||
{
|
||||
struct arc_fpu *save = &prev->thread.fpu;
|
||||
struct arc_fpu *restore = &next->thread.fpu;
|
||||
|
||||
save->ctrl = read_aux_reg(ARC_REG_FPU_CTRL);
|
||||
save->status = read_aux_reg(ARC_REG_FPU_STATUS);
|
||||
|
||||
write_aux_reg(ARC_REG_FPU_CTRL, restore->ctrl);
|
||||
write_aux_reg(ARC_REG_FPU_STATUS, restore->status);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -20,6 +20,8 @@
|
||||
#include <linux/elf.h>
|
||||
#include <linux/tick.h>
|
||||
|
||||
#include <asm/fpu.h>
|
||||
|
||||
SYSCALL_DEFINE1(arc_settls, void *, user_tls_data_ptr)
|
||||
{
|
||||
task_thread_info(current)->thr_ptr = (unsigned int)user_tls_data_ptr;
|
||||
@@ -171,9 +173,8 @@ asmlinkage void ret_from_fork(void);
|
||||
* | user_r25 |
|
||||
* ------------------ <===== END of PAGE
|
||||
*/
|
||||
int copy_thread(unsigned long clone_flags,
|
||||
unsigned long usp, unsigned long kthread_arg,
|
||||
struct task_struct *p)
|
||||
int copy_thread_tls(unsigned long clone_flags, unsigned long usp,
|
||||
unsigned long kthread_arg, struct task_struct *p, unsigned long tls)
|
||||
{
|
||||
struct pt_regs *c_regs; /* child's pt_regs */
|
||||
unsigned long *childksp; /* to unwind out of __switch_to() */
|
||||
@@ -231,7 +232,7 @@ int copy_thread(unsigned long clone_flags,
|
||||
* set task's userland tls data ptr from 4th arg
|
||||
* clone C-lib call is difft from clone sys-call
|
||||
*/
|
||||
task_thread_info(p)->thr_ptr = regs->r3;
|
||||
task_thread_info(p)->thr_ptr = tls;
|
||||
} else {
|
||||
/* Normal fork case: set parent's TLS ptr in child */
|
||||
task_thread_info(p)->thr_ptr =
|
||||
@@ -264,7 +265,7 @@ int copy_thread(unsigned long clone_flags,
|
||||
/*
|
||||
* Do necessary setup to start up a new user task
|
||||
*/
|
||||
void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long usp)
|
||||
void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long usp)
|
||||
{
|
||||
regs->sp = usp;
|
||||
regs->ret = pc;
|
||||
@@ -280,6 +281,8 @@ void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long usp)
|
||||
regs->eflags = 0;
|
||||
#endif
|
||||
|
||||
fpu_init_task(regs);
|
||||
|
||||
/* bogus seed values for debugging */
|
||||
regs->lp_start = 0x10;
|
||||
regs->lp_end = 0x80;
|
||||
|
@@ -7,6 +7,7 @@
|
||||
#include <asm/syscalls.h>
|
||||
|
||||
#define sys_clone sys_clone_wrapper
|
||||
#define sys_clone3 sys_clone3_wrapper
|
||||
|
||||
#undef __SYSCALL
|
||||
#define __SYSCALL(nr, call) [nr] = (call),
|
||||
|
@@ -102,7 +102,7 @@ config ARM
|
||||
select HAVE_PERF_EVENTS
|
||||
select HAVE_PERF_REGS
|
||||
select HAVE_PERF_USER_STACK_DUMP
|
||||
select HAVE_RCU_TABLE_FREE if SMP && ARM_LPAE
|
||||
select MMU_GATHER_RCU_TABLE_FREE if SMP && ARM_LPAE
|
||||
select HAVE_REGS_AND_STACK_ACCESS_API
|
||||
select HAVE_RSEQ
|
||||
select HAVE_STACKPROTECTOR
|
||||
|
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/clk/ti-dra7-atl.h>
|
||||
#include <dt-bindings/clock/ti-dra7-atl.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
|
@@ -6,7 +6,7 @@
|
||||
|
||||
#include "dra72x.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/clk/ti-dra7-atl.h>
|
||||
#include <dt-bindings/clock/ti-dra7-atl.h>
|
||||
|
||||
/ {
|
||||
compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user