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>
|
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@intel.com>
|
||||||
Alex Shi <alex.shi@linux.alibaba.com> <alex.shi@linaro.org>
|
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> <ast@plumgrid.com>
|
||||||
Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com>
|
Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com>
|
||||||
Alexei Starovoitov <ast@kernel.org> <ast@fb.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>
|
Andreas Herrmann <aherrman@de.ibm.com>
|
||||||
Andrey Ryabinin <ryabinin.a.a@gmail.com> <a.ryabinin@samsung.com>
|
Andrey Ryabinin <ryabinin.a.a@gmail.com> <a.ryabinin@samsung.com>
|
||||||
Andrew Morton <akpm@linux-foundation.org>
|
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>
|
Andrew Vasquez <andrew.vasquez@qlogic.com>
|
||||||
Andy Adamson <andros@citi.umich.edu>
|
Andy Adamson <andros@citi.umich.edu>
|
||||||
Antoine Tenart <antoine.tenart@free-electrons.com>
|
Antoine Tenart <antoine.tenart@free-electrons.com>
|
||||||
|
@@ -33,6 +33,14 @@ Description:
|
|||||||
Requires a separate RTC_PIE_ON call to enable the periodic
|
Requires a separate RTC_PIE_ON call to enable the periodic
|
||||||
interrupts.
|
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
|
The ioctl() calls supported by the older /dev/rtc interface are
|
||||||
also supported by the newer RTC class framework. However,
|
also supported by the newer RTC class framework. However,
|
||||||
because the chips and systems are not standardized, some PC/AT
|
because the chips and systems are not standardized, some PC/AT
|
||||||
|
@@ -1,37 +1,40 @@
|
|||||||
What: /sys/fs/f2fs/<disk>/gc_max_sleep_time
|
What: /sys/fs/f2fs/<disk>/gc_max_sleep_time
|
||||||
Date: July 2013
|
Date: July 2013
|
||||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
Description:
|
Description: Controls the maximum sleep time for gc_thread. Time
|
||||||
Controls the maximun sleep time for gc_thread. Time
|
is in milliseconds.
|
||||||
is in milliseconds.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_min_sleep_time
|
What: /sys/fs/f2fs/<disk>/gc_min_sleep_time
|
||||||
Date: July 2013
|
Date: July 2013
|
||||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
Description:
|
Description: Controls the minimum sleep time for gc_thread. Time
|
||||||
Controls the minimum sleep time for gc_thread. Time
|
is in milliseconds.
|
||||||
is in milliseconds.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_no_gc_sleep_time
|
What: /sys/fs/f2fs/<disk>/gc_no_gc_sleep_time
|
||||||
Date: July 2013
|
Date: July 2013
|
||||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
Description:
|
Description: Controls the default sleep time for gc_thread. Time
|
||||||
Controls the default sleep time for gc_thread. Time
|
is in milliseconds.
|
||||||
is in milliseconds.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_idle
|
What: /sys/fs/f2fs/<disk>/gc_idle
|
||||||
Date: July 2013
|
Date: July 2013
|
||||||
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
Description:
|
Description: Controls the victim selection policy for garbage collection.
|
||||||
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
|
What: /sys/fs/f2fs/<disk>/reclaim_segments
|
||||||
Date: October 2013
|
Date: October 2013
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||||
Description:
|
Description: This parameter controls the number of prefree segments to be
|
||||||
Controls the issue rate of segment discard commands.
|
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
|
Date: November 2019
|
||||||
Contact: "Ramon Pantin" <pantin@google.com>
|
Contact: "Ramon Pantin" <pantin@google.com>
|
||||||
Description:
|
Description:
|
||||||
@@ -40,227 +43,278 @@ Description:
|
|||||||
What: /sys/fs/f2fs/<disk>/ipu_policy
|
What: /sys/fs/f2fs/<disk>/ipu_policy
|
||||||
Date: November 2013
|
Date: November 2013
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||||
Description:
|
Description: Controls the in-place-update policy.
|
||||||
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
|
What: /sys/fs/f2fs/<disk>/min_ipu_util
|
||||||
Date: November 2013
|
Date: November 2013
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||||
Description:
|
Description: Controls the FS utilization condition for the in-place-update
|
||||||
Controls the FS utilization condition for the in-place-update
|
policies. It is used by F2FS_IPU_UTIL and F2FS_IPU_SSR_UTIL policies.
|
||||||
policies.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/min_fsync_blocks
|
What: /sys/fs/f2fs/<disk>/min_fsync_blocks
|
||||||
Date: September 2014
|
Date: September 2014
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Controls the dirty page count condition for the in-place-update
|
||||||
Controls the dirty page count condition for the in-place-update
|
policies.
|
||||||
policies.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/min_seq_blocks
|
What: /sys/fs/f2fs/<disk>/min_seq_blocks
|
||||||
Date: August 2018
|
Date: August 2018
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Controls the dirty page count condition for batched sequential
|
||||||
Controls the dirty page count condition for batched sequential
|
writes in writepages.
|
||||||
writes in ->writepages.
|
|
||||||
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/min_hot_blocks
|
What: /sys/fs/f2fs/<disk>/min_hot_blocks
|
||||||
Date: March 2017
|
Date: March 2017
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Controls the dirty page count condition for redefining hot data.
|
||||||
Controls the dirty page count condition for redefining hot data.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/min_ssr_sections
|
What: /sys/fs/f2fs/<disk>/min_ssr_sections
|
||||||
Date: October 2017
|
Date: October 2017
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Description:
|
Description: Controls the free section threshold to trigger SSR allocation.
|
||||||
Controls the fee section threshold to trigger SSR allocation.
|
If this is large, SSR mode will be enabled early.
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/max_small_discards
|
What: /sys/fs/f2fs/<disk>/max_small_discards
|
||||||
Date: November 2013
|
Date: November 2013
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||||
Description:
|
Description: Controls the issue rate of discard commands that consist of small
|
||||||
Controls the issue rate of small discard commands.
|
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
|
What: /sys/fs/f2fs/<disk>/discard_granularity
|
||||||
Date: July 2017
|
Date: July 2017
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Description:
|
Description: Controls discard granularity of inner discard thread. Inner thread
|
||||||
Controls discard granularity of inner discard thread, inner thread
|
|
||||||
will not issue discards with size that is smaller than granularity.
|
will not issue discards with size that is smaller than granularity.
|
||||||
The unit size is one block, now only support configuring in range
|
The unit size is one block(4KB), now only support configuring
|
||||||
of [1, 512].
|
in range of [1, 512]. Default value is 4(=16KB).
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/umount_discard_timeout
|
What: /sys/fs/f2fs/<disk>/umount_discard_timeout
|
||||||
Date: January 2019
|
Date: January 2019
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Set timeout to issue discard commands during umount.
|
||||||
Set timeout to issue discard commands during umount.
|
Default: 5 secs
|
||||||
Default: 5 secs
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/max_victim_search
|
What: /sys/fs/f2fs/<disk>/max_victim_search
|
||||||
Date: January 2014
|
Date: January 2014
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||||
Description:
|
Description: Controls the number of trials to find a victim segment
|
||||||
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
|
What: /sys/fs/f2fs/<disk>/migration_granularity
|
||||||
Date: October 2018
|
Date: October 2018
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Description:
|
Description: Controls migration granularity of garbage collection on large
|
||||||
Controls migration granularity of garbage collection on large
|
section, it can let GC move partial segment{s} of one section
|
||||||
section, it can let GC move partial segment{s} of one section
|
in one GC cycle, so that dispersing heavy overhead GC to
|
||||||
in one GC cycle, so that dispersing heavy overhead GC to
|
multiple lightweight one.
|
||||||
multiple lightweight one.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/dir_level
|
What: /sys/fs/f2fs/<disk>/dir_level
|
||||||
Date: March 2014
|
Date: March 2014
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||||
Description:
|
Description: Controls the directory level for large directory. If a
|
||||||
Controls the directory level for large directory.
|
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
|
What: /sys/fs/f2fs/<disk>/ram_thresh
|
||||||
Date: March 2014
|
Date: March 2014
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
Contact: "Jaegeuk Kim" <jaegeuk.kim@samsung.com>
|
||||||
Description:
|
Description: Controls the memory footprint used by free nids and cached
|
||||||
Controls the memory footprint used by f2fs.
|
nat entries. By default, 1 is set, which indicates
|
||||||
|
10 MB / 1 GB RAM.
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/batched_trim_sections
|
What: /sys/fs/f2fs/<disk>/batched_trim_sections
|
||||||
Date: February 2015
|
Date: February 2015
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Controls the trimming rate in batch mode.
|
||||||
Controls the trimming rate in batch mode.
|
<deprecated>
|
||||||
<deprecated>
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/cp_interval
|
What: /sys/fs/f2fs/<disk>/cp_interval
|
||||||
Date: October 2015
|
Date: October 2015
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Controls the checkpoint timing, set to 60 seconds by default.
|
||||||
Controls the checkpoint timing.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/idle_interval
|
What: /sys/fs/f2fs/<disk>/idle_interval
|
||||||
Date: January 2016
|
Date: January 2016
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Controls the idle timing of system, if there is no FS operation
|
||||||
Controls the idle timing for all paths other than
|
during given interval.
|
||||||
discard and gc path.
|
Set to 5 seconds by default.
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/discard_idle_interval
|
What: /sys/fs/f2fs/<disk>/discard_idle_interval
|
||||||
Date: September 2018
|
Date: September 2018
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Contact: "Sahitya Tummala" <stummala@codeaurora.org>
|
Contact: "Sahitya Tummala" <stummala@codeaurora.org>
|
||||||
Description:
|
Description: Controls the idle timing of discard thread given
|
||||||
Controls the idle timing for discard path.
|
this time interval.
|
||||||
|
Default is 5 secs.
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_idle_interval
|
What: /sys/fs/f2fs/<disk>/gc_idle_interval
|
||||||
Date: September 2018
|
Date: September 2018
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Contact: "Sahitya Tummala" <stummala@codeaurora.org>
|
Contact: "Sahitya Tummala" <stummala@codeaurora.org>
|
||||||
Description:
|
Description: Controls the idle timing for gc path. Set to 5 seconds by default.
|
||||||
Controls the idle timing for gc path.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/iostat_enable
|
What: /sys/fs/f2fs/<disk>/iostat_enable
|
||||||
Date: August 2017
|
Date: August 2017
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Description:
|
Description: Controls to enable/disable IO stat.
|
||||||
Controls to enable/disable IO stat.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/ra_nid_pages
|
What: /sys/fs/f2fs/<disk>/ra_nid_pages
|
||||||
Date: October 2015
|
Date: October 2015
|
||||||
Contact: "Chao Yu" <chao2.yu@samsung.com>
|
Contact: "Chao Yu" <chao2.yu@samsung.com>
|
||||||
Description:
|
Description: Controls the count of nid pages to be readaheaded.
|
||||||
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
|
What: /sys/fs/f2fs/<disk>/dirty_nats_ratio
|
||||||
Date: January 2016
|
Date: January 2016
|
||||||
Contact: "Chao Yu" <chao2.yu@samsung.com>
|
Contact: "Chao Yu" <chao2.yu@samsung.com>
|
||||||
Description:
|
Description: Controls dirty nat entries ratio threshold, if current
|
||||||
Controls dirty nat entries ratio threshold, if current
|
ratio exceeds configured threshold, checkpoint will
|
||||||
ratio exceeds configured threshold, checkpoint will
|
be triggered for flushing dirty nat entries.
|
||||||
be triggered for flushing dirty nat entries.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/lifetime_write_kbytes
|
What: /sys/fs/f2fs/<disk>/lifetime_write_kbytes
|
||||||
Date: January 2016
|
Date: January 2016
|
||||||
Contact: "Shuoran Liu" <liushuoran@huawei.com>
|
Contact: "Shuoran Liu" <liushuoran@huawei.com>
|
||||||
Description:
|
Description: Shows total written kbytes issued to disk.
|
||||||
Shows total written kbytes issued to disk.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/features
|
What: /sys/fs/f2fs/<disk>/features
|
||||||
Date: July 2017
|
Date: July 2017
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Shows all enabled features in current device.
|
||||||
Shows all enabled features in current device.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/inject_rate
|
What: /sys/fs/f2fs/<disk>/inject_rate
|
||||||
Date: May 2016
|
Date: May 2016
|
||||||
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
||||||
Description:
|
Description: Controls the injection rate of arbitrary faults.
|
||||||
Controls the injection rate.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/inject_type
|
What: /sys/fs/f2fs/<disk>/inject_type
|
||||||
Date: May 2016
|
Date: May 2016
|
||||||
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
||||||
Description:
|
Description: Controls the injection type of arbitrary faults.
|
||||||
Controls the injection type.
|
|
||||||
|
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
|
What: /sys/fs/f2fs/<disk>/reserved_blocks
|
||||||
Date: June 2017
|
Date: June 2017
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Description:
|
Description: Controls target reserved blocks in system, the threshold
|
||||||
Controls target reserved blocks in system, the threshold
|
is soft, it could exceed current available user space.
|
||||||
is soft, it could exceed current available user space.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/current_reserved_blocks
|
What: /sys/fs/f2fs/<disk>/current_reserved_blocks
|
||||||
Date: October 2017
|
Date: October 2017
|
||||||
Contact: "Yunlong Song" <yunlong.song@huawei.com>
|
Contact: "Yunlong Song" <yunlong.song@huawei.com>
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Description:
|
Description: Shows current reserved blocks in system, it may be temporarily
|
||||||
Shows current reserved blocks in system, it may be temporarily
|
smaller than target_reserved_blocks, but will gradually
|
||||||
smaller than target_reserved_blocks, but will gradually
|
increase to target_reserved_blocks when more free blocks are
|
||||||
increase to target_reserved_blocks when more free blocks are
|
freed by user later.
|
||||||
freed by user later.
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_urgent
|
What: /sys/fs/f2fs/<disk>/gc_urgent
|
||||||
Date: August 2017
|
Date: August 2017
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Do background GC agressively when set. When gc_urgent = 1,
|
||||||
Do background GC agressively
|
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
|
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
|
||||||
Date: August 2017
|
Date: August 2017
|
||||||
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
Contact: "Jaegeuk Kim" <jaegeuk@kernel.org>
|
||||||
Description:
|
Description: Controls sleep time of GC urgent mode. Set to 500ms by default.
|
||||||
Controls sleep time of GC urgent mode
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/readdir_ra
|
What: /sys/fs/f2fs/<disk>/readdir_ra
|
||||||
Date: November 2017
|
Date: November 2017
|
||||||
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
Contact: "Sheng Yong" <shengyong1@huawei.com>
|
||||||
Description:
|
Description: Controls readahead inode block in readdir. Enabled by default.
|
||||||
Controls readahead inode block in readdir.
|
|
||||||
|
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
|
What: /sys/fs/f2fs/<disk>/extension_list
|
||||||
Date: Feburary 2018
|
Date: Feburary 2018
|
||||||
Contact: "Chao Yu" <yuchao0@huawei.com>
|
Contact: "Chao Yu" <yuchao0@huawei.com>
|
||||||
Description:
|
Description: Used to control configure extension list:
|
||||||
Used to control configure extension list:
|
- Query: cat /sys/fs/f2fs/<disk>/extension_list
|
||||||
- Query: cat /sys/fs/f2fs/<disk>/extension_list
|
- Add: echo '[h/c]extension' > /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
|
||||||
- Del: echo '[h/c]!extension' > /sys/fs/f2fs/<disk>/extension_list
|
- [h] means add/del hot file extension
|
||||||
- [h] means add/del hot file extension
|
- [c] means add/del cold file extension
|
||||||
- [c] means add/del cold file extension
|
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/unusable
|
What: /sys/fs/f2fs/<disk>/unusable
|
||||||
Date April 2019
|
Date April 2019
|
||||||
Contact: "Daniel Rosenberg" <drosen@google.com>
|
Contact: "Daniel Rosenberg" <drosen@google.com>
|
||||||
Description:
|
Description: If checkpoint=disable, it displays the number of blocks that
|
||||||
If checkpoint=disable, it displays the number of blocks that are unusable.
|
are unusable.
|
||||||
If checkpoint=enable it displays the enumber of blocks that would be unusable
|
If checkpoint=enable it displays the enumber of blocks that
|
||||||
if checkpoint=disable were to be set.
|
would be unusable if checkpoint=disable were to be set.
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/encoding
|
What: /sys/fs/f2fs/<disk>/encoding
|
||||||
Date July 2019
|
Date July 2019
|
||||||
Contact: "Daniel Rosenberg" <drosen@google.com>
|
Contact: "Daniel Rosenberg" <drosen@google.com>
|
||||||
Description:
|
Description: Displays name and version of the encoding set for the filesystem.
|
||||||
Displays name and version of the encoding set for the filesystem.
|
If no encoding is set, displays (none)
|
||||||
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.
|
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.
|
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.
|
PCI_IRQ_MSI or PCI_IRQ_MSIX flags.
|
||||||
|
@@ -834,6 +834,18 @@
|
|||||||
dump out devices still on the deferred probe list after
|
dump out devices still on the deferred probe list after
|
||||||
retrying.
|
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]
|
dhash_entries= [KNL]
|
||||||
Set number of hash buckets for dentry cache.
|
Set number of hash buckets for dentry cache.
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ Core utilities
|
|||||||
generic-radix-tree
|
generic-radix-tree
|
||||||
memory-allocation
|
memory-allocation
|
||||||
mm-api
|
mm-api
|
||||||
|
pin_user_pages
|
||||||
gfp_mask-from-fs-io
|
gfp_mask-from-fs-io
|
||||||
timekeeping
|
timekeeping
|
||||||
boot-time-mm
|
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.
|
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
|
Currently generic KASAN is supported for the x86_64, arm64, xtensa, s390 and
|
||||||
architectures, and tag-based KASAN is supported only for arm64.
|
riscv architectures, and tag-based KASAN is supported only for arm64.
|
||||||
|
|
||||||
Usage
|
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
|
- "amlogic,meson8m2-clkc" for Meson8m2 (S812) SoCs
|
||||||
- #clock-cells: should be 1.
|
- #clock-cells: should be 1.
|
||||||
- #reset-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 :
|
Parent node should have the following properties :
|
||||||
- compatible: "amlogic,meson-hhi-sysctrl", "simple-mfd", "syscon"
|
- 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:
|
enum:
|
||||||
- qcom,gcc-apq8064
|
- qcom,gcc-apq8064
|
||||||
- qcom,gcc-apq8084
|
- qcom,gcc-apq8084
|
||||||
- qcom,gcc-ipq8064
|
|
||||||
- qcom,gcc-ipq4019
|
- qcom,gcc-ipq4019
|
||||||
|
- qcom,gcc-ipq6018
|
||||||
|
- qcom,gcc-ipq8064
|
||||||
- qcom,gcc-ipq8074
|
- qcom,gcc-ipq8074
|
||||||
- qcom,gcc-msm8660
|
- qcom,gcc-msm8660
|
||||||
- qcom,gcc-msm8916
|
- qcom,gcc-msm8916
|
||||||
@@ -40,20 +41,50 @@ properties:
|
|||||||
- qcom,gcc-sm8150
|
- qcom,gcc-sm8150
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
minItems: 1
|
oneOf:
|
||||||
maxItems: 3
|
#qcom,gcc-sm8150
|
||||||
items:
|
#qcom,gcc-sc7180
|
||||||
- description: Board XO source
|
- items:
|
||||||
- description: Board active XO source
|
- description: Board XO source
|
||||||
- description: Sleep clock 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:
|
clock-names:
|
||||||
minItems: 1
|
oneOf:
|
||||||
maxItems: 3
|
#qcom,gcc-sm8150
|
||||||
items:
|
#qcom,gcc-sc7180
|
||||||
- const: bi_tcxo
|
- items:
|
||||||
- const: bi_tcxo_ao
|
- const: bi_tcxo
|
||||||
- const: sleep_clk
|
- 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':
|
'#clock-cells':
|
||||||
const: 1
|
const: 1
|
||||||
@@ -118,6 +149,7 @@ else:
|
|||||||
compatible:
|
compatible:
|
||||||
contains:
|
contains:
|
||||||
enum:
|
enum:
|
||||||
|
- qcom,gcc-msm8998
|
||||||
- qcom,gcc-sm8150
|
- qcom,gcc-sm8150
|
||||||
- qcom,gcc-sc7180
|
- qcom,gcc-sc7180
|
||||||
then:
|
then:
|
||||||
@@ -179,10 +211,35 @@ examples:
|
|||||||
clock-controller@100000 {
|
clock-controller@100000 {
|
||||||
compatible = "qcom,gcc-sc7180";
|
compatible = "qcom,gcc-sc7180";
|
||||||
reg = <0x100000 0x1f0000>;
|
reg = <0x100000 0x1f0000>;
|
||||||
clocks = <&rpmhcc 0>, <&rpmhcc 1>;
|
clocks = <&rpmhcc 0>, <&rpmhcc 1>, <0>;
|
||||||
clock-names = "bi_tcxo", "bi_tcxo_ao";
|
clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
#power-domain-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,r8a7745-cpg-mssr" for the r8a7745 SoC (RZ/G1E)
|
||||||
- "renesas,r8a77470-cpg-mssr" for the r8a77470 SoC (RZ/G1C)
|
- "renesas,r8a77470-cpg-mssr" for the r8a77470 SoC (RZ/G1C)
|
||||||
- "renesas,r8a774a1-cpg-mssr" for the r8a774a1 SoC (RZ/G2M)
|
- "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,r8a774c0-cpg-mssr" for the r8a774c0 SoC (RZ/G2E)
|
||||||
- "renesas,r8a7790-cpg-mssr" for the r8a7790 SoC (R-Car H2)
|
- "renesas,r8a7790-cpg-mssr" for the r8a7790 SoC (R-Car H2)
|
||||||
- "renesas,r8a7791-cpg-mssr" for the r8a7791 SoC (R-Car M2-W)
|
- "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.
|
Documentation/devicetree/bindings/clock/clock-bindings.txt.
|
||||||
|
|
||||||
Required properties :
|
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
|
- #clock-cells : shall contain 2 with the first entry being the instance
|
||||||
offset from the clock domain base and the second being the
|
offset from the clock domain base and the second being the
|
||||||
clock index
|
clock index
|
||||||
|
- reg : clock registers
|
||||||
|
|
||||||
Example: Clock controller node on omap 4430:
|
Example: Clock controller node on omap 4430:
|
||||||
|
|
||||||
&cm2 {
|
&cm2 {
|
||||||
l4per: cm@1400 {
|
l4per: cm@1400 {
|
||||||
cm_l4per@0 {
|
cm_l4per@0 {
|
||||||
cm_l4per_clkctrl: clk@20 {
|
cm_l4per_clkctrl: clock@20 {
|
||||||
compatible = "ti,clkctrl";
|
compatible = "ti,clkctrl-l4-per", "ti,clkctrl";
|
||||||
reg = <0x20 0x1b0>;
|
reg = <0x20 0x1b0>;
|
||||||
#clock-cells = <2>;
|
#clock-cells = <2>;
|
||||||
};
|
};
|
||||||
|
@@ -43,7 +43,7 @@ Configuration of ATL instances:
|
|||||||
- aws : Audio word select signal selection
|
- 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.
|
file.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
@@ -83,7 +83,7 @@ atl: atl@4843c000 {
|
|||||||
clock-names = "fck";
|
clock-names = "fck";
|
||||||
};
|
};
|
||||||
|
|
||||||
#include <dt-bindings/clk/ti-dra7-atl.h>
|
#include <dt-bindings/clock/ti-dra7-atl.h>
|
||||||
|
|
||||||
&atl {
|
&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
|
- pinctrl-0: a phandle pointing to the pin settings for the
|
||||||
control gpios
|
control gpios
|
||||||
|
|
||||||
|
- wakeup-source: If present the device will act as wakeup-source
|
||||||
|
|
||||||
- threshold: allows setting the "click"-threshold in the range
|
- threshold: allows setting the "click"-threshold in the range
|
||||||
from 0 to 80.
|
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:
|
See touchscreen.yaml
|
||||||
|
|
||||||
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
|
|
||||||
|
@@ -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:
|
Optional properties:
|
||||||
- enable-gpios : gpio pin to enable/disable the device.
|
- enable-gpios : gpio pin to enable/disable the device.
|
||||||
- vled-supply : LED supply
|
- 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:
|
Required child properties:
|
||||||
- reg : 0 - Will enable all LED sync paths
|
- reg : 0 - Will enable all LED sync paths
|
||||||
@@ -31,6 +35,8 @@ Optional child properties:
|
|||||||
- label : see Documentation/devicetree/bindings/leds/common.txt (deprecated)
|
- label : see Documentation/devicetree/bindings/leds/common.txt (deprecated)
|
||||||
- linux,default-trigger :
|
- linux,default-trigger :
|
||||||
see Documentation/devicetree/bindings/leds/common.txt
|
see Documentation/devicetree/bindings/leds/common.txt
|
||||||
|
- led-max-microamp :
|
||||||
|
see Documentation/devicetree/bindings/leds/common.txt
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@@ -44,12 +50,14 @@ led-controller@36 {
|
|||||||
|
|
||||||
enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
|
enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
|
||||||
vled-supply = <&vbatt>;
|
vled-supply = <&vbatt>;
|
||||||
|
ti,ovp-microvolt = <29000000>;
|
||||||
|
|
||||||
led@0 {
|
led@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
function = LED_FUNCTION_BACKLIGHT;
|
function = LED_FUNCTION_BACKLIGHT;
|
||||||
color = <LED_COLOR_ID_WHITE>;
|
color = <LED_COLOR_ID_WHITE>;
|
||||||
linux,default-trigger = "backlight";
|
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
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
Definition: must specify the base address and size of the global block
|
Definition: must specify the base address and size of the global block
|
||||||
|
|
||||||
- clocks:
|
- clocks:
|
||||||
Usage: required if #clocks-cells property is present
|
Usage: required if #clock-names property is present
|
||||||
Value type: <phandle>
|
Value type: <phandle array>
|
||||||
Definition: phandle to the input PLL, which feeds the APCS mux/divider
|
Definition: phandles to the two parent clocks of the clock driver.
|
||||||
|
|
||||||
- #mbox-cells:
|
- #mbox-cells:
|
||||||
Usage: required
|
Usage: required
|
||||||
@@ -36,6 +37,12 @@ platforms.
|
|||||||
Value type: <u32>
|
Value type: <u32>
|
||||||
Definition: as described in clock.txt, must be 0
|
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
|
= EXAMPLE
|
||||||
The following example describes the APCS HMSS found in MSM8996 and part of the
|
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>;
|
clocks = <&a53pll>;
|
||||||
#clock-cells = <0>;
|
#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:
|
properties:
|
||||||
compatible:
|
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:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
@@ -25,12 +33,16 @@ properties:
|
|||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
|
minItems: 2
|
||||||
|
maxItems: 3
|
||||||
items:
|
items:
|
||||||
- description: The CSI interface clock
|
- description: The CSI interface clock
|
||||||
- description: The CSI ISP clock
|
- description: The CSI ISP clock
|
||||||
- description: The CSI DRAM clock
|
- description: The CSI DRAM clock
|
||||||
|
|
||||||
clock-names:
|
clock-names:
|
||||||
|
minItems: 2
|
||||||
|
maxItems: 3
|
||||||
items:
|
items:
|
||||||
- const: bus
|
- const: bus
|
||||||
- const: isp
|
- 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
|
Device-Tree bindings for hix5hd2 ir IP
|
||||||
|
|
||||||
Required properties:
|
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
|
- reg: Base physical address of the controller and length of memory
|
||||||
mapped region.
|
mapped region.
|
||||||
- interrupts: interrupt-specifier for the sole interrupt generated by
|
- 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-r8a7743" for the R8A7743 device
|
||||||
- "renesas,vin-r8a7744" for the R8A7744 device
|
- "renesas,vin-r8a7744" for the R8A7744 device
|
||||||
- "renesas,vin-r8a7745" for the R8A7745 device
|
- "renesas,vin-r8a7745" for the R8A7745 device
|
||||||
|
- "renesas,vin-r8a77470" for the R8A77470 device
|
||||||
- "renesas,vin-r8a774a1" for the R8A774A1 device
|
- "renesas,vin-r8a774a1" for the R8A774A1 device
|
||||||
- "renesas,vin-r8a774b1" for the R8A774B1 device
|
- "renesas,vin-r8a774b1" for the R8A774B1 device
|
||||||
- "renesas,vin-r8a774c0" for the R8A774C0 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
|
- interrupts: the interrupt for the device
|
||||||
- clocks: Reference to the parent clock
|
- 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:
|
The per-board settings for Gen2 and RZ/G1 platforms:
|
||||||
|
|
||||||
- port - sub-node describing a single endpoint connected to the VIN
|
- 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)
|
* AB8500 Multi-Functional Device (MFD)
|
||||||
|
|
||||||
Required parent device properties:
|
Required parent device properties:
|
||||||
- compatible : contains "stericsson,ab8500";
|
- compatible : contains "stericsson,ab8500" or "stericsson,ab8505";
|
||||||
- interrupts : contains the IRQ line for the AB8500
|
- interrupts : contains the IRQ line for the AB8500
|
||||||
- interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain)
|
- interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain)
|
||||||
- #interrupt-cells : should be 2, for 2-cell format
|
- #interrupt-cells : should be 2, for 2-cell format
|
||||||
@@ -49,11 +49,13 @@ ab8500-charger : : vddadc : Charger interface
|
|||||||
: CH_WD_EXP : : Charger watchdog detected
|
: CH_WD_EXP : : Charger watchdog detected
|
||||||
ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter
|
ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter
|
||||||
SW_CONV_END : :
|
SW_CONV_END : :
|
||||||
ab8500-gpio : : : GPIO Controller
|
ab8500-gpio : : : GPIO Controller (AB8500)
|
||||||
|
ab8505-gpio : : : GPIO Controller (AB8505)
|
||||||
ab8500-ponkey : ONKEY_DBF : : Power-on Key
|
ab8500-ponkey : ONKEY_DBF : : Power-on Key
|
||||||
ONKEY_DBR : :
|
ONKEY_DBR : :
|
||||||
ab8500-pwm : : : Pulse Width Modulator
|
ab8500-pwm : : : Pulse Width Modulator
|
||||||
ab8500-regulator : : : Regulators
|
ab8500-regulator : : : Regulators (AB8500)
|
||||||
|
ab8505-regulator : : : Regulators (AB8505)
|
||||||
ab8500-rtc : 60S : : Real Time Clock
|
ab8500-rtc : 60S : : Real Time Clock
|
||||||
: ALARM : :
|
: ALARM : :
|
||||||
ab8500-sysctrl : : : System Control
|
ab8500-sysctrl : : : System Control
|
||||||
|
@@ -1,10 +1,13 @@
|
|||||||
* Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)
|
* Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)
|
||||||
|
|
||||||
Required properties for USART:
|
Required properties for USART:
|
||||||
- compatible: Should be "atmel,<chip>-usart" or "atmel,<chip>-dbgu"
|
- compatible: Should be one of the following:
|
||||||
The compatible <chip> indicated will be the first SoC to support an
|
- "atmel,at91rm9200-usart"
|
||||||
additional mode or an USART new feature.
|
- "atmel,at91sam9260-usart"
|
||||||
For the dbgu UART, use "atmel,<chip>-dbgu", "atmel,<chip>-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
|
- reg: Should contain registers location and length
|
||||||
- interrupts: Should contain interrupt
|
- interrupts: Should contain interrupt
|
||||||
- clock-names: tuple listing input clock names.
|
- clock-names: tuple listing input clock names.
|
||||||
|
@@ -13,6 +13,7 @@ da9062-rtc : : Real-Time Clock
|
|||||||
da9062-onkey : : On Key
|
da9062-onkey : : On Key
|
||||||
da9062-watchdog : : Watchdog Timer
|
da9062-watchdog : : Watchdog Timer
|
||||||
da9062-thermal : : Thermal
|
da9062-thermal : : Thermal
|
||||||
|
da9062-gpio : : GPIOs
|
||||||
|
|
||||||
The DA9061 PMIC consists of:
|
The DA9061 PMIC consists of:
|
||||||
|
|
||||||
@@ -38,6 +39,15 @@ Required properties:
|
|||||||
See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for
|
See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for
|
||||||
further information on IRQ bindings.
|
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:
|
Sub-nodes:
|
||||||
|
|
||||||
- regulators : This node defines the settings for the LDOs and BUCKs.
|
- 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.
|
interfaced to host controller using I2C.
|
||||||
|
|
||||||
MAX77836 additionally contains PMIC (with two LDO regulators) and Fuel Gauge.
|
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:
|
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"
|
- compatible: "ti,tps61050" or "ti,tps61052"
|
||||||
- reg: Specifies the I2C slave address
|
- 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 {
|
i2c0 {
|
||||||
tps61052@33 {
|
tps61052@33 {
|
||||||
@@ -15,3 +30,33 @@ i2c0 {
|
|||||||
reg = <0x33>;
|
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.
|
interface clock, and the ECC circuit clock.
|
||||||
- clock-names: should contain "nand", "nand_x", "ecc"
|
- 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:
|
||||||
Sub-nodes represent available NAND chips.
|
Sub-nodes represent available NAND chips.
|
||||||
|
|
||||||
@@ -46,6 +51,8 @@ nand: nand@ff900000 {
|
|||||||
reg-names = "nand_data", "denali_reg";
|
reg-names = "nand_data", "denali_reg";
|
||||||
clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
|
clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
|
||||||
clock-names = "nand", "nand_x", "ecc";
|
clock-names = "nand", "nand_x", "ecc";
|
||||||
|
resets = <&nand_rst>, <&nand_reg_rst>;
|
||||||
|
reset-names = "nand", "reg";
|
||||||
interrupts = <0 144 4>;
|
interrupts = <0 144 4>;
|
||||||
|
|
||||||
nand@0 {
|
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-ipq4019" for ipq4019
|
||||||
- "qcom,pcie-ipq8074" for ipq8074
|
- "qcom,pcie-ipq8074" for ipq8074
|
||||||
- "qcom,pcie-qcs404" for qcs404
|
- "qcom,pcie-qcs404" for qcs404
|
||||||
|
- "qcom,pcie-sdm845" for sdm845
|
||||||
|
|
||||||
- reg:
|
- reg:
|
||||||
Usage: required
|
Usage: required
|
||||||
@@ -126,6 +127,18 @@
|
|||||||
- "master_bus" AXI Master clock
|
- "master_bus" AXI Master clock
|
||||||
- "slave_bus" AXI Slave 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:
|
- resets:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
@@ -188,6 +201,12 @@
|
|||||||
- "pwr" PWR reset
|
- "pwr" PWR reset
|
||||||
- "ahb" AHB 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:
|
- power-domains:
|
||||||
Usage: required for apq8084 and msm8996/apq8096
|
Usage: required for apq8084 and msm8996/apq8096
|
||||||
Value type: <prop-encoded-array>
|
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,msm8974-adsp-pil"
|
||||||
"qcom,msm8996-adsp-pil"
|
"qcom,msm8996-adsp-pil"
|
||||||
"qcom,msm8996-slpi-pil"
|
"qcom,msm8996-slpi-pil"
|
||||||
|
"qcom,msm8998-adsp-pas"
|
||||||
|
"qcom,msm8998-slpi-pas"
|
||||||
"qcom,qcs404-adsp-pas"
|
"qcom,qcs404-adsp-pas"
|
||||||
"qcom,qcs404-cdsp-pas"
|
"qcom,qcs404-cdsp-pas"
|
||||||
"qcom,qcs404-wcss-pas"
|
"qcom,qcs404-wcss-pas"
|
||||||
"qcom,sdm845-adsp-pas"
|
"qcom,sdm845-adsp-pas"
|
||||||
"qcom,sdm845-cdsp-pas"
|
"qcom,sdm845-cdsp-pas"
|
||||||
|
"qcom,sm8150-adsp-pas"
|
||||||
|
"qcom,sm8150-cdsp-pas"
|
||||||
|
"qcom,sm8150-mpss-pas"
|
||||||
|
"qcom,sm8150-slpi-pas"
|
||||||
|
|
||||||
- interrupts-extended:
|
- interrupts-extended:
|
||||||
Usage: required
|
Usage: required
|
||||||
@@ -29,12 +35,18 @@ on the Qualcomm ADSP Hexagon core.
|
|||||||
qcom,msm8974-adsp-pil:
|
qcom,msm8974-adsp-pil:
|
||||||
qcom,msm8996-adsp-pil:
|
qcom,msm8996-adsp-pil:
|
||||||
qcom,msm8996-slpi-pil:
|
qcom,msm8996-slpi-pil:
|
||||||
|
qcom,msm8998-adsp-pas:
|
||||||
|
qcom,msm8998-slpi-pas:
|
||||||
qcom,qcs404-adsp-pas:
|
qcom,qcs404-adsp-pas:
|
||||||
qcom,qcs404-cdsp-pas:
|
qcom,qcs404-cdsp-pas:
|
||||||
qcom,sdm845-adsp-pas:
|
qcom,sdm845-adsp-pas:
|
||||||
qcom,sdm845-cdsp-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"
|
must be "wdog", "fatal", "ready", "handover", "stop-ack"
|
||||||
qcom,qcs404-wcss-pas:
|
qcom,qcs404-wcss-pas:
|
||||||
|
qcom,sm8150-mpss-pas:
|
||||||
must be "wdog", "fatal", "ready", "handover", "stop-ack",
|
must be "wdog", "fatal", "ready", "handover", "stop-ack",
|
||||||
"shutdown-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
|
Definition: reference to the px regulator to be held on behalf of the
|
||||||
booting Hexagon core
|
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:
|
- memory-region:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <phandle>
|
Value type: <phandle>
|
||||||
|
@@ -13,6 +13,7 @@ on the Qualcomm Hexagon core.
|
|||||||
"qcom,msm8974-mss-pil"
|
"qcom,msm8974-mss-pil"
|
||||||
"qcom,msm8996-mss-pil"
|
"qcom,msm8996-mss-pil"
|
||||||
"qcom,msm8998-mss-pil"
|
"qcom,msm8998-mss-pil"
|
||||||
|
"qcom,sc7180-mss-pil"
|
||||||
"qcom,sdm845-mss-pil"
|
"qcom,sdm845-mss-pil"
|
||||||
|
|
||||||
- reg:
|
- reg:
|
||||||
@@ -43,6 +44,7 @@ on the Qualcomm Hexagon core.
|
|||||||
must be "wdog", "fatal", "ready", "handover", "stop-ack"
|
must be "wdog", "fatal", "ready", "handover", "stop-ack"
|
||||||
qcom,msm8996-mss-pil:
|
qcom,msm8996-mss-pil:
|
||||||
qcom,msm8998-mss-pil:
|
qcom,msm8998-mss-pil:
|
||||||
|
qcom,sc7180-mss-pil:
|
||||||
qcom,sdm845-mss-pil:
|
qcom,sdm845-mss-pil:
|
||||||
must be "wdog", "fatal", "ready", "handover", "stop-ack",
|
must be "wdog", "fatal", "ready", "handover", "stop-ack",
|
||||||
"shutdown-ack"
|
"shutdown-ack"
|
||||||
@@ -75,6 +77,9 @@ on the Qualcomm Hexagon core.
|
|||||||
qcom,msm8998-mss-pil:
|
qcom,msm8998-mss-pil:
|
||||||
must be "iface", "bus", "mem", "xo", "gpll0_mss",
|
must be "iface", "bus", "mem", "xo", "gpll0_mss",
|
||||||
"snoc_axi", "mnoc_axi", "qdss"
|
"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:
|
qcom,sdm845-mss-pil:
|
||||||
must be "iface", "bus", "mem", "xo", "gpll0_mss",
|
must be "iface", "bus", "mem", "xo", "gpll0_mss",
|
||||||
"snoc_axi", "mnoc_axi", "prng"
|
"snoc_axi", "mnoc_axi", "prng"
|
||||||
@@ -86,7 +91,7 @@ on the Qualcomm Hexagon core.
|
|||||||
reference to the list of 3 reset-controllers for the
|
reference to the list of 3 reset-controllers for the
|
||||||
wcss sub-system
|
wcss sub-system
|
||||||
reference to the list of 2 reset-controllers for the modem
|
reference to the list of 2 reset-controllers for the modem
|
||||||
sub-system on SDM845 SoCs
|
sub-system on SC7180, SDM845 SoCs
|
||||||
|
|
||||||
- reset-names:
|
- reset-names:
|
||||||
Usage: required
|
Usage: required
|
||||||
@@ -95,7 +100,7 @@ on the Qualcomm Hexagon core.
|
|||||||
must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
|
must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
|
||||||
for the wcss sub-system
|
for the wcss sub-system
|
||||||
must be "mss_restart", "pdc_reset" for the modem
|
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:
|
For the compatible strings below the following supplies are required:
|
||||||
"qcom,q6v5-pil"
|
"qcom,q6v5-pil"
|
||||||
@@ -144,6 +149,7 @@ For the compatible string below the following supplies are required:
|
|||||||
qcom,msm8996-mss-pil:
|
qcom,msm8996-mss-pil:
|
||||||
qcom,msm8998-mss-pil:
|
qcom,msm8998-mss-pil:
|
||||||
must be "cx", "mx"
|
must be "cx", "mx"
|
||||||
|
qcom,sc7180-mss-pil:
|
||||||
qcom,sdm845-mss-pil:
|
qcom,sdm845-mss-pil:
|
||||||
must be "cx", "mx", "mss", "load_state"
|
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
|
by the three offsets within syscon for q6, modem and nc
|
||||||
halt registers.
|
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:
|
= SUBNODES:
|
||||||
The Hexagon node must contain two subnodes, named "mba" and "mpss" representing
|
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:
|
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.
|
description: Logic PD, Inc.
|
||||||
"^longcheer,.*":
|
"^longcheer,.*":
|
||||||
description: Longcheer Technology (Shanghai) Co., Ltd.
|
description: Longcheer Technology (Shanghai) Co., Ltd.
|
||||||
|
"^loongson,.*":
|
||||||
|
description: Loongson Technology Corporation Limited
|
||||||
"^lsi,.*":
|
"^lsi,.*":
|
||||||
description: LSI Corp. (LSI Logic)
|
description: LSI Corp. (LSI Logic)
|
||||||
"^lwn,.*":
|
"^lwn,.*":
|
||||||
@@ -1084,6 +1086,8 @@ patternProperties:
|
|||||||
description: Shenzhen Xunlong Software CO.,Limited
|
description: Shenzhen Xunlong Software CO.,Limited
|
||||||
"^xylon,.*":
|
"^xylon,.*":
|
||||||
description: Xylon
|
description: Xylon
|
||||||
|
"^yna,.*":
|
||||||
|
description: YSH & ATIL
|
||||||
"^yones-toptech,.*":
|
"^yones-toptech,.*":
|
||||||
description: Yones Toptech Co., Ltd.
|
description: Yones Toptech Co., Ltd.
|
||||||
"^ysoft,.*":
|
"^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
|
performance penalty and a fixed latency. Mitigation can be increased
|
||||||
or decreased by modulating the duty cycle of the idle injection.
|
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
|
The governor will change the cooling device state thus the duty cycle
|
||||||
and this variation will modulate the cooling effect.
|
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)) /
|
P(opp)target = ((Trunning x (P(opp)running) + (Tidle x P(opp)idle)) /
|
||||||
(Trunning + Tidle)
|
(Trunning + Tidle)
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|
||||||
Tidle = Trunning x ((P(opp)running / P(opp)target) - 1)
|
Tidle = Trunning x ((P(opp)running / P(opp)target) - 1)
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
| arch |status|
|
| arch |status|
|
||||||
-----------------------
|
-----------------------
|
||||||
| alpha: | TODO |
|
| alpha: | TODO |
|
||||||
| arc: | TODO |
|
| arc: | ok |
|
||||||
| arm: | ok |
|
| arm: | ok |
|
||||||
| arm64: | ok |
|
| arm64: | ok |
|
||||||
| c6x: | TODO |
|
| 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
|
hide up to all remaining free space. The actual space that
|
||||||
would be unusable can be viewed at /sys/fs/f2fs/<disk>/unusable
|
would be unusable can be viewed at /sys/fs/f2fs/<disk>/unusable
|
||||||
This space is reclaimed once checkpoint=enable.
|
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
|
DEBUGFS ENTRIES
|
||||||
@@ -259,170 +270,6 @@ The files in each per-device directory are shown in table below.
|
|||||||
|
|
||||||
Files in /sys/fs/f2fs/<devname>
|
Files in /sys/fs/f2fs/<devname>
|
||||||
(see also Documentation/ABI/testing/sysfs-fs-f2fs)
|
(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
|
USAGE
|
||||||
@@ -840,3 +687,44 @@ zero or random data, which is useful to the below scenario where:
|
|||||||
4. address = fibmap(fd, offset)
|
4. address = fibmap(fd, offset)
|
||||||
5. open(blkdev)
|
5. open(blkdev)
|
||||||
6. write(blkdev, address)
|
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.
|
Documentation/kbuild/Kconfig.recursion-issue-02.
|
||||||
|
|
||||||
Below is a list of examples of prior fixes for these types of recursive issues;
|
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
|
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.
|
the deduced semantics matches our intended Kconfig design goals.
|
||||||
|
|
||||||
Having well defined semantics can be useful for tools for practical
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 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
|
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
|
This environment variable can be set to specify the path & name of the
|
||||||
"auto.conf" file. Its default value is "include/config/auto.conf".
|
"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
|
KCONFIG_AUTOHEADER
|
||||||
------------------
|
------------------
|
||||||
This environment variable can be set to specify the path & name of the
|
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
|
Demodulator driver
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The demodulator driver is responsible to talk with the decoding part of the
|
The demodulator driver is responsible for talking with the decoding part of the
|
||||||
hardware. Such driver should implement :c:type:`dvb_frontend_ops`, with
|
hardware. Such driver should implement :c:type:`dvb_frontend_ops`, which
|
||||||
tells what type of digital TV standards are supported, and points to a
|
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
|
series of functions that allow the DVB core to command the hardware via
|
||||||
the code under ``include/media/dvb_frontend.c``.
|
the code under ``include/media/dvb_frontend.c``.
|
||||||
@@ -120,7 +120,7 @@ Satellite TV reception is::
|
|||||||
|
|
||||||
.. |delta| unicode:: U+00394
|
.. |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
|
responsible for tuning the device. It supports multiple algorithms to
|
||||||
detect a channel, as defined at enum :c:func:`dvbfe_algo`.
|
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,
|
- As the gain is visible through the set of registers that adjust the gain,
|
||||||
typically, this statistics is always available [#f3]_.
|
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
|
can be used when adjusting an antenna position and to check for troubles
|
||||||
at the cabling.
|
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
|
On such devices, strength report should check first if carrier is
|
||||||
detected at the tuner (``FE_HAS_CARRIER``, see :c:type:`fe_status`),
|
detected at the tuner (``FE_HAS_CARRIER``, see :c:type:`fe_status`),
|
||||||
and otherwise return the lowest possible value.
|
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`)
|
Carrier Signal to Noise ratio (:ref:`DTV-STAT-CNR`)
|
||||||
- Signal to Noise ratio for the main carrier.
|
- 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
|
available when the main carrier is detected. On those hardware, CNR
|
||||||
measurement usually comes from the tuner (e. g. after ``FE_HAS_CARRIER``,
|
measurement usually comes from the tuner (e. g. after ``FE_HAS_CARRIER``,
|
||||||
see :c:type:`fe_status`).
|
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,
|
.read_status = foo_get_status_and_stats,
|
||||||
};
|
};
|
||||||
|
|
||||||
Statistics collect
|
Statistics collection
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
On almost all frontend hardware, the bit and byte counts are stored by
|
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
|
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``
|
- ``CEC_MODE_MONITOR``
|
||||||
- 0xe0
|
- 0xe0
|
||||||
- Put the file descriptor into monitor mode. Can only be used in
|
- 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.
|
otherwise the ``EINVAL`` error code will be returned.
|
||||||
In monitor mode all messages this CEC
|
In monitor mode all messages this CEC
|
||||||
device transmits and all messages it receives (both broadcast
|
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_FRAME_RATE_CHANGED 2
|
||||||
#define VIDEO_EVENT_DECODER_STOPPED 3
|
#define VIDEO_EVENT_DECODER_STOPPED 3
|
||||||
#define VIDEO_EVENT_VSYNC 4
|
#define VIDEO_EVENT_VSYNC 4
|
||||||
__kernel_time_t timestamp;
|
long timestamp;
|
||||||
union {
|
union {
|
||||||
video_size_t size;
|
video_size_t size;
|
||||||
unsigned int frame_rate; /* in frames per 1000sec */
|
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_FRAME_RATE_CHANGED 2
|
||||||
#define VIDEO_EVENT_DECODER_STOPPED 3
|
#define VIDEO_EVENT_DECODER_STOPPED 3
|
||||||
#define VIDEO_EVENT_VSYNC 4
|
#define VIDEO_EVENT_VSYNC 4
|
||||||
__kernel_time_t timestamp;
|
long timestamp;
|
||||||
union {
|
union {
|
||||||
video_size_t size;
|
video_size_t size;
|
||||||
unsigned int frame_rate; /* in frames per 1000sec */
|
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``
|
- ``V4L2_PIX_FMT_HM12``
|
||||||
- 'HM12'
|
- 'HM12'
|
||||||
- YUV 4:2:0 format used by the IVTV driver,
|
- YUV 4:2:0 format used by the IVTV driver.
|
||||||
`http://www.ivtvdriver.org/ <http://www.ivtvdriver.org/>`__
|
|
||||||
|
|
||||||
The format is documented in the kernel sources in the file
|
The format is documented in the kernel sources in the file
|
||||||
``Documentation/media/v4l-drivers/cx2341x.rst``
|
``Documentation/media/v4l-drivers/cx2341x.rst``
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
.. _v4l2-pix-fmt-sgrbg12p:
|
.. _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-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)*
|
*man V4L2_PIX_FMT_SRGGB14P(2)*
|
||||||
|
@@ -15,7 +15,7 @@ V4L2_TCH_FMT_DELTA_TD16 ('TD16')
|
|||||||
|
|
||||||
*man V4L2_TCH_FMT_DELTA_TD16(2)*
|
*man V4L2_TCH_FMT_DELTA_TD16(2)*
|
||||||
|
|
||||||
16-bit signed Touch Delta
|
16-bit signed little endian Touch Delta
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
@@ -37,38 +37,38 @@ Each cell is one byte.
|
|||||||
:widths: 2 1 1 1 1 1 1 1 1
|
:widths: 2 1 1 1 1 1 1 1 1
|
||||||
|
|
||||||
* - start + 0:
|
* - start + 0:
|
||||||
- D'\ :sub:`00high`
|
|
||||||
- D'\ :sub:`00low`
|
- D'\ :sub:`00low`
|
||||||
- D'\ :sub:`01high`
|
- D'\ :sub:`00high`
|
||||||
- D'\ :sub:`01low`
|
- D'\ :sub:`01low`
|
||||||
- D'\ :sub:`02high`
|
- D'\ :sub:`01high`
|
||||||
- D'\ :sub:`02low`
|
- D'\ :sub:`02low`
|
||||||
- D'\ :sub:`03high`
|
- D'\ :sub:`02high`
|
||||||
- D'\ :sub:`03low`
|
- D'\ :sub:`03low`
|
||||||
|
- D'\ :sub:`03high`
|
||||||
* - start + 8:
|
* - start + 8:
|
||||||
- D'\ :sub:`10high`
|
|
||||||
- D'\ :sub:`10low`
|
- D'\ :sub:`10low`
|
||||||
- D'\ :sub:`11high`
|
- D'\ :sub:`10high`
|
||||||
- D'\ :sub:`11low`
|
- D'\ :sub:`11low`
|
||||||
- D'\ :sub:`12high`
|
- D'\ :sub:`11high`
|
||||||
- D'\ :sub:`12low`
|
- D'\ :sub:`12low`
|
||||||
- D'\ :sub:`13high`
|
- D'\ :sub:`12high`
|
||||||
- D'\ :sub:`13low`
|
- D'\ :sub:`13low`
|
||||||
|
- D'\ :sub:`13high`
|
||||||
* - start + 16:
|
* - start + 16:
|
||||||
- D'\ :sub:`20high`
|
|
||||||
- D'\ :sub:`20low`
|
- D'\ :sub:`20low`
|
||||||
- D'\ :sub:`21high`
|
- D'\ :sub:`20high`
|
||||||
- D'\ :sub:`21low`
|
- D'\ :sub:`21low`
|
||||||
- D'\ :sub:`22high`
|
- D'\ :sub:`21high`
|
||||||
- D'\ :sub:`22low`
|
- D'\ :sub:`22low`
|
||||||
- D'\ :sub:`23high`
|
- D'\ :sub:`22high`
|
||||||
- D'\ :sub:`23low`
|
- D'\ :sub:`23low`
|
||||||
|
- D'\ :sub:`23high`
|
||||||
* - start + 24:
|
* - start + 24:
|
||||||
- D'\ :sub:`30high`
|
|
||||||
- D'\ :sub:`30low`
|
- D'\ :sub:`30low`
|
||||||
- D'\ :sub:`31high`
|
- D'\ :sub:`30high`
|
||||||
- D'\ :sub:`31low`
|
- D'\ :sub:`31low`
|
||||||
- D'\ :sub:`32high`
|
- D'\ :sub:`31high`
|
||||||
- D'\ :sub:`32low`
|
- D'\ :sub:`32low`
|
||||||
- D'\ :sub:`33high`
|
- D'\ :sub:`32high`
|
||||||
- D'\ :sub:`33low`
|
- D'\ :sub:`33low`
|
||||||
|
- D'\ :sub:`33high`
|
||||||
|
@@ -15,7 +15,7 @@ V4L2_TCH_FMT_TU16 ('TU16')
|
|||||||
|
|
||||||
*man V4L2_TCH_FMT_TU16(2)*
|
*man V4L2_TCH_FMT_TU16(2)*
|
||||||
|
|
||||||
16-bit unsigned raw touch data
|
16-bit unsigned little endian raw touch data
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
@@ -36,38 +36,38 @@ Each cell is one byte.
|
|||||||
:widths: 2 1 1 1 1 1 1 1 1
|
:widths: 2 1 1 1 1 1 1 1 1
|
||||||
|
|
||||||
* - start + 0:
|
* - start + 0:
|
||||||
- R'\ :sub:`00high`
|
|
||||||
- R'\ :sub:`00low`
|
- R'\ :sub:`00low`
|
||||||
- R'\ :sub:`01high`
|
- R'\ :sub:`00high`
|
||||||
- R'\ :sub:`01low`
|
- R'\ :sub:`01low`
|
||||||
- R'\ :sub:`02high`
|
- R'\ :sub:`01high`
|
||||||
- R'\ :sub:`02low`
|
- R'\ :sub:`02low`
|
||||||
- R'\ :sub:`03high`
|
- R'\ :sub:`02high`
|
||||||
- R'\ :sub:`03low`
|
- R'\ :sub:`03low`
|
||||||
|
- R'\ :sub:`03high`
|
||||||
* - start + 8:
|
* - start + 8:
|
||||||
- R'\ :sub:`10high`
|
|
||||||
- R'\ :sub:`10low`
|
- R'\ :sub:`10low`
|
||||||
- R'\ :sub:`11high`
|
- R'\ :sub:`10high`
|
||||||
- R'\ :sub:`11low`
|
- R'\ :sub:`11low`
|
||||||
- R'\ :sub:`12high`
|
- R'\ :sub:`11high`
|
||||||
- R'\ :sub:`12low`
|
- R'\ :sub:`12low`
|
||||||
- R'\ :sub:`13high`
|
- R'\ :sub:`12high`
|
||||||
- R'\ :sub:`13low`
|
- R'\ :sub:`13low`
|
||||||
|
- R'\ :sub:`13high`
|
||||||
* - start + 16:
|
* - start + 16:
|
||||||
- R'\ :sub:`20high`
|
|
||||||
- R'\ :sub:`20low`
|
- R'\ :sub:`20low`
|
||||||
- R'\ :sub:`21high`
|
- R'\ :sub:`20high`
|
||||||
- R'\ :sub:`21low`
|
- R'\ :sub:`21low`
|
||||||
- R'\ :sub:`22high`
|
- R'\ :sub:`21high`
|
||||||
- R'\ :sub:`22low`
|
- R'\ :sub:`22low`
|
||||||
- R'\ :sub:`23high`
|
- R'\ :sub:`22high`
|
||||||
- R'\ :sub:`23low`
|
- R'\ :sub:`23low`
|
||||||
|
- R'\ :sub:`23high`
|
||||||
* - start + 24:
|
* - start + 24:
|
||||||
- R'\ :sub:`30high`
|
|
||||||
- R'\ :sub:`30low`
|
- R'\ :sub:`30low`
|
||||||
- R'\ :sub:`31high`
|
- R'\ :sub:`30high`
|
||||||
- R'\ :sub:`31low`
|
- R'\ :sub:`31low`
|
||||||
- R'\ :sub:`32high`
|
- R'\ :sub:`31high`
|
||||||
- R'\ :sub:`32low`
|
- R'\ :sub:`32low`
|
||||||
- R'\ :sub:`33high`
|
- R'\ :sub:`32high`
|
||||||
- R'\ :sub:`33low`
|
- 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
|
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
|
fill the rest of the structure or return an ``EINVAL`` error code. All
|
||||||
formats are enumerable by beginning at index zero and incrementing by
|
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::
|
.. note::
|
||||||
|
|
||||||
|
@@ -279,7 +279,7 @@ EBUSY
|
|||||||
then it will set this flag to signal this to the application.
|
then it will set this flag to signal this to the application.
|
||||||
* - ``V4L2_DV_FL_HALF_LINE``
|
* - ``V4L2_DV_FL_HALF_LINE``
|
||||||
- Specific to interlaced formats: if set, then the vertical
|
- 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)
|
longer and the vertical backporch of field 2 (aka the even field)
|
||||||
is really one half-line shorter, so each field has exactly the
|
is really one half-line shorter, so each field has exactly the
|
||||||
same number of half-lines. Whether half-lines can be detected or
|
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
|
bttv
|
||||||
cafe_ccic
|
cafe_ccic
|
||||||
cpia2
|
cpia2
|
||||||
cx18
|
|
||||||
cx2341x
|
cx2341x
|
||||||
cx88
|
cx88
|
||||||
davinci-vpbe
|
davinci-vpbe
|
||||||
|
@@ -1868,12 +1868,16 @@ There are some more advanced barrier functions:
|
|||||||
(*) smp_mb__before_atomic();
|
(*) smp_mb__before_atomic();
|
||||||
(*) smp_mb__after_atomic();
|
(*) smp_mb__after_atomic();
|
||||||
|
|
||||||
These are for use with atomic (such as add, subtract, increment and
|
These are for use with atomic RMW functions that do not imply memory
|
||||||
decrement) functions that don't return a value, especially when used for
|
barriers, but where the code needs a memory barrier. Examples for atomic
|
||||||
reference counting. These functions do not imply memory barriers.
|
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
|
These are also used for atomic RMW bitop functions that do not imply a
|
||||||
value (such as set_bit and clear_bit).
|
memory barrier (such as set_bit and clear_bit).
|
||||||
|
|
||||||
As an example, consider a piece of code that marks an object as being dead
|
As an example, consider a piece of code that marks an object as being dead
|
||||||
and then decrements the object's reference count:
|
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
|
existing pages which are marked as same-value filled pages remain stored
|
||||||
unchanged in zswap until they are either loaded or invalidated.
|
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
|
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
|
of pages stored, same-value filled pages and various counters for the reasons
|
||||||
pages are rejected.
|
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: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||||
M: Len Brown <lenb@kernel.org>
|
M: Len Brown <lenb@kernel.org>
|
||||||
L: linux-acpi@vger.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
|
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/acpi/
|
||||||
|
F: drivers/pci/*/*acpi*
|
||||||
|
F: drivers/pci/*acpi*
|
||||||
F: drivers/pnp/pnpacpi/
|
F: drivers/pnp/pnpacpi/
|
||||||
|
F: include/acpi/
|
||||||
F: include/linux/acpi.h
|
F: include/linux/acpi.h
|
||||||
F: include/linux/fwnode.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/
|
F: tools/power/acpi/
|
||||||
|
|
||||||
ACPI APEI
|
ACPI APEI
|
||||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||||
M: Len Brown <lenb@kernel.org>
|
M: Len Brown <lenb@kernel.org>
|
||||||
L: linux-acpi@vger.kernel.org
|
|
||||||
R: James Morse <james.morse@arm.com>
|
R: James Morse <james.morse@arm.com>
|
||||||
R: Tony Luck <tony.luck@intel.com>
|
R: Tony Luck <tony.luck@intel.com>
|
||||||
R: Borislav Petkov <bp@alien8.de>
|
R: Borislav Petkov <bp@alien8.de>
|
||||||
|
L: linux-acpi@vger.kernel.org
|
||||||
F: drivers/acpi/apei/
|
F: drivers/acpi/apei/
|
||||||
|
|
||||||
ACPI COMPONENT ARCHITECTURE (ACPICA)
|
ACPI COMPONENT ARCHITECTURE (ACPICA)
|
||||||
@@ -349,13 +349,13 @@ M: Erik Kaneda <erik.kaneda@intel.com>
|
|||||||
M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
|
M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
L: devel@acpica.org
|
L: devel@acpica.org
|
||||||
|
S: Supported
|
||||||
W: https://acpica.org/
|
W: https://acpica.org/
|
||||||
W: https://github.com/acpica/acpica/
|
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
|
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://bugzilla.kernel.org
|
||||||
B: https://bugs.acpica.org
|
B: https://bugs.acpica.org
|
||||||
S: Supported
|
|
||||||
F: drivers/acpi/acpica/
|
F: drivers/acpi/acpica/
|
||||||
F: include/acpi/
|
F: include/acpi/
|
||||||
F: tools/power/acpi/
|
F: tools/power/acpi/
|
||||||
@@ -363,9 +363,9 @@ F: tools/power/acpi/
|
|||||||
ACPI FAN DRIVER
|
ACPI FAN DRIVER
|
||||||
M: Zhang Rui <rui.zhang@intel.com>
|
M: Zhang Rui <rui.zhang@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
W: https://01.org/linux-acpi
|
W: https://01.org/linux-acpi
|
||||||
B: https://bugzilla.kernel.org
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
|
||||||
F: drivers/acpi/fan.c
|
F: drivers/acpi/fan.c
|
||||||
|
|
||||||
ACPI FOR ARM64 (ACPI/arm64)
|
ACPI FOR ARM64 (ACPI/arm64)
|
||||||
@@ -389,26 +389,26 @@ M: Len Brown <lenb@kernel.org>
|
|||||||
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||||
R: Mika Westerberg <mika.westerberg@linux.intel.com>
|
R: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
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
|
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/
|
F: drivers/acpi/pmic/
|
||||||
|
|
||||||
ACPI THERMAL DRIVER
|
ACPI THERMAL DRIVER
|
||||||
M: Zhang Rui <rui.zhang@intel.com>
|
M: Zhang Rui <rui.zhang@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
W: https://01.org/linux-acpi
|
W: https://01.org/linux-acpi
|
||||||
B: https://bugzilla.kernel.org
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
|
||||||
F: drivers/acpi/*thermal*
|
F: drivers/acpi/*thermal*
|
||||||
|
|
||||||
ACPI VIDEO DRIVER
|
ACPI VIDEO DRIVER
|
||||||
M: Zhang Rui <rui.zhang@intel.com>
|
M: Zhang Rui <rui.zhang@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
W: https://01.org/linux-acpi
|
W: https://01.org/linux-acpi
|
||||||
B: https://bugzilla.kernel.org
|
B: https://bugzilla.kernel.org
|
||||||
S: Supported
|
|
||||||
F: drivers/acpi/acpi_video.c
|
F: drivers/acpi/acpi_video.c
|
||||||
|
|
||||||
ACPI WMI DRIVER
|
ACPI WMI DRIVER
|
||||||
@@ -4478,13 +4478,10 @@ F: drivers/net/wireless/st/cw1200/
|
|||||||
|
|
||||||
CX18 VIDEO4LINUX DRIVER
|
CX18 VIDEO4LINUX DRIVER
|
||||||
M: Andy Walls <awalls@md.metrocast.net>
|
M: Andy Walls <awalls@md.metrocast.net>
|
||||||
L: ivtv-devel@ivtvdriver.org (subscribers-only)
|
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
W: http://www.ivtvdriver.org/index.php/Cx18
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/media/v4l-drivers/cx18*
|
|
||||||
F: drivers/media/pci/cx18/
|
F: drivers/media/pci/cx18/
|
||||||
F: include/uapi/linux/ivtv*
|
F: include/uapi/linux/ivtv*
|
||||||
|
|
||||||
@@ -7381,6 +7378,7 @@ F: drivers/hwtracing/
|
|||||||
HARDWARE SPINLOCK CORE
|
HARDWARE SPINLOCK CORE
|
||||||
M: Ohad Ben-Cohen <ohad@wizery.com>
|
M: Ohad Ben-Cohen <ohad@wizery.com>
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||||
|
R: Baolin Wang <baolin.wang7@gmail.com>
|
||||||
L: linux-remoteproc@vger.kernel.org
|
L: linux-remoteproc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git hwspinlock-next
|
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
|
F: drivers/auxdisplay/img-ascii-lcd.c
|
||||||
|
|
||||||
IMGTEC IR DECODER DRIVER
|
IMGTEC IR DECODER DRIVER
|
||||||
M: James Hogan <jhogan@kernel.org>
|
S: Orphan
|
||||||
S: Maintained
|
|
||||||
F: drivers/media/rc/img-ir/
|
F: drivers/media/rc/img-ir/
|
||||||
|
|
||||||
IMON SOUNDGRAPH USB IR RECEIVER
|
IMON SOUNDGRAPH USB IR RECEIVER
|
||||||
@@ -8946,10 +8943,9 @@ F: drivers/media/tuners/it913x*
|
|||||||
|
|
||||||
IVTV VIDEO4LINUX DRIVER
|
IVTV VIDEO4LINUX DRIVER
|
||||||
M: Andy Walls <awalls@md.metrocast.net>
|
M: Andy Walls <awalls@md.metrocast.net>
|
||||||
L: ivtv-devel@ivtvdriver.org (subscribers-only)
|
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
W: http://www.ivtvdriver.org
|
W: https://linuxtv.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/media/v4l-drivers/ivtv*
|
F: Documentation/media/v4l-drivers/ivtv*
|
||||||
F: drivers/media/pci/ivtv/
|
F: drivers/media/pci/ivtv/
|
||||||
@@ -11116,7 +11112,6 @@ F: drivers/usb/image/microtek.*
|
|||||||
MIPS
|
MIPS
|
||||||
M: Ralf Baechle <ralf@linux-mips.org>
|
M: Ralf Baechle <ralf@linux-mips.org>
|
||||||
M: Paul Burton <paulburton@kernel.org>
|
M: Paul Burton <paulburton@kernel.org>
|
||||||
M: James Hogan <jhogan@kernel.org>
|
|
||||||
L: linux-mips@vger.kernel.org
|
L: linux-mips@vger.kernel.org
|
||||||
W: http://www.linux-mips.org/
|
W: http://www.linux-mips.org/
|
||||||
T: git git://git.linux-mips.org/pub/scm/ralf/linux.git
|
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
|
PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS
|
||||||
M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
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
|
L: linux-pci@vger.kernel.org
|
||||||
Q: http://patchwork.ozlabs.org/project/linux-pci/list/
|
Q: http://patchwork.ozlabs.org/project/linux-pci/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git/
|
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
|
S: Supported
|
||||||
F: tools/power/pm-graph
|
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
|
PNI RM3100 IIO DRIVER
|
||||||
M: Song Qiang <songqiang1304521@gmail.com>
|
M: Song Qiang <songqiang1304521@gmail.com>
|
||||||
L: linux-iio@vger.kernel.org
|
L: linux-iio@vger.kernel.org
|
||||||
@@ -13353,6 +13343,11 @@ S: Maintained
|
|||||||
F: drivers/iio/magnetometer/rm3100*
|
F: drivers/iio/magnetometer/rm3100*
|
||||||
F: Documentation/devicetree/bindings/iio/magnetometer/pni,rm3100.txt
|
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
|
POSIX CLOCKS and TIMERS
|
||||||
M: Thomas Gleixner <tglx@linutronix.de>
|
M: Thomas Gleixner <tglx@linutronix.de>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
@@ -14298,6 +14293,12 @@ F: drivers/hid/hid-roccat*
|
|||||||
F: include/linux/hid-roccat*
|
F: include/linux/hid-roccat*
|
||||||
F: Documentation/ABI/*/sysfs-driver-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
|
ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER
|
||||||
M: Jacob Chen <jacob-chen@iotwrt.com>
|
M: Jacob Chen <jacob-chen@iotwrt.com>
|
||||||
M: Ezequiel Garcia <ezequiel@collabora.com>
|
M: Ezequiel Garcia <ezequiel@collabora.com>
|
||||||
@@ -16738,6 +16739,7 @@ Q: http://patchwork.linuxtv.org/project/linux-media/list/
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/platform/ti-vpe/
|
F: drivers/media/platform/ti-vpe/
|
||||||
F: Documentation/devicetree/bindings/media/ti,vpe.yaml
|
F: Documentation/devicetree/bindings/media/ti,vpe.yaml
|
||||||
|
Documentation/devicetree/bindings/media/ti,cal.yaml
|
||||||
|
|
||||||
TI WILINK WIRELESS DRIVERS
|
TI WILINK WIRELESS DRIVERS
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
@@ -18105,8 +18107,8 @@ F: Documentation/core-api/workqueue.rst
|
|||||||
X-POWERS AXP288 PMIC DRIVERS
|
X-POWERS AXP288 PMIC DRIVERS
|
||||||
M: Hans de Goede <hdegoede@redhat.com>
|
M: Hans de Goede <hdegoede@redhat.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
N: axp288
|
|
||||||
F: drivers/acpi/pmic/intel_pmic_xpower.c
|
F: drivers/acpi/pmic/intel_pmic_xpower.c
|
||||||
|
N: axp288
|
||||||
|
|
||||||
X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
|
X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
|
||||||
M: Chen-Yu Tsai <wens@csie.org>
|
M: Chen-Yu Tsai <wens@csie.org>
|
||||||
|
24
Makefile
24
Makefile
@@ -423,7 +423,6 @@ INSTALLKERNEL := installkernel
|
|||||||
DEPMOD = /sbin/depmod
|
DEPMOD = /sbin/depmod
|
||||||
PERL = perl
|
PERL = perl
|
||||||
PYTHON = python
|
PYTHON = python
|
||||||
PYTHON2 = python2
|
|
||||||
PYTHON3 = python3
|
PYTHON3 = python3
|
||||||
CHECK = sparse
|
CHECK = sparse
|
||||||
BASH = bash
|
BASH = bash
|
||||||
@@ -474,7 +473,7 @@ CLANG_FLAGS :=
|
|||||||
|
|
||||||
export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE AS LD CC
|
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 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_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
|
||||||
|
|
||||||
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
|
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
|
||||||
@@ -688,7 +687,7 @@ $(KCONFIG_CONFIG):
|
|||||||
#
|
#
|
||||||
# This exploits the 'multi-target pattern rule' trick.
|
# This exploits the 'multi-target pattern rule' trick.
|
||||||
# The syncconfig should be executed only once to make all the targets.
|
# 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
|
$(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
|
||||||
else # !may-sync-config
|
else # !may-sync-config
|
||||||
# External modules and some install targets need include/generated/autoconf.h
|
# 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.
|
# using awk while concatenating to the final file.
|
||||||
|
|
||||||
PHONY += modules
|
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)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
|
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
|
||||||
|
|
||||||
modules.order: descend
|
modules.order: descend
|
||||||
$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(build-dirs)) > $@
|
$(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
|
# Target to prepare building external modules
|
||||||
PHONY += modules_prepare
|
PHONY += modules_prepare
|
||||||
modules_prepare: prepare
|
modules_prepare: prepare
|
||||||
@@ -1378,7 +1366,7 @@ _modinst_:
|
|||||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||||
fi
|
fi
|
||||||
@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
|
@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)/
|
@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
||||||
|
|
||||||
@@ -1420,7 +1408,7 @@ endif # CONFIG_MODULES
|
|||||||
|
|
||||||
# Directories & files removed with 'make clean'
|
# Directories & files removed with 'make clean'
|
||||||
CLEAN_DIRS += include/ksym
|
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'
|
# Directories & files removed with 'make mrproper'
|
||||||
MRPROPER_DIRS += include/config include/generated \
|
MRPROPER_DIRS += include/config include/generated \
|
||||||
@@ -1775,7 +1763,7 @@ clean: $(clean-dirs)
|
|||||||
-o -name '*.lex.c' -o -name '*.tab.[ch]' \
|
-o -name '*.lex.c' -o -name '*.tab.[ch]' \
|
||||||
-o -name '*.asn1.[ch]' \
|
-o -name '*.asn1.[ch]' \
|
||||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
-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 '*.c.[012]*.*' \
|
||||||
-o -name '*.ll' \
|
-o -name '*.ll' \
|
||||||
-o -name '*.gcno' \
|
-o -name '*.gcno' \
|
||||||
|
13
arch/Kconfig
13
arch/Kconfig
@@ -393,17 +393,22 @@ config HAVE_ARCH_JUMP_LABEL
|
|||||||
config HAVE_ARCH_JUMP_LABEL_RELATIVE
|
config HAVE_ARCH_JUMP_LABEL_RELATIVE
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config HAVE_RCU_TABLE_FREE
|
config MMU_GATHER_TABLE_FREE
|
||||||
bool
|
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
|
bool
|
||||||
|
|
||||||
config HAVE_MMU_GATHER_PAGE_SIZE
|
config MMU_GATHER_NO_RANGE
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config HAVE_MMU_GATHER_NO_GATHER
|
config MMU_GATHER_NO_GATHER
|
||||||
bool
|
bool
|
||||||
|
depends on MMU_GATHER_TABLE_FREE
|
||||||
|
|
||||||
config ARCH_HAVE_NMI_SAFE_CMPXCHG
|
config ARCH_HAVE_NMI_SAFE_CMPXCHG
|
||||||
bool
|
bool
|
||||||
|
@@ -119,13 +119,12 @@ static ssize_t srm_env_proc_write(struct file *file, const char __user *buffer,
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations srm_env_proc_fops = {
|
static const struct proc_ops srm_env_proc_ops = {
|
||||||
.owner = THIS_MODULE,
|
.proc_open = srm_env_proc_open,
|
||||||
.open = srm_env_proc_open,
|
.proc_read = seq_read,
|
||||||
.read = seq_read,
|
.proc_lseek = seq_lseek,
|
||||||
.llseek = seq_lseek,
|
.proc_release = single_release,
|
||||||
.release = single_release,
|
.proc_write = srm_env_proc_write,
|
||||||
.write = srm_env_proc_write,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
@@ -182,7 +181,7 @@ srm_env_init(void)
|
|||||||
entry = srm_named_entries;
|
entry = srm_named_entries;
|
||||||
while (entry->name && entry->id) {
|
while (entry->name && entry->id) {
|
||||||
if (!proc_create_data(entry->name, 0644, named_dir,
|
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;
|
goto cleanup;
|
||||||
entry++;
|
entry++;
|
||||||
}
|
}
|
||||||
@@ -194,7 +193,7 @@ srm_env_init(void)
|
|||||||
char name[4];
|
char name[4];
|
||||||
sprintf(name, "%ld", var_num);
|
sprintf(name, "%ld", var_num);
|
||||||
if (!proc_create_data(name, 0644, numbered_dir,
|
if (!proc_create_data(name, 0644, numbered_dir,
|
||||||
&srm_env_proc_fops, (void *)var_num))
|
&srm_env_proc_ops, (void *)var_num))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -28,6 +28,7 @@ config ARC
|
|||||||
select GENERIC_SMP_IDLE_THREAD
|
select GENERIC_SMP_IDLE_THREAD
|
||||||
select HAVE_ARCH_KGDB
|
select HAVE_ARCH_KGDB
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
|
select HAVE_COPY_THREAD_TLS
|
||||||
select HAVE_DEBUG_STACKOVERFLOW
|
select HAVE_DEBUG_STACKOVERFLOW
|
||||||
select HAVE_DEBUG_KMEMLEAK
|
select HAVE_DEBUG_KMEMLEAK
|
||||||
select HAVE_FUTEX_CMPXCHG if FUTEX
|
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
|
Accessing memory beyond 1GB (with or w/o PAE) requires 2 memory
|
||||||
zones.
|
zones.
|
||||||
|
|
||||||
if ISA_ARCOMPACT
|
|
||||||
|
|
||||||
config ARC_COMPACT_IRQ_LEVELS
|
config ARC_COMPACT_IRQ_LEVELS
|
||||||
|
depends on ISA_ARCOMPACT
|
||||||
bool "Setup Timer IRQ as high Priority"
|
bool "Setup Timer IRQ as high Priority"
|
||||||
# if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
|
# if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
|
||||||
depends on !SMP
|
depends on !SMP
|
||||||
@@ -360,14 +360,10 @@ config ARC_COMPACT_IRQ_LEVELS
|
|||||||
config ARC_FPU_SAVE_RESTORE
|
config ARC_FPU_SAVE_RESTORE
|
||||||
bool "Enable FPU state persistence across context switch"
|
bool "Enable FPU state persistence across context switch"
|
||||||
help
|
help
|
||||||
Double Precision Floating Point unit had dedicated regs which
|
ARCompact FPU has internal registers to assist with Double precision
|
||||||
need to be saved/restored across context-switch.
|
Floating Point operations. There are control and stauts registers
|
||||||
Note that ARC FPU is overly simplistic, unlike say x86, which has
|
for floating point exceptions and rounding modes. These are
|
||||||
hardware pieces to allow software to conditionally save/restore,
|
preserved across task context switch when enabled.
|
||||||
based on actual usage of FPU by a task. Thus our implemn does
|
|
||||||
this for all tasks in system.
|
|
||||||
|
|
||||||
endif #ISA_ARCOMPACT
|
|
||||||
|
|
||||||
config ARC_CANT_LLSC
|
config ARC_CANT_LLSC
|
||||||
def_bool n
|
def_bool n
|
||||||
|
@@ -78,6 +78,7 @@
|
|||||||
interrupt-names = "macirq";
|
interrupt-names = "macirq";
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
snps,pbl = < 32 >;
|
snps,pbl = < 32 >;
|
||||||
|
snps,multicast-filter-bins = <256>;
|
||||||
clocks = <&apbclk>;
|
clocks = <&apbclk>;
|
||||||
clock-names = "stmmaceth";
|
clock-names = "stmmaceth";
|
||||||
max-speed = <100>;
|
max-speed = <100>;
|
||||||
|
@@ -39,6 +39,8 @@
|
|||||||
#define ARC_REG_CLUSTER_BCR 0xcf
|
#define ARC_REG_CLUSTER_BCR 0xcf
|
||||||
#define ARC_REG_AUX_ICCM 0x208 /* ICCM Base Addr (ARCv2) */
|
#define ARC_REG_AUX_ICCM 0x208 /* ICCM Base Addr (ARCv2) */
|
||||||
#define ARC_REG_LPB_CTRL 0x488 /* ARCv2 Loop Buffer control */
|
#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 */
|
/* Common for ARCompact and ARCv2 status register */
|
||||||
#define ARC_REG_STATUS32 0x0A
|
#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_none(x) (!pmd_val(x))
|
||||||
#define pmd_bad(x) ((pmd_val(x) & ~PAGE_MASK))
|
#define pmd_bad(x) ((pmd_val(x) & ~PAGE_MASK))
|
||||||
#define pmd_present(x) (pmd_val(x))
|
#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 pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0)
|
||||||
|
|
||||||
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
||||||
|
@@ -14,15 +14,7 @@
|
|||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
#include <asm/fpu.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
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_PLAT_EZNPS
|
#ifdef CONFIG_ARC_PLAT_EZNPS
|
||||||
struct eznps_dp {
|
struct eznps_dp {
|
||||||
|
@@ -9,19 +9,7 @@
|
|||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
#include <asm/fpu.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 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_PLAT_EZNPS
|
#ifdef CONFIG_ARC_PLAT_EZNPS
|
||||||
extern void dp_save_restore(struct task_struct *p, struct task_struct *n);
|
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) \
|
#define switch_to(prev, next, last) \
|
||||||
do { \
|
do { \
|
||||||
ARC_EZNPS_DP_PREV(prev, next); \
|
ARC_EZNPS_DP_PREV(prev, next); \
|
||||||
ARC_FPU_PREV(prev, next); \
|
fpu_save_restore(prev, next); \
|
||||||
last = __switch_to(prev, next);\
|
last = __switch_to(prev, next);\
|
||||||
ARC_FPU_NEXT(next); \
|
|
||||||
mb(); \
|
mb(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
int sys_clone_wrapper(int, int, int, int, int);
|
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_cacheflush(uint32_t, uint32_t uint32_t);
|
||||||
int sys_arc_settls(void *);
|
int sys_arc_settls(void *);
|
||||||
int sys_arc_gettls(void);
|
int sys_arc_gettls(void);
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#define __ARCH_WANT_SET_GET_RLIMIT
|
#define __ARCH_WANT_SET_GET_RLIMIT
|
||||||
#define __ARCH_WANT_SYS_EXECVE
|
#define __ARCH_WANT_SYS_EXECVE
|
||||||
#define __ARCH_WANT_SYS_CLONE
|
#define __ARCH_WANT_SYS_CLONE
|
||||||
|
#define __ARCH_WANT_SYS_CLONE3
|
||||||
#define __ARCH_WANT_SYS_VFORK
|
#define __ARCH_WANT_SYS_VFORK
|
||||||
#define __ARCH_WANT_SYS_FORK
|
#define __ARCH_WANT_SYS_FORK
|
||||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
#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_JUMP_LABEL) += jump_label.o
|
||||||
|
|
||||||
obj-$(CONFIG_ARC_FPU_SAVE_RESTORE) += fpu.o
|
obj-$(CONFIG_ARC_FPU_SAVE_RESTORE) += fpu.o
|
||||||
|
ifdef CONFIG_ISA_ARCOMPACT
|
||||||
CFLAGS_fpu.o += -mdpfp
|
CFLAGS_fpu.o += -mdpfp
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_ARC_DW2_UNWIND
|
ifdef CONFIG_ARC_DW2_UNWIND
|
||||||
CFLAGS_ctx_sw.o += -fno-omit-frame-pointer
|
CFLAGS_ctx_sw.o += -fno-omit-frame-pointer
|
||||||
|
@@ -35,6 +35,18 @@ ENTRY(sys_clone_wrapper)
|
|||||||
b .Lret_from_system_call
|
b .Lret_from_system_call
|
||||||
END(sys_clone_wrapper)
|
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)
|
ENTRY(ret_from_fork)
|
||||||
; when the forked child comes here from the __switch_to function
|
; when the forked child comes here from the __switch_to function
|
||||||
; r0 has the last task pointer.
|
; r0 has the last task pointer.
|
||||||
|
@@ -6,7 +6,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/sched.h>
|
#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.
|
* 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))
|
: "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/elf.h>
|
||||||
#include <linux/tick.h>
|
#include <linux/tick.h>
|
||||||
|
|
||||||
|
#include <asm/fpu.h>
|
||||||
|
|
||||||
SYSCALL_DEFINE1(arc_settls, void *, user_tls_data_ptr)
|
SYSCALL_DEFINE1(arc_settls, void *, user_tls_data_ptr)
|
||||||
{
|
{
|
||||||
task_thread_info(current)->thr_ptr = (unsigned int)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 |
|
* | user_r25 |
|
||||||
* ------------------ <===== END of PAGE
|
* ------------------ <===== END of PAGE
|
||||||
*/
|
*/
|
||||||
int copy_thread(unsigned long clone_flags,
|
int copy_thread_tls(unsigned long clone_flags, unsigned long usp,
|
||||||
unsigned long usp, unsigned long kthread_arg,
|
unsigned long kthread_arg, struct task_struct *p, unsigned long tls)
|
||||||
struct task_struct *p)
|
|
||||||
{
|
{
|
||||||
struct pt_regs *c_regs; /* child's pt_regs */
|
struct pt_regs *c_regs; /* child's pt_regs */
|
||||||
unsigned long *childksp; /* to unwind out of __switch_to() */
|
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
|
* set task's userland tls data ptr from 4th arg
|
||||||
* clone C-lib call is difft from clone sys-call
|
* 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 {
|
} else {
|
||||||
/* Normal fork case: set parent's TLS ptr in child */
|
/* Normal fork case: set parent's TLS ptr in child */
|
||||||
task_thread_info(p)->thr_ptr =
|
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
|
* 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->sp = usp;
|
||||||
regs->ret = pc;
|
regs->ret = pc;
|
||||||
@@ -280,6 +281,8 @@ void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long usp)
|
|||||||
regs->eflags = 0;
|
regs->eflags = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
fpu_init_task(regs);
|
||||||
|
|
||||||
/* bogus seed values for debugging */
|
/* bogus seed values for debugging */
|
||||||
regs->lp_start = 0x10;
|
regs->lp_start = 0x10;
|
||||||
regs->lp_end = 0x80;
|
regs->lp_end = 0x80;
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
#include <asm/syscalls.h>
|
#include <asm/syscalls.h>
|
||||||
|
|
||||||
#define sys_clone sys_clone_wrapper
|
#define sys_clone sys_clone_wrapper
|
||||||
|
#define sys_clone3 sys_clone3_wrapper
|
||||||
|
|
||||||
#undef __SYSCALL
|
#undef __SYSCALL
|
||||||
#define __SYSCALL(nr, call) [nr] = (call),
|
#define __SYSCALL(nr, call) [nr] = (call),
|
||||||
|
@@ -102,7 +102,7 @@ config ARM
|
|||||||
select HAVE_PERF_EVENTS
|
select HAVE_PERF_EVENTS
|
||||||
select HAVE_PERF_REGS
|
select HAVE_PERF_REGS
|
||||||
select HAVE_PERF_USER_STACK_DUMP
|
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_REGS_AND_STACK_ACCESS_API
|
||||||
select HAVE_RSEQ
|
select HAVE_RSEQ
|
||||||
select HAVE_STACKPROTECTOR
|
select HAVE_STACKPROTECTOR
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#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>
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include "dra72x.dtsi"
|
#include "dra72x.dtsi"
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#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";
|
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