Linux 4.7
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJXlRXSAAoJEHm+PkMAQRiGG/gH/0Z8O4zWOsrwO+X1mRToRDBH joFOjAmCVe83T1VpF5LYNB+9+owL/dEDt6+ZIswnhH7AfQPjs4RqwS4PcuMbCDVO +mDm0PmfcKaYcQZrB2Z2OwIzRNnfCTVcsDPhIHwuIHk0m4z/xuGZonD8KoAj0+tO 3yJF6sbE1KubDVjOb+lmZZSP3cXA0pDXrNhkYhE4Tsr8fiihGjeXSNJ8t2zPLjxo W3MPqo0rzDvQsOwoF4TWHHagVaFSJlhLBBgqu33fI7uO3jtfQD2G8wG68JCND1j3 qbMoBfTLFV/yQmSIJUt0Wv1axaCcwnjpweEB35A/GEeZ0mNB1rDdoBeI1eKEQkc= =DGFC -----END PGP SIGNATURE----- Merge tag 'v4.7' into for-linus/pstore Linux 4.7
This commit is contained in:
commit
74e630a758
6
.mailmap
6
.mailmap
|
@ -21,6 +21,7 @@ Andrey Ryabinin <ryabinin.a.a@gmail.com> <a.ryabinin@samsung.com>
|
||||||
Andrew Morton <akpm@linux-foundation.org>
|
Andrew Morton <akpm@linux-foundation.org>
|
||||||
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>
|
||||||
Antonio Ospite <ao2@ao2.it> <ao2@amarulasolutions.com>
|
Antonio Ospite <ao2@ao2.it> <ao2@amarulasolutions.com>
|
||||||
Archit Taneja <archit@ti.com>
|
Archit Taneja <archit@ti.com>
|
||||||
Arnaud Patard <arnaud.patard@rtp-net.org>
|
Arnaud Patard <arnaud.patard@rtp-net.org>
|
||||||
|
@ -30,6 +31,9 @@ Axel Lin <axel.lin@gmail.com>
|
||||||
Ben Gardner <bgardner@wabtec.com>
|
Ben Gardner <bgardner@wabtec.com>
|
||||||
Ben M Cahill <ben.m.cahill@intel.com>
|
Ben M Cahill <ben.m.cahill@intel.com>
|
||||||
Björn Steinbrink <B.Steinbrink@gmx.de>
|
Björn Steinbrink <B.Steinbrink@gmx.de>
|
||||||
|
Boris Brezillon <boris.brezillon@free-electrons.com>
|
||||||
|
Boris Brezillon <boris.brezillon@free-electrons.com> <b.brezillon.dev@gmail.com>
|
||||||
|
Boris Brezillon <boris.brezillon@free-electrons.com> <b.brezillon@overkiz.com>
|
||||||
Brian Avery <b.avery@hp.com>
|
Brian Avery <b.avery@hp.com>
|
||||||
Brian King <brking@us.ibm.com>
|
Brian King <brking@us.ibm.com>
|
||||||
Christoph Hellwig <hch@lst.de>
|
Christoph Hellwig <hch@lst.de>
|
||||||
|
@ -89,6 +93,7 @@ Leonid I Ananiev <leonid.i.ananiev@intel.com>
|
||||||
Linas Vepstas <linas@austin.ibm.com>
|
Linas Vepstas <linas@austin.ibm.com>
|
||||||
Mark Brown <broonie@sirena.org.uk>
|
Mark Brown <broonie@sirena.org.uk>
|
||||||
Matthieu CASTET <castet.matthieu@free.fr>
|
Matthieu CASTET <castet.matthieu@free.fr>
|
||||||
|
Mauro Carvalho Chehab <mchehab@kernel.org> <maurochehab@gmail.com> <mchehab@infradead.org> <mchehab@redhat.com> <m.chehab@samsung.com> <mchehab@osg.samsung.com> <mchehab@s-opensource.com>
|
||||||
Mayuresh Janorkar <mayur@ti.com>
|
Mayuresh Janorkar <mayur@ti.com>
|
||||||
Michael Buesch <m@bues.ch>
|
Michael Buesch <m@bues.ch>
|
||||||
Michel Dänzer <michel@tungstengraphics.com>
|
Michel Dänzer <michel@tungstengraphics.com>
|
||||||
|
@ -122,6 +127,7 @@ Santosh Shilimkar <santosh.shilimkar@oracle.org>
|
||||||
Sascha Hauer <s.hauer@pengutronix.de>
|
Sascha Hauer <s.hauer@pengutronix.de>
|
||||||
S.Çağlar Onur <caglar@pardus.org.tr>
|
S.Çağlar Onur <caglar@pardus.org.tr>
|
||||||
Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
|
Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
|
||||||
|
Shuah Khan <shuah@kernel.org> <shuahkhan@gmail.com> <shuah.khan@hp.com> <shuahkh@osg.samsung.com> <shuah.kh@samsung.com>
|
||||||
Simon Kelley <simon@thekelleys.org.uk>
|
Simon Kelley <simon@thekelleys.org.uk>
|
||||||
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
||||||
Stephen Hemminger <shemminger@osdl.org>
|
Stephen Hemminger <shemminger@osdl.org>
|
||||||
|
|
1
CREDITS
1
CREDITS
|
@ -649,6 +649,7 @@ D: Configure, Menuconfig, xconfig
|
||||||
|
|
||||||
N: Mauro Carvalho Chehab
|
N: Mauro Carvalho Chehab
|
||||||
E: m.chehab@samsung.org
|
E: m.chehab@samsung.org
|
||||||
|
E: mchehab@osg.samsung.com
|
||||||
E: mchehab@infradead.org
|
E: mchehab@infradead.org
|
||||||
D: Media subsystem (V4L/DVB) drivers and core
|
D: Media subsystem (V4L/DVB) drivers and core
|
||||||
D: EDAC drivers and EDAC 3.0 core rework
|
D: EDAC drivers and EDAC 3.0 core rework
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name
|
What: /config/usb-gadget/gadget/functions/uvc.name
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: UVC function directory
|
Description: UVC function directory
|
||||||
|
|
||||||
streaming_maxburst - 0..15 (ss only)
|
streaming_maxburst - 0..15 (ss only)
|
||||||
|
@ -9,37 +9,37 @@ Description: UVC function directory
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control
|
What: /config/usb-gadget/gadget/functions/uvc.name/control
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Control descriptors
|
Description: Control descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/class
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/class
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Class descriptors
|
Description: Class descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/class/ss
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/class/ss
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Super speed control class descriptors
|
Description: Super speed control class descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/class/fs
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/class/fs
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Full speed control class descriptors
|
Description: Full speed control class descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Terminal descriptors
|
Description: Terminal descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Output terminal descriptors
|
Description: Output terminal descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output/default
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/output/default
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Default output terminal descriptors
|
Description: Default output terminal descriptors
|
||||||
|
|
||||||
All attributes read only:
|
All attributes read only:
|
||||||
|
@ -53,12 +53,12 @@ Description: Default output terminal descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Camera terminal descriptors
|
Description: Camera terminal descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera/default
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/terminal/camera/default
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Default camera terminal descriptors
|
Description: Default camera terminal descriptors
|
||||||
|
|
||||||
All attributes read only:
|
All attributes read only:
|
||||||
|
@ -75,12 +75,12 @@ Description: Default camera terminal descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/processing
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/processing
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Processing unit descriptors
|
Description: Processing unit descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/processing/default
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/processing/default
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Default processing unit descriptors
|
Description: Default processing unit descriptors
|
||||||
|
|
||||||
All attributes read only:
|
All attributes read only:
|
||||||
|
@ -94,49 +94,49 @@ Description: Default processing unit descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/header
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/header
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Control header descriptors
|
Description: Control header descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/control/header/name
|
What: /config/usb-gadget/gadget/functions/uvc.name/control/header/name
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Specific control header descriptors
|
Description: Specific control header descriptors
|
||||||
|
|
||||||
dwClockFrequency
|
dwClockFrequency
|
||||||
bcdUVC
|
bcdUVC
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Streaming descriptors
|
Description: Streaming descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Streaming class descriptors
|
Description: Streaming class descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/ss
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/ss
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Super speed streaming class descriptors
|
Description: Super speed streaming class descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/hs
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/hs
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: High speed streaming class descriptors
|
Description: High speed streaming class descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/fs
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/class/fs
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Full speed streaming class descriptors
|
Description: Full speed streaming class descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Color matching descriptors
|
Description: Color matching descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching/default
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/color_matching/default
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Default color matching descriptors
|
Description: Default color matching descriptors
|
||||||
|
|
||||||
All attributes read only:
|
All attributes read only:
|
||||||
|
@ -150,12 +150,12 @@ Description: Default color matching descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: MJPEG format descriptors
|
Description: MJPEG format descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Specific MJPEG format descriptors
|
Description: Specific MJPEG format descriptors
|
||||||
|
|
||||||
All attributes read only,
|
All attributes read only,
|
||||||
|
@ -174,7 +174,7 @@ Description: Specific MJPEG format descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name/name
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/mjpeg/name/name
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Specific MJPEG frame descriptors
|
Description: Specific MJPEG frame descriptors
|
||||||
|
|
||||||
dwFrameInterval - indicates how frame interval can be
|
dwFrameInterval - indicates how frame interval can be
|
||||||
|
@ -196,12 +196,12 @@ Description: Specific MJPEG frame descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Uncompressed format descriptors
|
Description: Uncompressed format descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Specific uncompressed format descriptors
|
Description: Specific uncompressed format descriptors
|
||||||
|
|
||||||
bmaControls - this format's data for bmaControls in
|
bmaControls - this format's data for bmaControls in
|
||||||
|
@ -221,7 +221,7 @@ Description: Specific uncompressed format descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name/name
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/uncompressed/name/name
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Specific uncompressed frame descriptors
|
Description: Specific uncompressed frame descriptors
|
||||||
|
|
||||||
dwFrameInterval - indicates how frame interval can be
|
dwFrameInterval - indicates how frame interval can be
|
||||||
|
@ -243,12 +243,12 @@ Description: Specific uncompressed frame descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Streaming header descriptors
|
Description: Streaming header descriptors
|
||||||
|
|
||||||
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header/name
|
What: /config/usb-gadget/gadget/functions/uvc.name/streaming/header/name
|
||||||
Date: Dec 2014
|
Date: Dec 2014
|
||||||
KernelVersion: 3.20
|
KernelVersion: 4.0
|
||||||
Description: Specific streaming header descriptors
|
Description: Specific streaming header descriptors
|
||||||
|
|
||||||
All attributes read only:
|
All attributes read only:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
What /sys/bus/iio/devices/iio:deviceX/in_proximity_raw
|
What /sys/bus/iio/devices/iio:deviceX/in_proximity_input
|
||||||
Date: March 2014
|
Date: March 2014
|
||||||
KernelVersion: 3.15
|
KernelVersion: 3.15
|
||||||
Contact: Matt Ranostay <mranostay@gmail.com>
|
Contact: Matt Ranostay <mranostay@gmail.com>
|
||||||
|
|
|
@ -128,16 +128,44 @@ X!Edrivers/base/interface.c
|
||||||
!Edrivers/base/platform.c
|
!Edrivers/base/platform.c
|
||||||
!Edrivers/base/bus.c
|
!Edrivers/base/bus.c
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1><title>Device Drivers DMA Management</title>
|
<sect1>
|
||||||
|
<title>Buffer Sharing and Synchronization</title>
|
||||||
|
<para>
|
||||||
|
The dma-buf subsystem provides the framework for sharing buffers
|
||||||
|
for hardware (DMA) access across multiple device drivers and
|
||||||
|
subsystems, and for synchronizing asynchronous hardware access.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
This is used, for example, by drm "prime" multi-GPU support, but
|
||||||
|
is of course not limited to GPU use cases.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The three main components of this are: (1) dma-buf, representing
|
||||||
|
a sg_table and exposed to userspace as a file descriptor to allow
|
||||||
|
passing between devices, (2) fence, which provides a mechanism
|
||||||
|
to signal when one device as finished access, and (3) reservation,
|
||||||
|
which manages the shared or exclusive fence(s) associated with
|
||||||
|
the buffer.
|
||||||
|
</para>
|
||||||
|
<sect2><title>dma-buf</title>
|
||||||
!Edrivers/dma-buf/dma-buf.c
|
!Edrivers/dma-buf/dma-buf.c
|
||||||
!Edrivers/dma-buf/fence.c
|
!Iinclude/linux/dma-buf.h
|
||||||
!Edrivers/dma-buf/seqno-fence.c
|
</sect2>
|
||||||
!Iinclude/linux/fence.h
|
<sect2><title>reservation</title>
|
||||||
!Iinclude/linux/seqno-fence.h
|
!Pdrivers/dma-buf/reservation.c Reservation Object Overview
|
||||||
!Edrivers/dma-buf/reservation.c
|
!Edrivers/dma-buf/reservation.c
|
||||||
!Iinclude/linux/reservation.h
|
!Iinclude/linux/reservation.h
|
||||||
|
</sect2>
|
||||||
|
<sect2><title>fence</title>
|
||||||
|
!Edrivers/dma-buf/fence.c
|
||||||
|
!Iinclude/linux/fence.h
|
||||||
|
!Edrivers/dma-buf/seqno-fence.c
|
||||||
|
!Iinclude/linux/seqno-fence.h
|
||||||
!Edrivers/dma-buf/sync_file.c
|
!Edrivers/dma-buf/sync_file.c
|
||||||
!Iinclude/linux/sync_file.h
|
!Iinclude/linux/sync_file.h
|
||||||
|
</sect2>
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>Device Drivers DMA Management</title>
|
||||||
!Edrivers/base/dma-coherent.c
|
!Edrivers/base/dma-coherent.c
|
||||||
!Edrivers/base/dma-mapping.c
|
!Edrivers/base/dma-mapping.c
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
|
@ -56,6 +56,7 @@ stable kernels.
|
||||||
| ARM | MMU-500 | #841119,#826419 | N/A |
|
| ARM | MMU-500 | #841119,#826419 | N/A |
|
||||||
| | | | |
|
| | | | |
|
||||||
| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
|
| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
|
||||||
|
| Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 |
|
||||||
| Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 |
|
| Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 |
|
||||||
| Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 |
|
| Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 |
|
||||||
| Cavium | ThunderX SMMUv2 | #27704 | N/A |
|
| Cavium | ThunderX SMMUv2 | #27704 | N/A |
|
||||||
|
|
|
@ -62,6 +62,7 @@ Required properties:
|
||||||
display-timings are used instead.
|
display-timings are used instead.
|
||||||
|
|
||||||
Optional properties (required if display-timings are used):
|
Optional properties (required if display-timings are used):
|
||||||
|
- ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
|
||||||
- display-timings : A node that describes the display timings as defined in
|
- display-timings : A node that describes the display timings as defined in
|
||||||
Documentation/devicetree/bindings/display/display-timing.txt.
|
Documentation/devicetree/bindings/display/display-timing.txt.
|
||||||
- fsl,data-mapping : should be "spwg" or "jeida"
|
- fsl,data-mapping : should be "spwg" or "jeida"
|
||||||
|
|
|
@ -7,6 +7,7 @@ Required properties:
|
||||||
- "ti,ina220" for ina220
|
- "ti,ina220" for ina220
|
||||||
- "ti,ina226" for ina226
|
- "ti,ina226" for ina226
|
||||||
- "ti,ina230" for ina230
|
- "ti,ina230" for ina230
|
||||||
|
- "ti,ina231" for ina231
|
||||||
- reg: I2C address
|
- reg: I2C address
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
|
|
|
@ -44,8 +44,8 @@ Required properties:
|
||||||
- our-claim-gpio: The GPIO that we use to claim the bus.
|
- our-claim-gpio: The GPIO that we use to claim the bus.
|
||||||
- their-claim-gpios: The GPIOs that the other sides use to claim the bus.
|
- their-claim-gpios: The GPIOs that the other sides use to claim the bus.
|
||||||
Note that some implementations may only support a single other master.
|
Note that some implementations may only support a single other master.
|
||||||
- Standard I2C mux properties. See mux.txt in this directory.
|
- Standard I2C mux properties. See i2c-mux.txt in this directory.
|
||||||
- Single I2C child bus node at reg 0. See mux.txt in this directory.
|
- Single I2C child bus node at reg 0. See i2c-mux.txt in this directory.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- slew-delay-us: microseconds to wait for a GPIO to go high. Default is 10 us.
|
- slew-delay-us: microseconds to wait for a GPIO to go high. Default is 10 us.
|
||||||
|
|
|
@ -27,7 +27,8 @@ Required properties:
|
||||||
- i2c-bus-name: The name of this bus. Also needed as pinctrl-name for the I2C
|
- i2c-bus-name: The name of this bus. Also needed as pinctrl-name for the I2C
|
||||||
parents.
|
parents.
|
||||||
|
|
||||||
Furthermore, I2C mux properties and child nodes. See mux.txt in this directory.
|
Furthermore, I2C mux properties and child nodes. See i2c-mux.txt in this
|
||||||
|
directory.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,8 @@ Required properties:
|
||||||
- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
|
- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
|
||||||
port is connected to.
|
port is connected to.
|
||||||
- mux-gpios: list of gpios used to control the muxer
|
- mux-gpios: list of gpios used to control the muxer
|
||||||
* Standard I2C mux properties. See mux.txt in this directory.
|
* Standard I2C mux properties. See i2c-mux.txt in this directory.
|
||||||
* I2C child bus nodes. See mux.txt in this directory.
|
* I2C child bus nodes. See i2c-mux.txt in this directory.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- idle-state: value to set the muxer to when idle. When no value is
|
- idle-state: value to set the muxer to when idle. When no value is
|
||||||
|
@ -33,7 +33,7 @@ For each i2c child node, an I2C child bus will be created. They will
|
||||||
be numbered based on their order in the device tree.
|
be numbered based on their order in the device tree.
|
||||||
|
|
||||||
Whenever an access is made to a device on a child bus, the value set
|
Whenever an access is made to a device on a child bus, the value set
|
||||||
in the revelant node's reg property will be output using the list of
|
in the relevant node's reg property will be output using the list of
|
||||||
GPIOs, the first in the list holding the least-significant value.
|
GPIOs, the first in the list holding the least-significant value.
|
||||||
|
|
||||||
If an idle state is defined, using the idle-state (optional) property,
|
If an idle state is defined, using the idle-state (optional) property,
|
||||||
|
|
|
@ -28,9 +28,9 @@ Also required are:
|
||||||
* Standard pinctrl properties that specify the pin mux state for each child
|
* Standard pinctrl properties that specify the pin mux state for each child
|
||||||
bus. See ../pinctrl/pinctrl-bindings.txt.
|
bus. See ../pinctrl/pinctrl-bindings.txt.
|
||||||
|
|
||||||
* Standard I2C mux properties. See mux.txt in this directory.
|
* Standard I2C mux properties. See i2c-mux.txt in this directory.
|
||||||
|
|
||||||
* I2C child bus nodes. See mux.txt in this directory.
|
* I2C child bus nodes. See i2c-mux.txt in this directory.
|
||||||
|
|
||||||
For each named state defined in the pinctrl-names property, an I2C child bus
|
For each named state defined in the pinctrl-names property, an I2C child bus
|
||||||
will be created. I2C child bus numbers are assigned based on the index into
|
will be created. I2C child bus numbers are assigned based on the index into
|
||||||
|
|
|
@ -7,8 +7,8 @@ Required properties:
|
||||||
- compatible: i2c-mux-reg
|
- compatible: i2c-mux-reg
|
||||||
- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
|
- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
|
||||||
port is connected to.
|
port is connected to.
|
||||||
* Standard I2C mux properties. See mux.txt in this directory.
|
* Standard I2C mux properties. See i2c-mux.txt in this directory.
|
||||||
* I2C child bus nodes. See mux.txt in this directory.
|
* I2C child bus nodes. See i2c-mux.txt in this directory.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- reg: this pair of <offset size> specifies the register to control the mux.
|
- reg: this pair of <offset size> specifies the register to control the mux.
|
||||||
|
@ -24,7 +24,7 @@ Optional properties:
|
||||||
given, it defaults to the last value used.
|
given, it defaults to the last value used.
|
||||||
|
|
||||||
Whenever an access is made to a device on a child bus, the value set
|
Whenever an access is made to a device on a child bus, the value set
|
||||||
in the revelant node's reg property will be output to the register.
|
in the relevant node's reg property will be output to the register.
|
||||||
|
|
||||||
If an idle state is defined, using the idle-state (optional) property,
|
If an idle state is defined, using the idle-state (optional) property,
|
||||||
whenever an access is not being made to a device on a child bus, the
|
whenever an access is not being made to a device on a child bus, the
|
||||||
|
|
|
@ -13,10 +13,10 @@ Optional properties:
|
||||||
initialization. This is an array of 28 values(u8).
|
initialization. This is an array of 28 values(u8).
|
||||||
|
|
||||||
- marvell,wakeup-pin: It represents wakeup pin number of the bluetooth chip.
|
- marvell,wakeup-pin: It represents wakeup pin number of the bluetooth chip.
|
||||||
firmware will use the pin to wakeup host system.
|
firmware will use the pin to wakeup host system (u16).
|
||||||
- marvell,wakeup-gap-ms: wakeup gap represents wakeup latency of the host
|
- marvell,wakeup-gap-ms: wakeup gap represents wakeup latency of the host
|
||||||
platform. The value will be configured to firmware. This
|
platform. The value will be configured to firmware. This
|
||||||
is needed to work chip's sleep feature as expected.
|
is needed to work chip's sleep feature as expected (u16).
|
||||||
- interrupt-parent: phandle of the parent interrupt controller
|
- interrupt-parent: phandle of the parent interrupt controller
|
||||||
- interrupts : interrupt pin number to the cpu. Driver will request an irq based
|
- interrupts : interrupt pin number to the cpu. Driver will request an irq based
|
||||||
on this interrupt number. During system suspend, the irq will be
|
on this interrupt number. During system suspend, the irq will be
|
||||||
|
@ -50,7 +50,7 @@ calibration data is also available in below example.
|
||||||
0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
|
0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
|
||||||
0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
|
0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
|
||||||
0x00 0x00 0xf0 0x00>;
|
0x00 0x00 0xf0 0x00>;
|
||||||
marvell,wakeup-pin = <0x0d>;
|
marvell,wakeup-pin = /bits/ 16 <0x0d>;
|
||||||
marvell,wakeup-gap-ms = <0x64>;
|
marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -255,6 +255,7 @@ synology Synology, Inc.
|
||||||
SUNW Sun Microsystems, Inc
|
SUNW Sun Microsystems, Inc
|
||||||
tbs TBS Technologies
|
tbs TBS Technologies
|
||||||
tcl Toby Churchill Ltd.
|
tcl Toby Churchill Ltd.
|
||||||
|
technexion TechNexion
|
||||||
technologic Technologic Systems
|
technologic Technologic Systems
|
||||||
thine THine Electronics, Inc.
|
thine THine Electronics, Inc.
|
||||||
ti Texas Instruments
|
ti Texas Instruments
|
||||||
|
@ -269,6 +270,7 @@ tronsmart Tronsmart
|
||||||
truly Truly Semiconductors Limited
|
truly Truly Semiconductors Limited
|
||||||
tyan Tyan Computer Corporation
|
tyan Tyan Computer Corporation
|
||||||
upisemi uPI Semiconductor Corp.
|
upisemi uPI Semiconductor Corp.
|
||||||
|
uniwest United Western Technologies Corp (UniWest)
|
||||||
urt United Radiant Technology Corporation
|
urt United Radiant Technology Corporation
|
||||||
usi Universal Scientific Industrial Co., Ltd.
|
usi Universal Scientific Industrial Co., Ltd.
|
||||||
v3 V3 Semiconductor
|
v3 V3 Semiconductor
|
||||||
|
|
|
@ -1,141 +1,26 @@
|
||||||
|
Each mount of the devpts filesystem is now distinct such that ptys
|
||||||
|
and their indicies allocated in one mount are independent from ptys
|
||||||
|
and their indicies in all other mounts.
|
||||||
|
|
||||||
To support containers, we now allow multiple instances of devpts filesystem,
|
All mounts of the devpts filesystem now create a /dev/pts/ptmx node
|
||||||
such that indices of ptys allocated in one instance are independent of indices
|
with permissions 0000.
|
||||||
allocated in other instances of devpts.
|
|
||||||
|
|
||||||
To preserve backward compatibility, this support for multiple instances is
|
To retain backwards compatibility the a ptmx device node (aka any node
|
||||||
enabled only if:
|
created with "mknod name c 5 2") when opened will look for an instance
|
||||||
|
of devpts under the name "pts" in the same directory as the ptmx device
|
||||||
|
node.
|
||||||
|
|
||||||
- CONFIG_DEVPTS_MULTIPLE_INSTANCES=y, and
|
As an option instead of placing a /dev/ptmx device node at /dev/ptmx
|
||||||
- '-o newinstance' mount option is specified while mounting devpts
|
it is possible to place a symlink to /dev/pts/ptmx at /dev/ptmx or
|
||||||
|
to bind mount /dev/ptx/ptmx to /dev/ptmx. If you opt for using
|
||||||
IOW, devpts now supports both single-instance and multi-instance semantics.
|
the devpts filesystem in this manner devpts should be mounted with
|
||||||
|
the ptmxmode=0666, or chmod 0666 /dev/pts/ptmx should be called.
|
||||||
If CONFIG_DEVPTS_MULTIPLE_INSTANCES=n, there is no change in behavior and
|
|
||||||
this referred to as the "legacy" mode. In this mode, the new mount options
|
|
||||||
(-o newinstance and -o ptmxmode) will be ignored with a 'bogus option' message
|
|
||||||
on console.
|
|
||||||
|
|
||||||
If CONFIG_DEVPTS_MULTIPLE_INSTANCES=y and devpts is mounted without the
|
|
||||||
'newinstance' option (as in current start-up scripts) the new mount binds
|
|
||||||
to the initial kernel mount of devpts. This mode is referred to as the
|
|
||||||
'single-instance' mode and the current, single-instance semantics are
|
|
||||||
preserved, i.e PTYs are common across the system.
|
|
||||||
|
|
||||||
The only difference between this single-instance mode and the legacy mode
|
|
||||||
is the presence of new, '/dev/pts/ptmx' node with permissions 0000, which
|
|
||||||
can safely be ignored.
|
|
||||||
|
|
||||||
If CONFIG_DEVPTS_MULTIPLE_INSTANCES=y and 'newinstance' option is specified,
|
|
||||||
the mount is considered to be in the multi-instance mode and a new instance
|
|
||||||
of the devpts fs is created. Any ptys created in this instance are independent
|
|
||||||
of ptys in other instances of devpts. Like in the single-instance mode, the
|
|
||||||
/dev/pts/ptmx node is present. To effectively use the multi-instance mode,
|
|
||||||
open of /dev/ptmx must be a redirected to '/dev/pts/ptmx' using a symlink or
|
|
||||||
bind-mount.
|
|
||||||
|
|
||||||
Eg: A container startup script could do the following:
|
|
||||||
|
|
||||||
$ chmod 0666 /dev/pts/ptmx
|
|
||||||
$ rm /dev/ptmx
|
|
||||||
$ ln -s pts/ptmx /dev/ptmx
|
|
||||||
$ ns_exec -cm /bin/bash
|
|
||||||
|
|
||||||
# We are now in new container
|
|
||||||
|
|
||||||
$ umount /dev/pts
|
|
||||||
$ mount -t devpts -o newinstance lxcpts /dev/pts
|
|
||||||
$ sshd -p 1234
|
|
||||||
|
|
||||||
where 'ns_exec -cm /bin/bash' calls clone() with CLONE_NEWNS flag and execs
|
|
||||||
/bin/bash in the child process. A pty created by the sshd is not visible in
|
|
||||||
the original mount of /dev/pts.
|
|
||||||
|
|
||||||
Total count of pty pairs in all instances is limited by sysctls:
|
Total count of pty pairs in all instances is limited by sysctls:
|
||||||
kernel.pty.max = 4096 - global limit
|
kernel.pty.max = 4096 - global limit
|
||||||
kernel.pty.reserve = 1024 - reserve for initial instance
|
kernel.pty.reserve = 1024 - reserved for filesystems mounted from the initial mount namespace
|
||||||
kernel.pty.nr - current count of ptys
|
kernel.pty.nr - current count of ptys
|
||||||
|
|
||||||
Per-instance limit could be set by adding mount option "max=<count>".
|
Per-instance limit could be set by adding mount option "max=<count>".
|
||||||
This feature was added in kernel 3.4 together with sysctl kernel.pty.reserve.
|
This feature was added in kernel 3.4 together with sysctl kernel.pty.reserve.
|
||||||
In kernels older than 3.4 sysctl kernel.pty.max works as per-instance limit.
|
In kernels older than 3.4 sysctl kernel.pty.max works as per-instance limit.
|
||||||
|
|
||||||
User-space changes
|
|
||||||
------------------
|
|
||||||
|
|
||||||
In multi-instance mode (i.e '-o newinstance' mount option is specified at least
|
|
||||||
once), following user-space issues should be noted.
|
|
||||||
|
|
||||||
1. If -o newinstance mount option is never used, /dev/pts/ptmx can be ignored
|
|
||||||
and no change is needed to system-startup scripts.
|
|
||||||
|
|
||||||
2. To effectively use multi-instance mode (i.e -o newinstance is specified)
|
|
||||||
administrators or startup scripts should "redirect" open of /dev/ptmx to
|
|
||||||
/dev/pts/ptmx using either a bind mount or symlink.
|
|
||||||
|
|
||||||
$ mount -t devpts -o newinstance devpts /dev/pts
|
|
||||||
|
|
||||||
followed by either
|
|
||||||
|
|
||||||
$ rm /dev/ptmx
|
|
||||||
$ ln -s pts/ptmx /dev/ptmx
|
|
||||||
$ chmod 666 /dev/pts/ptmx
|
|
||||||
or
|
|
||||||
$ mount -o bind /dev/pts/ptmx /dev/ptmx
|
|
||||||
|
|
||||||
3. The '/dev/ptmx -> pts/ptmx' symlink is the preferred method since it
|
|
||||||
enables better error-reporting and treats both single-instance and
|
|
||||||
multi-instance mounts similarly.
|
|
||||||
|
|
||||||
But this method requires that system-startup scripts set the mode of
|
|
||||||
/dev/pts/ptmx correctly (default mode is 0000). The scripts can set the
|
|
||||||
mode by, either
|
|
||||||
|
|
||||||
- adding ptmxmode mount option to devpts entry in /etc/fstab, or
|
|
||||||
- using 'chmod 0666 /dev/pts/ptmx'
|
|
||||||
|
|
||||||
4. If multi-instance mode mount is needed for containers, but the system
|
|
||||||
startup scripts have not yet been updated, container-startup scripts
|
|
||||||
should bind mount /dev/ptmx to /dev/pts/ptmx to avoid breaking single-
|
|
||||||
instance mounts.
|
|
||||||
|
|
||||||
Or, in general, container-startup scripts should use:
|
|
||||||
|
|
||||||
mount -t devpts -o newinstance -o ptmxmode=0666 devpts /dev/pts
|
|
||||||
if [ ! -L /dev/ptmx ]; then
|
|
||||||
mount -o bind /dev/pts/ptmx /dev/ptmx
|
|
||||||
fi
|
|
||||||
|
|
||||||
When all devpts mounts are multi-instance, /dev/ptmx can permanently be
|
|
||||||
a symlink to pts/ptmx and the bind mount can be ignored.
|
|
||||||
|
|
||||||
5. A multi-instance mount that is not accompanied by the /dev/ptmx to
|
|
||||||
/dev/pts/ptmx redirection would result in an unusable/unreachable pty.
|
|
||||||
|
|
||||||
mount -t devpts -o newinstance lxcpts /dev/pts
|
|
||||||
|
|
||||||
immediately followed by:
|
|
||||||
|
|
||||||
open("/dev/ptmx")
|
|
||||||
|
|
||||||
would create a pty, say /dev/pts/7, in the initial kernel mount.
|
|
||||||
But /dev/pts/7 would be invisible in the new mount.
|
|
||||||
|
|
||||||
6. The permissions for /dev/pts/ptmx node should be specified when mounting
|
|
||||||
/dev/pts, using the '-o ptmxmode=%o' mount option (default is 0000).
|
|
||||||
|
|
||||||
mount -t devpts -o newinstance -o ptmxmode=0644 devpts /dev/pts
|
|
||||||
|
|
||||||
The permissions can be later be changed as usual with 'chmod'.
|
|
||||||
|
|
||||||
chmod 666 /dev/pts/ptmx
|
|
||||||
|
|
||||||
7. A mount of devpts without the 'newinstance' option results in binding to
|
|
||||||
initial kernel mount. This behavior while preserving legacy semantics,
|
|
||||||
does not provide strict isolation in a container environment. i.e by
|
|
||||||
mounting devpts without the 'newinstance' option, a container could
|
|
||||||
get visibility into the 'host' or root container's devpts.
|
|
||||||
|
|
||||||
To workaround this and have strict isolation, all mounts of devpts,
|
|
||||||
including the mount in the root container, should use the newinstance
|
|
||||||
option.
|
|
||||||
|
|
|
@ -139,27 +139,6 @@ Examples of using the Linux-provided gdb helpers
|
||||||
start_comm = "swapper/2\000\000\000\000\000\000"
|
start_comm = "swapper/2\000\000\000\000\000\000"
|
||||||
}
|
}
|
||||||
|
|
||||||
o Dig into a radix tree data structure, such as the IRQ descriptors:
|
|
||||||
(gdb) print (struct irq_desc)$lx_radix_tree_lookup(irq_desc_tree, 18)
|
|
||||||
$6 = {
|
|
||||||
irq_common_data = {
|
|
||||||
state_use_accessors = 67584,
|
|
||||||
handler_data = 0x0 <__vectors_start>,
|
|
||||||
msi_desc = 0x0 <__vectors_start>,
|
|
||||||
affinity = {{
|
|
||||||
bits = {65535}
|
|
||||||
}}
|
|
||||||
},
|
|
||||||
irq_data = {
|
|
||||||
mask = 0,
|
|
||||||
irq = 18,
|
|
||||||
hwirq = 27,
|
|
||||||
common = 0xee803d80,
|
|
||||||
chip = 0xc0eb0854 <gic_data>,
|
|
||||||
domain = 0xee808000,
|
|
||||||
parent_data = 0x0 <__vectors_start>,
|
|
||||||
chip_data = 0xc0eb0854 <gic_data>
|
|
||||||
} <... trimmed ...>
|
|
||||||
|
|
||||||
List of commands and functions
|
List of commands and functions
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
|
@ -170,21 +170,92 @@ document trapinfo
|
||||||
address the kernel panicked.
|
address the kernel panicked.
|
||||||
end
|
end
|
||||||
|
|
||||||
|
define dump_log_idx
|
||||||
|
set $idx = $arg0
|
||||||
|
if ($argc > 1)
|
||||||
|
set $prev_flags = $arg1
|
||||||
|
else
|
||||||
|
set $prev_flags = 0
|
||||||
|
end
|
||||||
|
set $msg = ((struct printk_log *) (log_buf + $idx))
|
||||||
|
set $prefix = 1
|
||||||
|
set $newline = 1
|
||||||
|
set $log = log_buf + $idx + sizeof(*$msg)
|
||||||
|
|
||||||
|
# prev & LOG_CONT && !(msg->flags & LOG_PREIX)
|
||||||
|
if (($prev_flags & 8) && !($msg->flags & 4))
|
||||||
|
set $prefix = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# msg->flags & LOG_CONT
|
||||||
|
if ($msg->flags & 8)
|
||||||
|
# (prev & LOG_CONT && !(prev & LOG_NEWLINE))
|
||||||
|
if (($prev_flags & 8) && !($prev_flags & 2))
|
||||||
|
set $prefix = 0
|
||||||
|
end
|
||||||
|
# (!(msg->flags & LOG_NEWLINE))
|
||||||
|
if (!($msg->flags & 2))
|
||||||
|
set $newline = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if ($prefix)
|
||||||
|
printf "[%5lu.%06lu] ", $msg->ts_nsec / 1000000000, $msg->ts_nsec % 1000000000
|
||||||
|
end
|
||||||
|
if ($msg->text_len != 0)
|
||||||
|
eval "printf \"%%%d.%ds\", $log", $msg->text_len, $msg->text_len
|
||||||
|
end
|
||||||
|
if ($newline)
|
||||||
|
printf "\n"
|
||||||
|
end
|
||||||
|
if ($msg->dict_len > 0)
|
||||||
|
set $dict = $log + $msg->text_len
|
||||||
|
set $idx = 0
|
||||||
|
set $line = 1
|
||||||
|
while ($idx < $msg->dict_len)
|
||||||
|
if ($line)
|
||||||
|
printf " "
|
||||||
|
set $line = 0
|
||||||
|
end
|
||||||
|
set $c = $dict[$idx]
|
||||||
|
if ($c == '\0')
|
||||||
|
printf "\n"
|
||||||
|
set $line = 1
|
||||||
|
else
|
||||||
|
if ($c < ' ' || $c >= 127 || $c == '\\')
|
||||||
|
printf "\\x%02x", $c
|
||||||
|
else
|
||||||
|
printf "%c", $c
|
||||||
|
end
|
||||||
|
end
|
||||||
|
set $idx = $idx + 1
|
||||||
|
end
|
||||||
|
printf "\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
document dump_log_idx
|
||||||
|
Dump a single log given its index in the log buffer. The first
|
||||||
|
parameter is the index into log_buf, the second is optional and
|
||||||
|
specified the previous log buffer's flags, used for properly
|
||||||
|
formatting continued lines.
|
||||||
|
end
|
||||||
|
|
||||||
define dmesg
|
define dmesg
|
||||||
set $i = 0
|
set $i = log_first_idx
|
||||||
set $end_idx = (log_end - 1) & (log_buf_len - 1)
|
set $end_idx = log_first_idx
|
||||||
|
set $prev_flags = 0
|
||||||
|
|
||||||
while ($i < logged_chars)
|
while (1)
|
||||||
set $idx = (log_end - 1 - logged_chars + $i) & (log_buf_len - 1)
|
set $msg = ((struct printk_log *) (log_buf + $i))
|
||||||
|
if ($msg->len == 0)
|
||||||
if ($idx + 100 <= $end_idx) || \
|
set $i = 0
|
||||||
($end_idx <= $idx && $idx + 100 < log_buf_len)
|
|
||||||
printf "%.100s", &log_buf[$idx]
|
|
||||||
set $i = $i + 100
|
|
||||||
else
|
else
|
||||||
printf "%c", log_buf[$idx]
|
dump_log_idx $i $prev_flags
|
||||||
set $i = $i + 1
|
set $i = $i + $msg->len
|
||||||
|
set $prev_flags = $msg->flags
|
||||||
|
end
|
||||||
|
if ($i == $end_idx)
|
||||||
|
loop_break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -74,8 +74,8 @@ blink_set() function (see <linux/leds.h>). To set an LED to blinking,
|
||||||
however, it is better to use the API function led_blink_set(), as it
|
however, it is better to use the API function led_blink_set(), as it
|
||||||
will check and implement software fallback if necessary.
|
will check and implement software fallback if necessary.
|
||||||
|
|
||||||
To turn off blinking again, use the API function led_brightness_set()
|
To turn off blinking, use the API function led_brightness_set()
|
||||||
as that will not just set the LED brightness but also stop any software
|
with brightness value LED_OFF, which should stop any software
|
||||||
timers that may have been required for blinking.
|
timers that may have been required for blinking.
|
||||||
|
|
||||||
The blink_set() function should choose a user friendly blinking value
|
The blink_set() function should choose a user friendly blinking value
|
||||||
|
|
|
@ -369,8 +369,6 @@ does not allocate any driver private context space.
|
||||||
Switch configuration
|
Switch configuration
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
- priv_size: additional size needed by the switch driver for its private context
|
|
||||||
|
|
||||||
- tag_protocol: this is to indicate what kind of tagging protocol is supported,
|
- tag_protocol: this is to indicate what kind of tagging protocol is supported,
|
||||||
should be a valid value from the dsa_tag_protocol enum
|
should be a valid value from the dsa_tag_protocol enum
|
||||||
|
|
||||||
|
@ -416,11 +414,6 @@ PHY devices and link management
|
||||||
to the switch port MDIO registers. If unavailable return a negative error
|
to the switch port MDIO registers. If unavailable return a negative error
|
||||||
code.
|
code.
|
||||||
|
|
||||||
- poll_link: Function invoked by DSA to query the link state of the switch
|
|
||||||
builtin Ethernet PHYs, per port. This function is responsible for calling
|
|
||||||
netif_carrier_{on,off} when appropriate, and can be used to poll all ports in a
|
|
||||||
single call. Executes from workqueue context.
|
|
||||||
|
|
||||||
- adjust_link: Function invoked by the PHY library when a slave network device
|
- adjust_link: Function invoked by the PHY library when a slave network device
|
||||||
is attached to a PHY device. This function is responsible for appropriately
|
is attached to a PHY device. This function is responsible for appropriately
|
||||||
configuring the switch port link parameters: speed, duplex, pause based on
|
configuring the switch port link parameters: speed, duplex, pause based on
|
||||||
|
@ -542,6 +535,16 @@ Bridge layer
|
||||||
Bridge VLAN filtering
|
Bridge VLAN filtering
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
- port_vlan_filtering: bridge layer function invoked when the bridge gets
|
||||||
|
configured for turning on or off VLAN filtering. If nothing specific needs to
|
||||||
|
be done at the hardware level, this callback does not need to be implemented.
|
||||||
|
When VLAN filtering is turned on, the hardware must be programmed with
|
||||||
|
rejecting 802.1Q frames which have VLAN IDs outside of the programmed allowed
|
||||||
|
VLAN ID map/rules. If there is no PVID programmed into the switch port,
|
||||||
|
untagged frames must be rejected as well. When turned off the switch must
|
||||||
|
accept any 802.1Q frames irrespective of their VLAN ID, and untagged frames are
|
||||||
|
allowed.
|
||||||
|
|
||||||
- port_vlan_prepare: bridge layer function invoked when the bridge prepares the
|
- port_vlan_prepare: bridge layer function invoked when the bridge prepares the
|
||||||
configuration of a VLAN on the given port. If the operation is not supported
|
configuration of a VLAN on the given port. If the operation is not supported
|
||||||
by the hardware, this function should return -EOPNOTSUPP to inform the bridge
|
by the hardware, this function should return -EOPNOTSUPP to inform the bridge
|
||||||
|
|
|
@ -1036,15 +1036,17 @@ proxy_arp_pvlan - BOOLEAN
|
||||||
|
|
||||||
shared_media - BOOLEAN
|
shared_media - BOOLEAN
|
||||||
Send(router) or accept(host) RFC1620 shared media redirects.
|
Send(router) or accept(host) RFC1620 shared media redirects.
|
||||||
Overrides ip_secure_redirects.
|
Overrides secure_redirects.
|
||||||
shared_media for the interface will be enabled if at least one of
|
shared_media for the interface will be enabled if at least one of
|
||||||
conf/{all,interface}/shared_media is set to TRUE,
|
conf/{all,interface}/shared_media is set to TRUE,
|
||||||
it will be disabled otherwise
|
it will be disabled otherwise
|
||||||
default TRUE
|
default TRUE
|
||||||
|
|
||||||
secure_redirects - BOOLEAN
|
secure_redirects - BOOLEAN
|
||||||
Accept ICMP redirect messages only for gateways,
|
Accept ICMP redirect messages only to gateways listed in the
|
||||||
listed in default gateway list.
|
interface's current gateway list. Even if disabled, RFC1122 redirect
|
||||||
|
rules still apply.
|
||||||
|
Overridden by shared_media.
|
||||||
secure_redirects for the interface will be enabled if at least one of
|
secure_redirects for the interface will be enabled if at least one of
|
||||||
conf/{all,interface}/secure_redirects is set to TRUE,
|
conf/{all,interface}/secure_redirects is set to TRUE,
|
||||||
it will be disabled otherwise
|
it will be disabled otherwise
|
||||||
|
|
|
@ -263,19 +263,23 @@ scmd->allowed.
|
||||||
|
|
||||||
3. scmd recovered
|
3. scmd recovered
|
||||||
ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
|
ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
|
||||||
- shost->host_failed--
|
|
||||||
- clear scmd->eh_eflags
|
- clear scmd->eh_eflags
|
||||||
- scsi_setup_cmd_retry()
|
- scsi_setup_cmd_retry()
|
||||||
- move from local eh_work_q to local eh_done_q
|
- move from local eh_work_q to local eh_done_q
|
||||||
LOCKING: none
|
LOCKING: none
|
||||||
|
CONCURRENCY: at most one thread per separate eh_work_q to
|
||||||
|
keep queue manipulation lockless
|
||||||
|
|
||||||
4. EH completes
|
4. EH completes
|
||||||
ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
|
ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper
|
||||||
layer of failure.
|
layer of failure. May be called concurrently but must have
|
||||||
|
a no more than one thread per separate eh_work_q to
|
||||||
|
manipulate the queue locklessly
|
||||||
- scmd is removed from eh_done_q and scmd->eh_entry is cleared
|
- scmd is removed from eh_done_q and scmd->eh_entry is cleared
|
||||||
- if retry is necessary, scmd is requeued using
|
- if retry is necessary, scmd is requeued using
|
||||||
scsi_queue_insert()
|
scsi_queue_insert()
|
||||||
- otherwise, scsi_finish_command() is invoked for scmd
|
- otherwise, scsi_finish_command() is invoked for scmd
|
||||||
|
- zero shost->host_failed
|
||||||
LOCKING: queue or finish function performs appropriate locking
|
LOCKING: queue or finish function performs appropriate locking
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -826,7 +826,8 @@ The keyctl syscall functions are:
|
||||||
(*) Compute a Diffie-Hellman shared secret or public key
|
(*) Compute a Diffie-Hellman shared secret or public key
|
||||||
|
|
||||||
long keyctl(KEYCTL_DH_COMPUTE, struct keyctl_dh_params *params,
|
long keyctl(KEYCTL_DH_COMPUTE, struct keyctl_dh_params *params,
|
||||||
char *buffer, size_t buflen);
|
char *buffer, size_t buflen,
|
||||||
|
void *reserved);
|
||||||
|
|
||||||
The params struct contains serial numbers for three keys:
|
The params struct contains serial numbers for three keys:
|
||||||
|
|
||||||
|
@ -843,6 +844,8 @@ The keyctl syscall functions are:
|
||||||
public key. If the base is the remote public key, the result is
|
public key. If the base is the remote public key, the result is
|
||||||
the shared secret.
|
the shared secret.
|
||||||
|
|
||||||
|
The reserved argument must be set to NULL.
|
||||||
|
|
||||||
The buffer length must be at least the length of the prime, or zero.
|
The buffer length must be at least the length of the prime, or zero.
|
||||||
|
|
||||||
If the buffer length is nonzero, the length of the result is
|
If the buffer length is nonzero, the length of the result is
|
||||||
|
|
|
@ -45,7 +45,7 @@ is how we expect the compiler, application and kernel to work together.
|
||||||
MPX-instrumented.
|
MPX-instrumented.
|
||||||
3) The kernel detects that the CPU has MPX, allows the new prctl() to
|
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
|
succeed, and notes the location of the bounds directory. Userspace is
|
||||||
expected to keep the bounds directory at that locationWe note it
|
expected to keep the bounds directory at that location. We note it
|
||||||
instead of reading it each time because the 'xsave' operation needed
|
instead of reading it each time because the 'xsave' operation needed
|
||||||
to access the bounds directory register is an expensive operation.
|
to access the bounds directory register is an expensive operation.
|
||||||
4) If the application needs to spill bounds out of the 4 registers, it
|
4) If the application needs to spill bounds out of the 4 registers, it
|
||||||
|
@ -167,7 +167,7 @@ If a #BR is generated due to a bounds violation caused by MPX.
|
||||||
We need to decode MPX instructions to get violation address and
|
We need to decode MPX instructions to get violation address and
|
||||||
set this address into extended struct siginfo.
|
set this address into extended struct siginfo.
|
||||||
|
|
||||||
The _sigfault feild of struct siginfo is extended as follow:
|
The _sigfault field of struct siginfo is extended as follow:
|
||||||
|
|
||||||
87 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
|
87 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
|
||||||
88 struct {
|
88 struct {
|
||||||
|
@ -240,5 +240,5 @@ them at the same bounds table.
|
||||||
This is allowed architecturally. See more information "Intel(R) Architecture
|
This is allowed architecturally. See more information "Intel(R) Architecture
|
||||||
Instruction Set Extensions Programming Reference" (9.3.4).
|
Instruction Set Extensions Programming Reference" (9.3.4).
|
||||||
|
|
||||||
However, if users did this, the kernel might be fooled in to unmaping an
|
However, if users did this, the kernel might be fooled in to unmapping an
|
||||||
in-use bounds table since it does not recognize sharing.
|
in-use bounds table since it does not recognize sharing.
|
||||||
|
|
|
@ -5,7 +5,7 @@ memory, it has two choices:
|
||||||
from areas other than the one we are trying to flush will be
|
from areas other than the one we are trying to flush will be
|
||||||
destroyed and must be refilled later, at some cost.
|
destroyed and must be refilled later, at some cost.
|
||||||
2. Use the invlpg instruction to invalidate a single page at a
|
2. Use the invlpg instruction to invalidate a single page at a
|
||||||
time. This could potentialy cost many more instructions, but
|
time. This could potentially cost many more instructions, but
|
||||||
it is a much more precise operation, causing no collateral
|
it is a much more precise operation, causing no collateral
|
||||||
damage to other TLB entries.
|
damage to other TLB entries.
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Which method to do depends on a few things:
|
||||||
work.
|
work.
|
||||||
3. The size of the TLB. The larger the TLB, the more collateral
|
3. The size of the TLB. The larger the TLB, the more collateral
|
||||||
damage we do with a full flush. So, the larger the TLB, the
|
damage we do with a full flush. So, the larger the TLB, the
|
||||||
more attrative an individual flush looks. Data and
|
more attractive an individual flush looks. Data and
|
||||||
instructions have separate TLBs, as do different page sizes.
|
instructions have separate TLBs, as do different page sizes.
|
||||||
4. The microarchitecture. The TLB has become a multi-level
|
4. The microarchitecture. The TLB has become a multi-level
|
||||||
cache on modern CPUs, and the global flushes have become more
|
cache on modern CPUs, and the global flushes have become more
|
||||||
|
|
|
@ -36,7 +36,7 @@ between all CPUs.
|
||||||
|
|
||||||
check_interval
|
check_interval
|
||||||
How often to poll for corrected machine check errors, in seconds
|
How often to poll for corrected machine check errors, in seconds
|
||||||
(Note output is hexademical). Default 5 minutes. When the poller
|
(Note output is hexadecimal). Default 5 minutes. When the poller
|
||||||
finds MCEs it triggers an exponential speedup (poll more often) on
|
finds MCEs it triggers an exponential speedup (poll more often) on
|
||||||
the polling interval. When the poller stops finding MCEs, it
|
the polling interval. When the poller stops finding MCEs, it
|
||||||
triggers an exponential backoff (poll less often) on the polling
|
triggers an exponential backoff (poll less often) on the polling
|
||||||
|
|
89
MAINTAINERS
89
MAINTAINERS
|
@ -595,6 +595,10 @@ S: Odd Fixes
|
||||||
L: linux-alpha@vger.kernel.org
|
L: linux-alpha@vger.kernel.org
|
||||||
F: arch/alpha/
|
F: arch/alpha/
|
||||||
|
|
||||||
|
ALPS PS/2 TOUCHPAD DRIVER
|
||||||
|
R: Pali Rohár <pali.rohar@gmail.com>
|
||||||
|
F: drivers/input/mouse/alps.*
|
||||||
|
|
||||||
ALTERA MAILBOX DRIVER
|
ALTERA MAILBOX DRIVER
|
||||||
M: Ley Foon Tan <lftan@altera.com>
|
M: Ley Foon Tan <lftan@altera.com>
|
||||||
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
||||||
|
@ -1159,6 +1163,7 @@ F: arch/arm/mach-footbridge/
|
||||||
ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
|
ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
|
||||||
M: Shawn Guo <shawnguo@kernel.org>
|
M: Shawn Guo <shawnguo@kernel.org>
|
||||||
M: Sascha Hauer <kernel@pengutronix.de>
|
M: Sascha Hauer <kernel@pengutronix.de>
|
||||||
|
R: Fabio Estevam <fabio.estevam@nxp.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
|
||||||
|
@ -1689,8 +1694,6 @@ S: Maintained
|
||||||
F: drivers/edac/altera_edac.
|
F: drivers/edac/altera_edac.
|
||||||
|
|
||||||
ARM/STI ARCHITECTURE
|
ARM/STI ARCHITECTURE
|
||||||
M: Srinivas Kandagatla <srinivas.kandagatla@gmail.com>
|
|
||||||
M: Maxime Coquelin <maxime.coquelin@st.com>
|
|
||||||
M: Patrice Chotard <patrice.chotard@st.com>
|
M: Patrice Chotard <patrice.chotard@st.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
L: kernel@stlinux.com
|
L: kernel@stlinux.com
|
||||||
|
@ -1723,6 +1726,7 @@ F: drivers/ata/ahci_st.c
|
||||||
|
|
||||||
ARM/STM32 ARCHITECTURE
|
ARM/STM32 ARCHITECTURE
|
||||||
M: Maxime Coquelin <mcoquelin.stm32@gmail.com>
|
M: Maxime Coquelin <mcoquelin.stm32@gmail.com>
|
||||||
|
M: Alexandre Torgue <alexandre.torgue@st.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mcoquelin/stm32.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mcoquelin/stm32.git
|
||||||
|
@ -2242,7 +2246,8 @@ F: include/net/ax25.h
|
||||||
F: net/ax25/
|
F: net/ax25/
|
||||||
|
|
||||||
AZ6007 DVB DRIVER
|
AZ6007 DVB DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -2709,7 +2714,8 @@ F: Documentation/filesystems/btrfs.txt
|
||||||
F: fs/btrfs/
|
F: fs/btrfs/
|
||||||
|
|
||||||
BTTV VIDEO4LINUX DRIVER
|
BTTV VIDEO4LINUX DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -2773,9 +2779,9 @@ F: include/net/caif/
|
||||||
F: net/caif/
|
F: net/caif/
|
||||||
|
|
||||||
CALGARY x86-64 IOMMU
|
CALGARY x86-64 IOMMU
|
||||||
M: Muli Ben-Yehuda <muli@il.ibm.com>
|
M: Muli Ben-Yehuda <mulix@mulix.org>
|
||||||
M: "Jon D. Mason" <jdmason@kudzu.us>
|
M: Jon Mason <jdmason@kudzu.us>
|
||||||
L: discuss@x86-64.org
|
L: iommu@lists.linux-foundation.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/x86/kernel/pci-calgary_64.c
|
F: arch/x86/kernel/pci-calgary_64.c
|
||||||
F: arch/x86/kernel/tce_64.c
|
F: arch/x86/kernel/tce_64.c
|
||||||
|
@ -3086,6 +3092,7 @@ M: Stephen Boyd <sboyd@codeaurora.org>
|
||||||
L: linux-clk@vger.kernel.org
|
L: linux-clk@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/clock/
|
||||||
F: drivers/clk/
|
F: drivers/clk/
|
||||||
X: drivers/clk/clkdev.c
|
X: drivers/clk/clkdev.c
|
||||||
F: include/linux/clk-pr*
|
F: include/linux/clk-pr*
|
||||||
|
@ -3343,7 +3350,8 @@ S: Maintained
|
||||||
F: drivers/media/dvb-frontends/cx24120*
|
F: drivers/media/dvb-frontends/cx24120*
|
||||||
|
|
||||||
CX88 VIDEO4LINUX DRIVER
|
CX88 VIDEO4LINUX DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -3773,6 +3781,7 @@ Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/dma/
|
F: drivers/dma/
|
||||||
F: include/linux/dmaengine.h
|
F: include/linux/dmaengine.h
|
||||||
|
F: Documentation/devicetree/bindings/dma/
|
||||||
F: Documentation/dmaengine/
|
F: Documentation/dmaengine/
|
||||||
T: git git://git.infradead.org/users/vkoul/slave-dma.git
|
T: git git://git.infradead.org/users/vkoul/slave-dma.git
|
||||||
|
|
||||||
|
@ -4290,7 +4299,8 @@ F: fs/ecryptfs/
|
||||||
EDAC-CORE
|
EDAC-CORE
|
||||||
M: Doug Thompson <dougthompson@xmission.com>
|
M: Doug Thompson <dougthompson@xmission.com>
|
||||||
M: Borislav Petkov <bp@alien8.de>
|
M: Borislav Petkov <bp@alien8.de>
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
|
||||||
|
@ -4335,7 +4345,8 @@ S: Maintained
|
||||||
F: drivers/edac/e7xxx_edac.c
|
F: drivers/edac/e7xxx_edac.c
|
||||||
|
|
||||||
EDAC-GHES
|
EDAC-GHES
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/edac/ghes_edac.c
|
F: drivers/edac/ghes_edac.c
|
||||||
|
@ -4359,19 +4370,22 @@ S: Maintained
|
||||||
F: drivers/edac/i5000_edac.c
|
F: drivers/edac/i5000_edac.c
|
||||||
|
|
||||||
EDAC-I5400
|
EDAC-I5400
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/edac/i5400_edac.c
|
F: drivers/edac/i5400_edac.c
|
||||||
|
|
||||||
EDAC-I7300
|
EDAC-I7300
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/edac/i7300_edac.c
|
F: drivers/edac/i7300_edac.c
|
||||||
|
|
||||||
EDAC-I7CORE
|
EDAC-I7CORE
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/edac/i7core_edac.c
|
F: drivers/edac/i7core_edac.c
|
||||||
|
@ -4408,7 +4422,8 @@ S: Maintained
|
||||||
F: drivers/edac/r82600_edac.c
|
F: drivers/edac/r82600_edac.c
|
||||||
|
|
||||||
EDAC-SBRIDGE
|
EDAC-SBRIDGE
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/edac/sb_edac.c
|
F: drivers/edac/sb_edac.c
|
||||||
|
@ -4461,13 +4476,14 @@ S: Orphan
|
||||||
F: fs/efs/
|
F: fs/efs/
|
||||||
|
|
||||||
EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER
|
EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER
|
||||||
M: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
|
M: Douglas Miller <dougmill@linux.vnet.ibm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/ibm/ehea/
|
F: drivers/net/ethernet/ibm/ehea/
|
||||||
|
|
||||||
EM28XX VIDEO4LINUX DRIVER
|
EM28XX VIDEO4LINUX DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -6486,6 +6502,7 @@ F: include/uapi/linux/sunrpc/
|
||||||
|
|
||||||
KERNEL SELFTEST FRAMEWORK
|
KERNEL SELFTEST FRAMEWORK
|
||||||
M: Shuah Khan <shuahkh@osg.samsung.com>
|
M: Shuah Khan <shuahkh@osg.samsung.com>
|
||||||
|
M: Shuah Khan <shuah@kernel.org>
|
||||||
L: linux-kselftest@vger.kernel.org
|
L: linux-kselftest@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/shuah/linux-kselftest
|
T: git git://git.kernel.org/pub/scm/shuah/linux-kselftest
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -7357,7 +7374,8 @@ S: Supported
|
||||||
F: drivers/media/pci/netup_unidvb/*
|
F: drivers/media/pci/netup_unidvb/*
|
||||||
|
|
||||||
MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
|
MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
P: LinuxTV.org Project
|
P: LinuxTV.org Project
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
|
@ -7405,7 +7423,7 @@ F: drivers/scsi/megaraid.*
|
||||||
F: drivers/scsi/megaraid/
|
F: drivers/scsi/megaraid/
|
||||||
|
|
||||||
MELLANOX ETHERNET DRIVER (mlx4_en)
|
MELLANOX ETHERNET DRIVER (mlx4_en)
|
||||||
M: Eugenia Emantayev <eugenia@mellanox.com>
|
M: Tariq Toukan <tariqt@mellanox.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://www.mellanox.com
|
W: http://www.mellanox.com
|
||||||
|
@ -7457,6 +7475,7 @@ Q: http://patchwork.ozlabs.org/project/linux-mtd/list/
|
||||||
T: git git://git.infradead.org/linux-mtd.git
|
T: git git://git.infradead.org/linux-mtd.git
|
||||||
T: git git://git.infradead.org/l2-mtd.git
|
T: git git://git.infradead.org/l2-mtd.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/mtd/
|
||||||
F: drivers/mtd/
|
F: drivers/mtd/
|
||||||
F: include/linux/mtd/
|
F: include/linux/mtd/
|
||||||
F: include/uapi/mtd/
|
F: include/uapi/mtd/
|
||||||
|
@ -7989,6 +8008,7 @@ Q: http://patchwork.ozlabs.org/project/netdev/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
|
F: Documentation/devicetree/bindings/net/
|
||||||
F: drivers/net/
|
F: drivers/net/
|
||||||
F: include/linux/if_*
|
F: include/linux/if_*
|
||||||
F: include/linux/netdevice.h
|
F: include/linux/netdevice.h
|
||||||
|
@ -8007,6 +8027,7 @@ Q: http://patchwork.kernel.org/project/linux-wireless/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/net/wireless/
|
||||||
F: drivers/net/wireless/
|
F: drivers/net/wireless/
|
||||||
|
|
||||||
NETXEN (1/10) GbE SUPPORT
|
NETXEN (1/10) GbE SUPPORT
|
||||||
|
@ -8404,10 +8425,9 @@ F: drivers/i2c/busses/i2c-ocores.c
|
||||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
||||||
M: Rob Herring <robh+dt@kernel.org>
|
M: Rob Herring <robh+dt@kernel.org>
|
||||||
M: Frank Rowand <frowand.list@gmail.com>
|
M: Frank Rowand <frowand.list@gmail.com>
|
||||||
M: Grant Likely <grant.likely@linaro.org>
|
|
||||||
L: devicetree@vger.kernel.org
|
L: devicetree@vger.kernel.org
|
||||||
W: http://www.devicetree.org/
|
W: http://www.devicetree.org/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/of/
|
F: drivers/of/
|
||||||
F: include/linux/of*.h
|
F: include/linux/of*.h
|
||||||
|
@ -8415,12 +8435,10 @@ F: scripts/dtc/
|
||||||
|
|
||||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
|
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
|
||||||
M: Rob Herring <robh+dt@kernel.org>
|
M: Rob Herring <robh+dt@kernel.org>
|
||||||
M: Pawel Moll <pawel.moll@arm.com>
|
|
||||||
M: Mark Rutland <mark.rutland@arm.com>
|
M: Mark Rutland <mark.rutland@arm.com>
|
||||||
M: Ian Campbell <ijc+devicetree@hellion.org.uk>
|
|
||||||
M: Kumar Gala <galak@codeaurora.org>
|
|
||||||
L: devicetree@vger.kernel.org
|
L: devicetree@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
|
||||||
|
Q: http://patchwork.ozlabs.org/project/devicetree-bindings/list/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/
|
F: Documentation/devicetree/
|
||||||
F: arch/*/boot/dts/
|
F: arch/*/boot/dts/
|
||||||
|
@ -8944,6 +8962,8 @@ M: Linus Walleij <linus.walleij@linaro.org>
|
||||||
L: linux-gpio@vger.kernel.org
|
L: linux-gpio@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/pinctrl/
|
||||||
|
F: Documentation/pinctrl.txt
|
||||||
F: drivers/pinctrl/
|
F: drivers/pinctrl/
|
||||||
F: include/linux/pinctrl/
|
F: include/linux/pinctrl/
|
||||||
|
|
||||||
|
@ -9851,7 +9871,8 @@ S: Odd Fixes
|
||||||
F: drivers/media/i2c/saa6588*
|
F: drivers/media/i2c/saa6588*
|
||||||
|
|
||||||
SAA7134 VIDEO4LINUX DRIVER
|
SAA7134 VIDEO4LINUX DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -10370,7 +10391,8 @@ S: Maintained
|
||||||
F: drivers/media/radio/si4713/radio-usb-si4713.c
|
F: drivers/media/radio/si4713/radio-usb-si4713.c
|
||||||
|
|
||||||
SIANO DVB DRIVER
|
SIANO DVB DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -11136,7 +11158,8 @@ S: Maintained
|
||||||
F: drivers/media/i2c/tda9840*
|
F: drivers/media/i2c/tda9840*
|
||||||
|
|
||||||
TEA5761 TUNER DRIVER
|
TEA5761 TUNER DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -11144,7 +11167,8 @@ S: Odd fixes
|
||||||
F: drivers/media/tuners/tea5761.*
|
F: drivers/media/tuners/tea5761.*
|
||||||
|
|
||||||
TEA5767 TUNER DRIVER
|
TEA5767 TUNER DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -11531,7 +11555,8 @@ F: include/linux/shmem_fs.h
|
||||||
F: mm/shmem.c
|
F: mm/shmem.c
|
||||||
|
|
||||||
TM6000 VIDEO4LINUX DRIVER
|
TM6000 VIDEO4LINUX DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
@ -11885,7 +11910,8 @@ F: drivers/usb/common/usb-otg-fsm.c
|
||||||
|
|
||||||
USB OVER IP DRIVER
|
USB OVER IP DRIVER
|
||||||
M: Valentina Manea <valentina.manea.m@gmail.com>
|
M: Valentina Manea <valentina.manea.m@gmail.com>
|
||||||
M: Shuah Khan <shuah.kh@samsung.com>
|
M: Shuah Khan <shuahkh@osg.samsung.com>
|
||||||
|
M: Shuah Khan <shuah@kernel.org>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/usb/usbip_protocol.txt
|
F: Documentation/usb/usbip_protocol.txt
|
||||||
|
@ -11956,6 +11982,7 @@ L: linux-usb@vger.kernel.org
|
||||||
W: http://www.linux-usb.org
|
W: http://www.linux-usb.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
F: Documentation/devicetree/bindings/usb/
|
||||||
F: Documentation/usb/
|
F: Documentation/usb/
|
||||||
F: drivers/usb/
|
F: drivers/usb/
|
||||||
F: include/linux/usb.h
|
F: include/linux/usb.h
|
||||||
|
@ -12129,6 +12156,7 @@ VIRTIO CORE, NET AND BLOCK DRIVERS
|
||||||
M: "Michael S. Tsirkin" <mst@redhat.com>
|
M: "Michael S. Tsirkin" <mst@redhat.com>
|
||||||
L: virtualization@lists.linux-foundation.org
|
L: virtualization@lists.linux-foundation.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/virtio/
|
||||||
F: drivers/virtio/
|
F: drivers/virtio/
|
||||||
F: tools/virtio/
|
F: tools/virtio/
|
||||||
F: drivers/net/virtio_net.c
|
F: drivers/net/virtio_net.c
|
||||||
|
@ -12517,7 +12545,8 @@ S: Maintained
|
||||||
F: arch/x86/entry/vdso/
|
F: arch/x86/entry/vdso/
|
||||||
|
|
||||||
XC2028/3028 TUNER DRIVER
|
XC2028/3028 TUNER DRIVER
|
||||||
M: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||||
|
M: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
W: https://linuxtv.org
|
W: https://linuxtv.org
|
||||||
T: git git://linuxtv.org/media_tree.git
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 7
|
PATCHLEVEL = 7
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION =
|
||||||
NAME = Psychotic Stoned Sheep
|
NAME = Psychotic Stoned Sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -363,11 +363,13 @@ CHECK = sparse
|
||||||
|
|
||||||
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
|
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
|
||||||
-Wbitwise -Wno-return-void $(CF)
|
-Wbitwise -Wno-return-void $(CF)
|
||||||
|
NOSTDINC_FLAGS =
|
||||||
CFLAGS_MODULE =
|
CFLAGS_MODULE =
|
||||||
AFLAGS_MODULE =
|
AFLAGS_MODULE =
|
||||||
LDFLAGS_MODULE =
|
LDFLAGS_MODULE =
|
||||||
CFLAGS_KERNEL =
|
CFLAGS_KERNEL =
|
||||||
AFLAGS_KERNEL =
|
AFLAGS_KERNEL =
|
||||||
|
LDFLAGS_vmlinux =
|
||||||
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized
|
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage -fno-tree-loop-im -Wno-maybe-uninitialized
|
||||||
CFLAGS_KCOV = -fsanitize-coverage=trace-pc
|
CFLAGS_KCOV = -fsanitize-coverage=trace-pc
|
||||||
|
|
||||||
|
|
|
@ -226,8 +226,8 @@ config ARCH_INIT_TASK
|
||||||
config ARCH_TASK_STRUCT_ALLOCATOR
|
config ARCH_TASK_STRUCT_ALLOCATOR
|
||||||
bool
|
bool
|
||||||
|
|
||||||
# Select if arch has its private alloc_thread_info() function
|
# Select if arch has its private alloc_thread_stack() function
|
||||||
config ARCH_THREAD_INFO_ALLOCATOR
|
config ARCH_THREAD_STACK_ALLOCATOR
|
||||||
bool
|
bool
|
||||||
|
|
||||||
# Select if arch wants to size task_struct dynamically via arch_task_struct_size:
|
# Select if arch wants to size task_struct dynamically via arch_task_struct_size:
|
||||||
|
@ -606,6 +606,9 @@ config HAVE_ARCH_HASH
|
||||||
file which provides platform-specific implementations of some
|
file which provides platform-specific implementations of some
|
||||||
functions in <linux/hash.h> or fs/namei.c.
|
functions in <linux/hash.h> or fs/namei.c.
|
||||||
|
|
||||||
|
config ISA_BUS_API
|
||||||
|
def_bool ISA
|
||||||
|
|
||||||
#
|
#
|
||||||
# ABI hall of shame
|
# ABI hall of shame
|
||||||
#
|
#
|
||||||
|
|
|
@ -40,7 +40,7 @@ pgd_free(struct mm_struct *mm, pgd_t *pgd)
|
||||||
static inline pmd_t *
|
static inline pmd_t *
|
||||||
pmd_alloc_one(struct mm_struct *mm, unsigned long address)
|
pmd_alloc_one(struct mm_struct *mm, unsigned long address)
|
||||||
{
|
{
|
||||||
pmd_t *ret = (pmd_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
|
pmd_t *ret = (pmd_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ pmd_free(struct mm_struct *mm, pmd_t *pmd)
|
||||||
static inline pte_t *
|
static inline pte_t *
|
||||||
pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
|
pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
|
||||||
{
|
{
|
||||||
pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
|
pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
|
||||||
return pte;
|
return pte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ config RWSEM_GENERIC_SPINLOCK
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config ARCH_DISCONTIGMEM_ENABLE
|
config ARCH_DISCONTIGMEM_ENABLE
|
||||||
def_bool y
|
def_bool n
|
||||||
|
|
||||||
config ARCH_FLATMEM_ENABLE
|
config ARCH_FLATMEM_ENABLE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
@ -186,9 +186,6 @@ if SMP
|
||||||
config ARC_HAS_COH_CACHES
|
config ARC_HAS_COH_CACHES
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
config ARC_HAS_REENTRANT_IRQ_LV2
|
|
||||||
def_bool n
|
|
||||||
|
|
||||||
config ARC_MCIP
|
config ARC_MCIP
|
||||||
bool "ARConnect Multicore IP (MCIP) Support "
|
bool "ARConnect Multicore IP (MCIP) Support "
|
||||||
depends on ISA_ARCV2
|
depends on ISA_ARCV2
|
||||||
|
@ -366,25 +363,10 @@ config NODES_SHIFT
|
||||||
if ISA_ARCOMPACT
|
if ISA_ARCOMPACT
|
||||||
|
|
||||||
config ARC_COMPACT_IRQ_LEVELS
|
config ARC_COMPACT_IRQ_LEVELS
|
||||||
bool "ARCompact IRQ Priorities: High(2)/Low(1)"
|
bool "Setup Timer IRQ as high Priority"
|
||||||
default n
|
default n
|
||||||
# Timer HAS to be high priority, for any other high priority config
|
|
||||||
select ARC_IRQ3_LV2
|
|
||||||
# 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 || ARC_HAS_REENTRANT_IRQ_LV2
|
depends on !SMP
|
||||||
|
|
||||||
if ARC_COMPACT_IRQ_LEVELS
|
|
||||||
|
|
||||||
config ARC_IRQ3_LV2
|
|
||||||
bool
|
|
||||||
|
|
||||||
config ARC_IRQ5_LV2
|
|
||||||
bool
|
|
||||||
|
|
||||||
config ARC_IRQ6_LV2
|
|
||||||
bool
|
|
||||||
|
|
||||||
endif #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"
|
||||||
|
@ -407,11 +389,6 @@ config ARC_HAS_LLSC
|
||||||
default y
|
default y
|
||||||
depends on !ARC_CANT_LLSC
|
depends on !ARC_CANT_LLSC
|
||||||
|
|
||||||
config ARC_STAR_9000923308
|
|
||||||
bool "Workaround for llock/scond livelock"
|
|
||||||
default n
|
|
||||||
depends on ISA_ARCV2 && SMP && ARC_HAS_LLSC
|
|
||||||
|
|
||||||
config ARC_HAS_SWAPE
|
config ARC_HAS_SWAPE
|
||||||
bool "Insn: SWAPE (endian-swap)"
|
bool "Insn: SWAPE (endian-swap)"
|
||||||
default y
|
default y
|
||||||
|
@ -471,7 +448,7 @@ config LINUX_LINK_BASE
|
||||||
|
|
||||||
config HIGHMEM
|
config HIGHMEM
|
||||||
bool "High Memory Support"
|
bool "High Memory Support"
|
||||||
select DISCONTIGMEM
|
select ARCH_DISCONTIGMEM_ENABLE
|
||||||
help
|
help
|
||||||
With ARC 2G:2G address split, only upper 2G is directly addressable by
|
With ARC 2G:2G address split, only upper 2G is directly addressable by
|
||||||
kernel. Enable this to potentially allow access to rest of 2G and PAE
|
kernel. Enable this to potentially allow access to rest of 2G and PAE
|
||||||
|
|
|
@ -66,8 +66,6 @@ endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
cflags-$(CONFIG_ARC_DW2_UNWIND) += -fasynchronous-unwind-tables
|
|
||||||
|
|
||||||
# By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
|
# By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
|
||||||
ifeq ($(atleast_gcc48),y)
|
ifeq ($(atleast_gcc48),y)
|
||||||
cflags-$(CONFIG_ARC_DW2_UNWIND) += -gdwarf-2
|
cflags-$(CONFIG_ARC_DW2_UNWIND) += -gdwarf-2
|
||||||
|
@ -127,7 +125,7 @@ libs-y += arch/arc/lib/ $(LIBGCC)
|
||||||
|
|
||||||
boot := arch/arc/boot
|
boot := arch/arc/boot
|
||||||
|
|
||||||
#default target for make without any arguements.
|
#default target for make without any arguments.
|
||||||
KBUILD_IMAGE := bootpImage
|
KBUILD_IMAGE := bootpImage
|
||||||
|
|
||||||
all: $(KBUILD_IMAGE)
|
all: $(KBUILD_IMAGE)
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
|
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
clock-frequency = <500000000>; /* 500 MHZ */
|
|
||||||
|
|
||||||
soc100 {
|
soc100 {
|
||||||
bus-frequency = <166666666>;
|
bus-frequency = <166666666>;
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
|
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
clock-frequency = <500000000>; /* 500 MHZ */
|
|
||||||
|
|
||||||
soc100 {
|
soc100 {
|
||||||
bus-frequency = <166666666>;
|
bus-frequency = <166666666>;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <750000000>; /* 750 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <90000000>;
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <90000000>;
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "ezchip,arc-nps";
|
compatible = "ezchip,arc-nps";
|
||||||
clock-frequency = <83333333>; /* 83.333333 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,nsim";
|
compatible = "snps,nsim";
|
||||||
clock-frequency = <80000000>; /* 80 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
interrupt-parent = <&core_intc>;
|
interrupt-parent = <&core_intc>;
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,nsimosci";
|
compatible = "snps,nsimosci";
|
||||||
clock-frequency = <20000000>; /* 20 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
interrupt-parent = <&core_intc>;
|
interrupt-parent = <&core_intc>;
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,nsimosci_hs";
|
compatible = "snps,nsimosci_hs";
|
||||||
clock-frequency = <20000000>; /* 20 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
interrupt-parent = <&core_intc>;
|
interrupt-parent = <&core_intc>;
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,nsimosci_hs";
|
compatible = "snps,nsimosci_hs";
|
||||||
clock-frequency = <5000000>; /* 5 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
interrupt-parent = <&core_intc>;
|
interrupt-parent = <&core_intc>;
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <80000000>; /* 80 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
chosen { };
|
chosen { };
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <80000000>; /* 80 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
chosen { };
|
chosen { };
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <80000000>; /* 80 MHZ */
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
chosen { };
|
chosen { };
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <50000000>;
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "snps,arc";
|
compatible = "snps,arc";
|
||||||
clock-frequency = <50000000>;
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -25,50 +25,17 @@
|
||||||
|
|
||||||
#define atomic_set(v, i) WRITE_ONCE(((v)->counter), (i))
|
#define atomic_set(v, i) WRITE_ONCE(((v)->counter), (i))
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_STAR_9000923308
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_VAR_DEF \
|
|
||||||
unsigned int delay = 1, tmp; \
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_ASM \
|
|
||||||
" bz 4f \n" \
|
|
||||||
" ; --- scond fail delay --- \n" \
|
|
||||||
" mov %[tmp], %[delay] \n" /* tmp = delay */ \
|
|
||||||
"2: brne.d %[tmp], 0, 2b \n" /* while (tmp != 0) */ \
|
|
||||||
" sub %[tmp], %[tmp], 1 \n" /* tmp-- */ \
|
|
||||||
" rol %[delay], %[delay] \n" /* delay *= 2 */ \
|
|
||||||
" b 1b \n" /* start over */ \
|
|
||||||
"4: ; --- success --- \n" \
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_VARS \
|
|
||||||
,[delay] "+&r" (delay),[tmp] "=&r" (tmp) \
|
|
||||||
|
|
||||||
#else /* !CONFIG_ARC_STAR_9000923308 */
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_VAR_DEF
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_ASM \
|
|
||||||
" bnz 1b \n" \
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_VARS
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ATOMIC_OP(op, c_op, asm_op) \
|
#define ATOMIC_OP(op, c_op, asm_op) \
|
||||||
static inline void atomic_##op(int i, atomic_t *v) \
|
static inline void atomic_##op(int i, atomic_t *v) \
|
||||||
{ \
|
{ \
|
||||||
unsigned int val; \
|
unsigned int val; \
|
||||||
SCOND_FAIL_RETRY_VAR_DEF \
|
|
||||||
\
|
\
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: llock %[val], [%[ctr]] \n" \
|
"1: llock %[val], [%[ctr]] \n" \
|
||||||
" " #asm_op " %[val], %[val], %[i] \n" \
|
" " #asm_op " %[val], %[val], %[i] \n" \
|
||||||
" scond %[val], [%[ctr]] \n" \
|
" scond %[val], [%[ctr]] \n" \
|
||||||
" \n" \
|
" bnz 1b \n" \
|
||||||
SCOND_FAIL_RETRY_ASM \
|
|
||||||
\
|
|
||||||
: [val] "=&r" (val) /* Early clobber to prevent reg reuse */ \
|
: [val] "=&r" (val) /* Early clobber to prevent reg reuse */ \
|
||||||
SCOND_FAIL_RETRY_VARS \
|
|
||||||
: [ctr] "r" (&v->counter), /* Not "m": llock only supports reg direct addr mode */ \
|
: [ctr] "r" (&v->counter), /* Not "m": llock only supports reg direct addr mode */ \
|
||||||
[i] "ir" (i) \
|
[i] "ir" (i) \
|
||||||
: "cc"); \
|
: "cc"); \
|
||||||
|
@ -77,8 +44,7 @@ static inline void atomic_##op(int i, atomic_t *v) \
|
||||||
#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
|
#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
|
||||||
static inline int atomic_##op##_return(int i, atomic_t *v) \
|
static inline int atomic_##op##_return(int i, atomic_t *v) \
|
||||||
{ \
|
{ \
|
||||||
unsigned int val; \
|
unsigned int val; \
|
||||||
SCOND_FAIL_RETRY_VAR_DEF \
|
|
||||||
\
|
\
|
||||||
/* \
|
/* \
|
||||||
* Explicit full memory barrier needed before/after as \
|
* Explicit full memory barrier needed before/after as \
|
||||||
|
@ -90,11 +56,8 @@ static inline int atomic_##op##_return(int i, atomic_t *v) \
|
||||||
"1: llock %[val], [%[ctr]] \n" \
|
"1: llock %[val], [%[ctr]] \n" \
|
||||||
" " #asm_op " %[val], %[val], %[i] \n" \
|
" " #asm_op " %[val], %[val], %[i] \n" \
|
||||||
" scond %[val], [%[ctr]] \n" \
|
" scond %[val], [%[ctr]] \n" \
|
||||||
" \n" \
|
" bnz 1b \n" \
|
||||||
SCOND_FAIL_RETRY_ASM \
|
|
||||||
\
|
|
||||||
: [val] "=&r" (val) \
|
: [val] "=&r" (val) \
|
||||||
SCOND_FAIL_RETRY_VARS \
|
|
||||||
: [ctr] "r" (&v->counter), \
|
: [ctr] "r" (&v->counter), \
|
||||||
[i] "ir" (i) \
|
[i] "ir" (i) \
|
||||||
: "cc"); \
|
: "cc"); \
|
||||||
|
|
|
@ -76,8 +76,8 @@
|
||||||
* We need to be a bit more cautious here. What if a kernel bug in
|
* We need to be a bit more cautious here. What if a kernel bug in
|
||||||
* L1 ISR, caused SP to go whaco (some small value which looks like
|
* L1 ISR, caused SP to go whaco (some small value which looks like
|
||||||
* USER stk) and then we take L2 ISR.
|
* USER stk) and then we take L2 ISR.
|
||||||
* Above brlo alone would treat it as a valid L1-L2 sceanrio
|
* Above brlo alone would treat it as a valid L1-L2 scenario
|
||||||
* instead of shouting alound
|
* instead of shouting around
|
||||||
* The only feasible way is to make sure this L2 happened in
|
* The only feasible way is to make sure this L2 happened in
|
||||||
* L1 prelogue ONLY i.e. ilink2 is less than a pre-set marker in
|
* L1 prelogue ONLY i.e. ilink2 is less than a pre-set marker in
|
||||||
* L1 ISR before it switches stack
|
* L1 ISR before it switches stack
|
||||||
|
|
|
@ -83,7 +83,7 @@ static inline void get_new_mmu_context(struct mm_struct *mm)
|
||||||
local_flush_tlb_all();
|
local_flush_tlb_all();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Above checke for rollover of 8 bit ASID in 32 bit container.
|
* Above check for rollover of 8 bit ASID in 32 bit container.
|
||||||
* If the container itself wrapped around, set it to a non zero
|
* If the container itself wrapped around, set it to a non zero
|
||||||
* "generation" to distinguish from no context
|
* "generation" to distinguish from no context
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -95,7 +95,7 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
|
||||||
{
|
{
|
||||||
pte_t *pte;
|
pte_t *pte;
|
||||||
|
|
||||||
pte = (pte_t *) __get_free_pages(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO,
|
pte = (pte_t *) __get_free_pages(GFP_KERNEL | __GFP_ZERO,
|
||||||
__get_order_pte());
|
__get_order_pte());
|
||||||
|
|
||||||
return pte;
|
return pte;
|
||||||
|
@ -107,7 +107,7 @@ pte_alloc_one(struct mm_struct *mm, unsigned long address)
|
||||||
pgtable_t pte_pg;
|
pgtable_t pte_pg;
|
||||||
struct page *page;
|
struct page *page;
|
||||||
|
|
||||||
pte_pg = (pgtable_t)__get_free_pages(GFP_KERNEL | __GFP_REPEAT, __get_order_pte());
|
pte_pg = (pgtable_t)__get_free_pages(GFP_KERNEL, __get_order_pte());
|
||||||
if (!pte_pg)
|
if (!pte_pg)
|
||||||
return 0;
|
return 0;
|
||||||
memzero((void *)pte_pg, PTRS_PER_PTE * sizeof(pte_t));
|
memzero((void *)pte_pg, PTRS_PER_PTE * sizeof(pte_t));
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
* Page Tables are purely for Linux VM's consumption and the bits below are
|
* Page Tables are purely for Linux VM's consumption and the bits below are
|
||||||
* suited to that (uniqueness). Hence some are not implemented in the TLB and
|
* suited to that (uniqueness). Hence some are not implemented in the TLB and
|
||||||
* some have different value in TLB.
|
* some have different value in TLB.
|
||||||
* e.g. MMU v2: K_READ bit is 8 and so is GLOBAL (possible becoz they live in
|
* e.g. MMU v2: K_READ bit is 8 and so is GLOBAL (possible because they live in
|
||||||
* seperate PD0 and PD1, which combined forms a translation entry)
|
* seperate PD0 and PD1, which combined forms a translation entry)
|
||||||
* while for PTE perspective, they are 8 and 9 respectively
|
* while for PTE perspective, they are 8 and 9 respectively
|
||||||
* with MMU v3: Most bits (except SHARED) represent the exact hardware pos
|
* with MMU v3: Most bits (except SHARED) represent the exact hardware pos
|
||||||
|
|
|
@ -78,7 +78,7 @@ struct task_struct;
|
||||||
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp)
|
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Where abouts of Task's sp, fp, blink when it was last seen in kernel mode.
|
* Where about of Task's sp, fp, blink when it was last seen in kernel mode.
|
||||||
* Look in process.c for details of kernel stack layout
|
* Look in process.c for details of kernel stack layout
|
||||||
*/
|
*/
|
||||||
#define TSK_K_ESP(tsk) (tsk->thread.ksp)
|
#define TSK_K_ESP(tsk) (tsk->thread.ksp)
|
||||||
|
|
|
@ -86,7 +86,7 @@ static inline const char *arc_platform_smp_cpuinfo(void)
|
||||||
* (1) These insn were introduced only in 4.10 release. So for older released
|
* (1) These insn were introduced only in 4.10 release. So for older released
|
||||||
* support needed.
|
* support needed.
|
||||||
*
|
*
|
||||||
* (2) In a SMP setup, the LLOCK/SCOND atomiticity across CPUs needs to be
|
* (2) In a SMP setup, the LLOCK/SCOND atomicity across CPUs needs to be
|
||||||
* gaurantted by the platform (not something which core handles).
|
* gaurantted by the platform (not something which core handles).
|
||||||
* Assuming a platform won't, SMP Linux needs to use spinlocks + local IRQ
|
* Assuming a platform won't, SMP Linux needs to use spinlocks + local IRQ
|
||||||
* disabling for atomicity.
|
* disabling for atomicity.
|
||||||
|
|
|
@ -20,11 +20,6 @@
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_HAS_LLSC
|
#ifdef CONFIG_ARC_HAS_LLSC
|
||||||
|
|
||||||
/*
|
|
||||||
* A normal LLOCK/SCOND based system, w/o need for livelock workaround
|
|
||||||
*/
|
|
||||||
#ifndef CONFIG_ARC_STAR_9000923308
|
|
||||||
|
|
||||||
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
{
|
{
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
|
@ -238,293 +233,6 @@ static inline void arch_write_unlock(arch_rwlock_t *rw)
|
||||||
smp_mb();
|
smp_mb();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* CONFIG_ARC_STAR_9000923308 */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HS38x4 could get into a LLOCK/SCOND livelock in case of multiple overlapping
|
|
||||||
* coherency transactions in the SCU. The exclusive line state keeps rotating
|
|
||||||
* among contenting cores leading to a never ending cycle. So break the cycle
|
|
||||||
* by deferring the retry of failed exclusive access (SCOND). The actual delay
|
|
||||||
* needed is function of number of contending cores as well as the unrelated
|
|
||||||
* coherency traffic from other cores. To keep the code simple, start off with
|
|
||||||
* small delay of 1 which would suffice most cases and in case of contention
|
|
||||||
* double the delay. Eventually the delay is sufficient such that the coherency
|
|
||||||
* pipeline is drained, thus a subsequent exclusive access would succeed.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_VAR_DEF \
|
|
||||||
unsigned int delay, tmp; \
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_ASM \
|
|
||||||
" ; --- scond fail delay --- \n" \
|
|
||||||
" mov %[tmp], %[delay] \n" /* tmp = delay */ \
|
|
||||||
"2: brne.d %[tmp], 0, 2b \n" /* while (tmp != 0) */ \
|
|
||||||
" sub %[tmp], %[tmp], 1 \n" /* tmp-- */ \
|
|
||||||
" rol %[delay], %[delay] \n" /* delay *= 2 */ \
|
|
||||||
" b 1b \n" /* start over */ \
|
|
||||||
" \n" \
|
|
||||||
"4: ; --- done --- \n" \
|
|
||||||
|
|
||||||
#define SCOND_FAIL_RETRY_VARS \
|
|
||||||
,[delay] "=&r" (delay), [tmp] "=&r" (tmp) \
|
|
||||||
|
|
||||||
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
|
||||||
{
|
|
||||||
unsigned int val;
|
|
||||||
SCOND_FAIL_RETRY_VAR_DEF;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"0: mov %[delay], 1 \n"
|
|
||||||
"1: llock %[val], [%[slock]] \n"
|
|
||||||
" breq %[val], %[LOCKED], 0b \n" /* spin while LOCKED */
|
|
||||||
" scond %[LOCKED], [%[slock]] \n" /* acquire */
|
|
||||||
" bz 4f \n" /* done */
|
|
||||||
" \n"
|
|
||||||
SCOND_FAIL_RETRY_ASM
|
|
||||||
|
|
||||||
: [val] "=&r" (val)
|
|
||||||
SCOND_FAIL_RETRY_VARS
|
|
||||||
: [slock] "r" (&(lock->slock)),
|
|
||||||
[LOCKED] "r" (__ARCH_SPIN_LOCK_LOCKED__)
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 1 - lock taken successfully */
|
|
||||||
static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
|
||||||
{
|
|
||||||
unsigned int val, got_it = 0;
|
|
||||||
SCOND_FAIL_RETRY_VAR_DEF;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"0: mov %[delay], 1 \n"
|
|
||||||
"1: llock %[val], [%[slock]] \n"
|
|
||||||
" breq %[val], %[LOCKED], 4f \n" /* already LOCKED, just bail */
|
|
||||||
" scond %[LOCKED], [%[slock]] \n" /* acquire */
|
|
||||||
" bz.d 4f \n"
|
|
||||||
" mov.z %[got_it], 1 \n" /* got it */
|
|
||||||
" \n"
|
|
||||||
SCOND_FAIL_RETRY_ASM
|
|
||||||
|
|
||||||
: [val] "=&r" (val),
|
|
||||||
[got_it] "+&r" (got_it)
|
|
||||||
SCOND_FAIL_RETRY_VARS
|
|
||||||
: [slock] "r" (&(lock->slock)),
|
|
||||||
[LOCKED] "r" (__ARCH_SPIN_LOCK_LOCKED__)
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
return got_it;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
|
||||||
{
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
lock->slock = __ARCH_SPIN_LOCK_UNLOCKED__;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Read-write spinlocks, allowing multiple readers but only one writer.
|
|
||||||
* Unfair locking as Writers could be starved indefinitely by Reader(s)
|
|
||||||
*/
|
|
||||||
|
|
||||||
static inline void arch_read_lock(arch_rwlock_t *rw)
|
|
||||||
{
|
|
||||||
unsigned int val;
|
|
||||||
SCOND_FAIL_RETRY_VAR_DEF;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* zero means writer holds the lock exclusively, deny Reader.
|
|
||||||
* Otherwise grant lock to first/subseq reader
|
|
||||||
*
|
|
||||||
* if (rw->counter > 0) {
|
|
||||||
* rw->counter--;
|
|
||||||
* ret = 1;
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"0: mov %[delay], 1 \n"
|
|
||||||
"1: llock %[val], [%[rwlock]] \n"
|
|
||||||
" brls %[val], %[WR_LOCKED], 0b\n" /* <= 0: spin while write locked */
|
|
||||||
" sub %[val], %[val], 1 \n" /* reader lock */
|
|
||||||
" scond %[val], [%[rwlock]] \n"
|
|
||||||
" bz 4f \n" /* done */
|
|
||||||
" \n"
|
|
||||||
SCOND_FAIL_RETRY_ASM
|
|
||||||
|
|
||||||
: [val] "=&r" (val)
|
|
||||||
SCOND_FAIL_RETRY_VARS
|
|
||||||
: [rwlock] "r" (&(rw->counter)),
|
|
||||||
[WR_LOCKED] "ir" (0)
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 1 - lock taken successfully */
|
|
||||||
static inline int arch_read_trylock(arch_rwlock_t *rw)
|
|
||||||
{
|
|
||||||
unsigned int val, got_it = 0;
|
|
||||||
SCOND_FAIL_RETRY_VAR_DEF;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"0: mov %[delay], 1 \n"
|
|
||||||
"1: llock %[val], [%[rwlock]] \n"
|
|
||||||
" brls %[val], %[WR_LOCKED], 4f\n" /* <= 0: already write locked, bail */
|
|
||||||
" sub %[val], %[val], 1 \n" /* counter-- */
|
|
||||||
" scond %[val], [%[rwlock]] \n"
|
|
||||||
" bz.d 4f \n"
|
|
||||||
" mov.z %[got_it], 1 \n" /* got it */
|
|
||||||
" \n"
|
|
||||||
SCOND_FAIL_RETRY_ASM
|
|
||||||
|
|
||||||
: [val] "=&r" (val),
|
|
||||||
[got_it] "+&r" (got_it)
|
|
||||||
SCOND_FAIL_RETRY_VARS
|
|
||||||
: [rwlock] "r" (&(rw->counter)),
|
|
||||||
[WR_LOCKED] "ir" (0)
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
return got_it;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void arch_write_lock(arch_rwlock_t *rw)
|
|
||||||
{
|
|
||||||
unsigned int val;
|
|
||||||
SCOND_FAIL_RETRY_VAR_DEF;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If reader(s) hold lock (lock < __ARCH_RW_LOCK_UNLOCKED__),
|
|
||||||
* deny writer. Otherwise if unlocked grant to writer
|
|
||||||
* Hence the claim that Linux rwlocks are unfair to writers.
|
|
||||||
* (can be starved for an indefinite time by readers).
|
|
||||||
*
|
|
||||||
* if (rw->counter == __ARCH_RW_LOCK_UNLOCKED__) {
|
|
||||||
* rw->counter = 0;
|
|
||||||
* ret = 1;
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"0: mov %[delay], 1 \n"
|
|
||||||
"1: llock %[val], [%[rwlock]] \n"
|
|
||||||
" brne %[val], %[UNLOCKED], 0b \n" /* while !UNLOCKED spin */
|
|
||||||
" mov %[val], %[WR_LOCKED] \n"
|
|
||||||
" scond %[val], [%[rwlock]] \n"
|
|
||||||
" bz 4f \n"
|
|
||||||
" \n"
|
|
||||||
SCOND_FAIL_RETRY_ASM
|
|
||||||
|
|
||||||
: [val] "=&r" (val)
|
|
||||||
SCOND_FAIL_RETRY_VARS
|
|
||||||
: [rwlock] "r" (&(rw->counter)),
|
|
||||||
[UNLOCKED] "ir" (__ARCH_RW_LOCK_UNLOCKED__),
|
|
||||||
[WR_LOCKED] "ir" (0)
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 1 - lock taken successfully */
|
|
||||||
static inline int arch_write_trylock(arch_rwlock_t *rw)
|
|
||||||
{
|
|
||||||
unsigned int val, got_it = 0;
|
|
||||||
SCOND_FAIL_RETRY_VAR_DEF;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"0: mov %[delay], 1 \n"
|
|
||||||
"1: llock %[val], [%[rwlock]] \n"
|
|
||||||
" brne %[val], %[UNLOCKED], 4f \n" /* !UNLOCKED, bail */
|
|
||||||
" mov %[val], %[WR_LOCKED] \n"
|
|
||||||
" scond %[val], [%[rwlock]] \n"
|
|
||||||
" bz.d 4f \n"
|
|
||||||
" mov.z %[got_it], 1 \n" /* got it */
|
|
||||||
" \n"
|
|
||||||
SCOND_FAIL_RETRY_ASM
|
|
||||||
|
|
||||||
: [val] "=&r" (val),
|
|
||||||
[got_it] "+&r" (got_it)
|
|
||||||
SCOND_FAIL_RETRY_VARS
|
|
||||||
: [rwlock] "r" (&(rw->counter)),
|
|
||||||
[UNLOCKED] "ir" (__ARCH_RW_LOCK_UNLOCKED__),
|
|
||||||
[WR_LOCKED] "ir" (0)
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
return got_it;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void arch_read_unlock(arch_rwlock_t *rw)
|
|
||||||
{
|
|
||||||
unsigned int val;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* rw->counter++;
|
|
||||||
*/
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"1: llock %[val], [%[rwlock]] \n"
|
|
||||||
" add %[val], %[val], 1 \n"
|
|
||||||
" scond %[val], [%[rwlock]] \n"
|
|
||||||
" bnz 1b \n"
|
|
||||||
" \n"
|
|
||||||
: [val] "=&r" (val)
|
|
||||||
: [rwlock] "r" (&(rw->counter))
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void arch_write_unlock(arch_rwlock_t *rw)
|
|
||||||
{
|
|
||||||
unsigned int val;
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* rw->counter = __ARCH_RW_LOCK_UNLOCKED__;
|
|
||||||
*/
|
|
||||||
__asm__ __volatile__(
|
|
||||||
"1: llock %[val], [%[rwlock]] \n"
|
|
||||||
" scond %[UNLOCKED], [%[rwlock]]\n"
|
|
||||||
" bnz 1b \n"
|
|
||||||
" \n"
|
|
||||||
: [val] "=&r" (val)
|
|
||||||
: [rwlock] "r" (&(rw->counter)),
|
|
||||||
[UNLOCKED] "r" (__ARCH_RW_LOCK_UNLOCKED__)
|
|
||||||
: "memory", "cc");
|
|
||||||
|
|
||||||
smp_mb();
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef SCOND_FAIL_RETRY_VAR_DEF
|
|
||||||
#undef SCOND_FAIL_RETRY_ASM
|
|
||||||
#undef SCOND_FAIL_RETRY_VARS
|
|
||||||
|
|
||||||
#endif /* CONFIG_ARC_STAR_9000923308 */
|
|
||||||
|
|
||||||
#else /* !CONFIG_ARC_HAS_LLSC */
|
#else /* !CONFIG_ARC_HAS_LLSC */
|
||||||
|
|
||||||
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||||
|
|
|
@ -103,7 +103,7 @@ static inline __attribute_const__ struct thread_info *current_thread_info(void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* _TIF_ALLWORK_MASK includes SYSCALL_TRACE, but we don't need it.
|
* _TIF_ALLWORK_MASK includes SYSCALL_TRACE, but we don't need it.
|
||||||
* SYSCALL_TRACE is anways seperately/unconditionally tested right after a
|
* SYSCALL_TRACE is anyway seperately/unconditionally tested right after a
|
||||||
* syscall, so all that reamins to be tested is _TIF_WORK_MASK
|
* syscall, so all that reamins to be tested is _TIF_WORK_MASK
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#define __kernel_ok (segment_eq(get_fs(), KERNEL_DS))
|
#define __kernel_ok (segment_eq(get_fs(), KERNEL_DS))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Algorthmically, for __user_ok() we want do:
|
* Algorithmically, for __user_ok() we want do:
|
||||||
* (start < TASK_SIZE) && (start+len < TASK_SIZE)
|
* (start < TASK_SIZE) && (start+len < TASK_SIZE)
|
||||||
* where TASK_SIZE could either be retrieved from thread_info->addr_limit or
|
* where TASK_SIZE could either be retrieved from thread_info->addr_limit or
|
||||||
* emitted directly in code.
|
* emitted directly in code.
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
__tmp ^ __in; \
|
__tmp ^ __in; \
|
||||||
})
|
})
|
||||||
|
|
||||||
#elif (ARC_BSWAP_TYPE == 2) /* Custom single cycle bwap instruction */
|
#elif (ARC_BSWAP_TYPE == 2) /* Custom single cycle bswap instruction */
|
||||||
|
|
||||||
#define __arch_swab32(x) \
|
#define __arch_swab32(x) \
|
||||||
({ \
|
({ \
|
||||||
|
|
|
@ -91,27 +91,13 @@ VECTOR mem_service ; 0x8, Mem exception (0x1)
|
||||||
VECTOR instr_service ; 0x10, Instrn Error (0x2)
|
VECTOR instr_service ; 0x10, Instrn Error (0x2)
|
||||||
|
|
||||||
; ******************** Device ISRs **********************
|
; ******************** Device ISRs **********************
|
||||||
#ifdef CONFIG_ARC_IRQ3_LV2
|
#ifdef CONFIG_ARC_COMPACT_IRQ_LEVELS
|
||||||
VECTOR handle_interrupt_level2
|
VECTOR handle_interrupt_level2
|
||||||
#else
|
#else
|
||||||
VECTOR handle_interrupt_level1
|
VECTOR handle_interrupt_level1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VECTOR handle_interrupt_level1
|
.rept 28
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_IRQ5_LV2
|
|
||||||
VECTOR handle_interrupt_level2
|
|
||||||
#else
|
|
||||||
VECTOR handle_interrupt_level1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_IRQ6_LV2
|
|
||||||
VECTOR handle_interrupt_level2
|
|
||||||
#else
|
|
||||||
VECTOR handle_interrupt_level1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
.rept 25
|
|
||||||
VECTOR handle_interrupt_level1 ; Other devices
|
VECTOR handle_interrupt_level1 ; Other devices
|
||||||
.endr
|
.endr
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,8 @@ void arc_init_IRQ(void)
|
||||||
{
|
{
|
||||||
int level_mask = 0;
|
int level_mask = 0;
|
||||||
|
|
||||||
/* setup any high priority Interrupts (Level2 in ARCompact jargon) */
|
/* Is timer high priority Interrupt (Level2 in ARCompact jargon) */
|
||||||
level_mask |= IS_ENABLED(CONFIG_ARC_IRQ3_LV2) << 3;
|
level_mask |= IS_ENABLED(CONFIG_ARC_COMPACT_IRQ_LEVELS) << TIMER0_IRQ;
|
||||||
level_mask |= IS_ENABLED(CONFIG_ARC_IRQ5_LV2) << 5;
|
|
||||||
level_mask |= IS_ENABLED(CONFIG_ARC_IRQ6_LV2) << 6;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write to register, even if no LV2 IRQs configured to reset it
|
* Write to register, even if no LV2 IRQs configured to reset it
|
||||||
|
|
|
@ -108,7 +108,7 @@ static void arc_perf_event_update(struct perf_event *event,
|
||||||
int64_t delta = new_raw_count - prev_raw_count;
|
int64_t delta = new_raw_count - prev_raw_count;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We don't afaraid of hwc->prev_count changing beneath our feet
|
* We aren't afraid of hwc->prev_count changing beneath our feet
|
||||||
* because there's no way for us to re-enter this function anytime.
|
* because there's no way for us to re-enter this function anytime.
|
||||||
*/
|
*/
|
||||||
local64_set(&hwc->prev_count, new_raw_count);
|
local64_set(&hwc->prev_count, new_raw_count);
|
||||||
|
|
|
@ -392,7 +392,7 @@ void __init setup_arch(char **cmdline_p)
|
||||||
/*
|
/*
|
||||||
* If we are here, it is established that @uboot_arg didn't
|
* If we are here, it is established that @uboot_arg didn't
|
||||||
* point to DT blob. Instead if u-boot says it is cmdline,
|
* point to DT blob. Instead if u-boot says it is cmdline,
|
||||||
* Appent to embedded DT cmdline.
|
* append to embedded DT cmdline.
|
||||||
* setup_machine_fdt() would have populated @boot_command_line
|
* setup_machine_fdt() would have populated @boot_command_line
|
||||||
*/
|
*/
|
||||||
if (uboot_tag == 1) {
|
if (uboot_tag == 1) {
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
* -ViXS were still seeing crashes when using insmod to load drivers.
|
* -ViXS were still seeing crashes when using insmod to load drivers.
|
||||||
* It turned out that the code to change Execute permssions for TLB entries
|
* It turned out that the code to change Execute permssions for TLB entries
|
||||||
* of user was not guarded for interrupts (mod_tlb_permission)
|
* of user was not guarded for interrupts (mod_tlb_permission)
|
||||||
* This was cauing TLB entries to be overwritten on unrelated indexes
|
* This was causing TLB entries to be overwritten on unrelated indexes
|
||||||
*
|
*
|
||||||
* Vineetg: July 15th 2008: Bug #94183
|
* Vineetg: July 15th 2008: Bug #94183
|
||||||
* -Exception happens in Delay slot of a JMP, and before user space resumes,
|
* -Exception happens in Delay slot of a JMP, and before user space resumes,
|
||||||
|
|
|
@ -142,7 +142,7 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,
|
||||||
* prelogue is setup (callee regs saved and then fp set and not other
|
* prelogue is setup (callee regs saved and then fp set and not other
|
||||||
* way around
|
* way around
|
||||||
*/
|
*/
|
||||||
pr_warn("CONFIG_ARC_DW2_UNWIND needs to be enabled\n");
|
pr_warn_once("CONFIG_ARC_DW2_UNWIND needs to be enabled\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -276,7 +276,7 @@ static int tlb_stats_open(struct inode *inode, struct file *file)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* called on user read(): display the couters */
|
/* called on user read(): display the counters */
|
||||||
static ssize_t tlb_stats_output(struct file *file, /* file descriptor */
|
static ssize_t tlb_stats_output(struct file *file, /* file descriptor */
|
||||||
char __user *user_buf, /* user buffer */
|
char __user *user_buf, /* user buffer */
|
||||||
size_t len, /* length of buffer */
|
size_t len, /* length of buffer */
|
||||||
|
|
|
@ -215,7 +215,7 @@ slc_chk:
|
||||||
* ------------------
|
* ------------------
|
||||||
* This ver of MMU supports variable page sizes (1k-16k): although Linux will
|
* This ver of MMU supports variable page sizes (1k-16k): although Linux will
|
||||||
* only support 8k (default), 16k and 4k.
|
* only support 8k (default), 16k and 4k.
|
||||||
* However from hardware perspective, smaller page sizes aggrevate aliasing
|
* However from hardware perspective, smaller page sizes aggravate aliasing
|
||||||
* meaning more vaddr bits needed to disambiguate the cache-line-op ;
|
* meaning more vaddr bits needed to disambiguate the cache-line-op ;
|
||||||
* the existing scheme of piggybacking won't work for certain configurations.
|
* the existing scheme of piggybacking won't work for certain configurations.
|
||||||
* Two new registers IC_PTAG and DC_PTAG inttoduced.
|
* Two new registers IC_PTAG and DC_PTAG inttoduced.
|
||||||
|
@ -302,7 +302,7 @@ void __cache_line_loop_v3(phys_addr_t paddr, unsigned long vaddr,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is technically for MMU v4, using the MMU v3 programming model
|
* This is technically for MMU v4, using the MMU v3 programming model
|
||||||
* Special work for HS38 aliasing I-cache configuratino with PAE40
|
* Special work for HS38 aliasing I-cache configuration with PAE40
|
||||||
* - upper 8 bits of paddr need to be written into PTAG_HI
|
* - upper 8 bits of paddr need to be written into PTAG_HI
|
||||||
* - (and needs to be written before the lower 32 bits)
|
* - (and needs to be written before the lower 32 bits)
|
||||||
* Note that PTAG_HI is hoisted outside the line loop
|
* Note that PTAG_HI is hoisted outside the line loop
|
||||||
|
@ -936,7 +936,7 @@ void arc_cache_init(void)
|
||||||
ic->ver, CONFIG_ARC_MMU_VER);
|
ic->ver, CONFIG_ARC_MMU_VER);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In MMU v4 (HS38x) the alising icache config uses IVIL/PTAG
|
* In MMU v4 (HS38x) the aliasing icache config uses IVIL/PTAG
|
||||||
* pair to provide vaddr/paddr respectively, just as in MMU v3
|
* pair to provide vaddr/paddr respectively, just as in MMU v3
|
||||||
*/
|
*/
|
||||||
if (is_isa_arcv2() && ic->alias)
|
if (is_isa_arcv2() && ic->alias)
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
* DMA Coherent API Notes
|
* DMA Coherent API Notes
|
||||||
*
|
*
|
||||||
* I/O is inherently non-coherent on ARC. So a coherent DMA buffer is
|
* I/O is inherently non-coherent on ARC. So a coherent DMA buffer is
|
||||||
* implemented by accessintg it using a kernel virtual address, with
|
* implemented by accessing it using a kernel virtual address, with
|
||||||
* Cache bit off in the TLB entry.
|
* Cache bit off in the TLB entry.
|
||||||
*
|
*
|
||||||
* The default DMA address == Phy address which is 0x8000_0000 based.
|
* The default DMA address == Phy address which is 0x8000_0000 based.
|
||||||
|
|
|
@ -741,6 +741,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
|
||||||
sun7i-a20-olimex-som-evb.dtb \
|
sun7i-a20-olimex-som-evb.dtb \
|
||||||
sun7i-a20-olinuxino-lime.dtb \
|
sun7i-a20-olinuxino-lime.dtb \
|
||||||
sun7i-a20-olinuxino-lime2.dtb \
|
sun7i-a20-olinuxino-lime2.dtb \
|
||||||
|
sun7i-a20-olinuxino-lime2-emmc.dtb \
|
||||||
sun7i-a20-olinuxino-micro.dtb \
|
sun7i-a20-olinuxino-micro.dtb \
|
||||||
sun7i-a20-orangepi.dtb \
|
sun7i-a20-orangepi.dtb \
|
||||||
sun7i-a20-orangepi-mini.dtb \
|
sun7i-a20-orangepi-mini.dtb \
|
||||||
|
|
|
@ -418,7 +418,7 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c0_pins>;
|
pinctrl-0 = <&i2c0_pins>;
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <100000>;
|
||||||
|
|
||||||
tps@24 {
|
tps@24 {
|
||||||
compatible = "ti,tps65218";
|
compatible = "ti,tps65218";
|
||||||
|
|
|
@ -60,10 +60,26 @@
|
||||||
|
|
||||||
tps659038_pmic {
|
tps659038_pmic {
|
||||||
compatible = "ti,tps659038-pmic";
|
compatible = "ti,tps659038-pmic";
|
||||||
|
|
||||||
|
smps12-in-supply = <&vmain>;
|
||||||
|
smps3-in-supply = <&vmain>;
|
||||||
|
smps45-in-supply = <&vmain>;
|
||||||
|
smps6-in-supply = <&vmain>;
|
||||||
|
smps7-in-supply = <&vmain>;
|
||||||
|
smps8-in-supply = <&vmain>;
|
||||||
|
smps9-in-supply = <&vmain>;
|
||||||
|
ldo1-in-supply = <&vmain>;
|
||||||
|
ldo2-in-supply = <&vmain>;
|
||||||
|
ldo3-in-supply = <&vmain>;
|
||||||
|
ldo4-in-supply = <&vmain>;
|
||||||
|
ldo9-in-supply = <&vmain>;
|
||||||
|
ldoln-in-supply = <&vmain>;
|
||||||
|
ldousb-in-supply = <&vmain>;
|
||||||
|
ldortc-in-supply = <&vmain>;
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
smps12_reg: smps12 {
|
smps12_reg: smps12 {
|
||||||
/* VDD_MPU */
|
/* VDD_MPU */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "smps12";
|
regulator-name = "smps12";
|
||||||
regulator-min-microvolt = <850000>;
|
regulator-min-microvolt = <850000>;
|
||||||
regulator-max-microvolt = <1250000>;
|
regulator-max-microvolt = <1250000>;
|
||||||
|
@ -73,7 +89,6 @@
|
||||||
|
|
||||||
smps3_reg: smps3 {
|
smps3_reg: smps3 {
|
||||||
/* VDD_DDR EMIF1 EMIF2 */
|
/* VDD_DDR EMIF1 EMIF2 */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "smps3";
|
regulator-name = "smps3";
|
||||||
regulator-min-microvolt = <1350000>;
|
regulator-min-microvolt = <1350000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
|
@ -84,7 +99,6 @@
|
||||||
smps45_reg: smps45 {
|
smps45_reg: smps45 {
|
||||||
/* VDD_DSPEVE on AM572 */
|
/* VDD_DSPEVE on AM572 */
|
||||||
/* VDD_IVA + VDD_DSP on AM571 */
|
/* VDD_IVA + VDD_DSP on AM571 */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "smps45";
|
regulator-name = "smps45";
|
||||||
regulator-min-microvolt = <850000>;
|
regulator-min-microvolt = <850000>;
|
||||||
regulator-max-microvolt = <1250000>;
|
regulator-max-microvolt = <1250000>;
|
||||||
|
@ -94,7 +108,6 @@
|
||||||
|
|
||||||
smps6_reg: smps6 {
|
smps6_reg: smps6 {
|
||||||
/* VDD_GPU */
|
/* VDD_GPU */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "smps6";
|
regulator-name = "smps6";
|
||||||
regulator-min-microvolt = <850000>;
|
regulator-min-microvolt = <850000>;
|
||||||
regulator-max-microvolt = <1250000>;
|
regulator-max-microvolt = <1250000>;
|
||||||
|
@ -104,7 +117,6 @@
|
||||||
|
|
||||||
smps7_reg: smps7 {
|
smps7_reg: smps7 {
|
||||||
/* VDD_CORE */
|
/* VDD_CORE */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "smps7";
|
regulator-name = "smps7";
|
||||||
regulator-min-microvolt = <850000>;
|
regulator-min-microvolt = <850000>;
|
||||||
regulator-max-microvolt = <1150000>;
|
regulator-max-microvolt = <1150000>;
|
||||||
|
@ -115,13 +127,11 @@
|
||||||
smps8_reg: smps8 {
|
smps8_reg: smps8 {
|
||||||
/* 5728 - VDD_IVAHD */
|
/* 5728 - VDD_IVAHD */
|
||||||
/* 5718 - N.C. test point */
|
/* 5718 - N.C. test point */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "smps8";
|
regulator-name = "smps8";
|
||||||
};
|
};
|
||||||
|
|
||||||
smps9_reg: smps9 {
|
smps9_reg: smps9 {
|
||||||
/* VDD_3_3D */
|
/* VDD_3_3D */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "smps9";
|
regulator-name = "smps9";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
@ -132,7 +142,6 @@
|
||||||
ldo1_reg: ldo1 {
|
ldo1_reg: ldo1 {
|
||||||
/* VDDSHV8 - VSDMMC */
|
/* VDDSHV8 - VSDMMC */
|
||||||
/* NOTE: on rev 1.3a, data supply */
|
/* NOTE: on rev 1.3a, data supply */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldo1";
|
regulator-name = "ldo1";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
@ -142,7 +151,6 @@
|
||||||
|
|
||||||
ldo2_reg: ldo2 {
|
ldo2_reg: ldo2 {
|
||||||
/* VDDSH18V */
|
/* VDDSH18V */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldo2";
|
regulator-name = "ldo2";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
@ -152,7 +160,6 @@
|
||||||
|
|
||||||
ldo3_reg: ldo3 {
|
ldo3_reg: ldo3 {
|
||||||
/* R1.3a 572x V1_8PHY_LDO3: USB, SATA */
|
/* R1.3a 572x V1_8PHY_LDO3: USB, SATA */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldo3";
|
regulator-name = "ldo3";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
@ -162,7 +169,6 @@
|
||||||
|
|
||||||
ldo4_reg: ldo4 {
|
ldo4_reg: ldo4 {
|
||||||
/* R1.3a 572x V1_8PHY_LDO4: PCIE, HDMI*/
|
/* R1.3a 572x V1_8PHY_LDO4: PCIE, HDMI*/
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldo4";
|
regulator-name = "ldo4";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
@ -174,7 +180,6 @@
|
||||||
|
|
||||||
ldo9_reg: ldo9 {
|
ldo9_reg: ldo9 {
|
||||||
/* VDD_RTC */
|
/* VDD_RTC */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldo9";
|
regulator-name = "ldo9";
|
||||||
regulator-min-microvolt = <840000>;
|
regulator-min-microvolt = <840000>;
|
||||||
regulator-max-microvolt = <1160000>;
|
regulator-max-microvolt = <1160000>;
|
||||||
|
@ -184,7 +189,6 @@
|
||||||
|
|
||||||
ldoln_reg: ldoln {
|
ldoln_reg: ldoln {
|
||||||
/* VDDA_1V8_PLL */
|
/* VDDA_1V8_PLL */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldoln";
|
regulator-name = "ldoln";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
@ -194,7 +198,6 @@
|
||||||
|
|
||||||
ldousb_reg: ldousb {
|
ldousb_reg: ldousb {
|
||||||
/* VDDA_3V_USB: VDDA_USBHS33 */
|
/* VDDA_3V_USB: VDDA_USBHS33 */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldousb";
|
regulator-name = "ldousb";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
@ -204,7 +207,6 @@
|
||||||
|
|
||||||
ldortc_reg: ldortc {
|
ldortc_reg: ldortc {
|
||||||
/* VDDA_RTC */
|
/* VDDA_RTC */
|
||||||
vin-supply = <&vmain>;
|
|
||||||
regulator-name = "ldortc";
|
regulator-name = "ldortc";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
|
|
@ -58,8 +58,8 @@
|
||||||
soc {
|
soc {
|
||||||
ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
|
||||||
MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
|
MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
|
||||||
MBUS_ID(0x09, 0x09) 0 0xf1100000 0x10000
|
MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
|
||||||
MBUS_ID(0x09, 0x05) 0 0xf1110000 0x10000>;
|
MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;
|
||||||
|
|
||||||
internal-regs {
|
internal-regs {
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
&mmc2 {
|
&mmc2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sd1_pins>;
|
pinctrl-0 = <&sd1_pins>;
|
||||||
|
@ -101,6 +105,10 @@
|
||||||
cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&mmc3 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
&pincntl {
|
&pincntl {
|
||||||
sd1_pins: pinmux_sd1_pins {
|
sd1_pins: pinmux_sd1_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
|
|
|
@ -45,6 +45,14 @@
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
&mmc3 {
|
&mmc3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sd2_pins>;
|
pinctrl-0 = <&sd2_pins>;
|
||||||
|
@ -53,6 +61,7 @@
|
||||||
dmas = <&edma_xbar 8 0 1 /* use SDTXEVT1 instead of MCASP0TX */
|
dmas = <&edma_xbar 8 0 1 /* use SDTXEVT1 instead of MCASP0TX */
|
||||||
&edma_xbar 9 0 2>; /* use SDRXEVT1 instead of MCASP0RX */
|
&edma_xbar 9 0 2>; /* use SDRXEVT1 instead of MCASP0RX */
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
|
non-removable;
|
||||||
};
|
};
|
||||||
|
|
||||||
&pincntl {
|
&pincntl {
|
||||||
|
|
|
@ -1451,6 +1451,8 @@
|
||||||
ti,hwmods = "gpmc";
|
ti,hwmods = "gpmc";
|
||||||
reg = <0x50000000 0x37c>; /* device IO registers */
|
reg = <0x50000000 0x37c>; /* device IO registers */
|
||||||
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
dmas = <&edma_xbar 4 0>;
|
||||||
|
dma-names = "rxtx";
|
||||||
gpmc,num-cs = <8>;
|
gpmc,num-cs = <8>;
|
||||||
gpmc,num-waitpins = <2>;
|
gpmc,num-waitpins = <2>;
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
|
|
|
@ -107,8 +107,8 @@
|
||||||
reg = <0x58000000 0x80>,
|
reg = <0x58000000 0x80>,
|
||||||
<0x58004054 0x4>,
|
<0x58004054 0x4>,
|
||||||
<0x58004300 0x20>,
|
<0x58004300 0x20>,
|
||||||
<0x58005054 0x4>,
|
<0x58009054 0x4>,
|
||||||
<0x58005300 0x20>;
|
<0x58009300 0x20>;
|
||||||
reg-names = "dss", "pll1_clkctrl", "pll1",
|
reg-names = "dss", "pll1_clkctrl", "pll1",
|
||||||
"pll2_clkctrl", "pll2";
|
"pll2_clkctrl", "pll2";
|
||||||
|
|
||||||
|
|
|
@ -242,7 +242,7 @@
|
||||||
hpd-gpios = <&gpx0 7 GPIO_ACTIVE_HIGH>;
|
hpd-gpios = <&gpx0 7 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
port0 {
|
port {
|
||||||
dp_out: endpoint {
|
dp_out: endpoint {
|
||||||
remote-endpoint = <&bridge_in>;
|
remote-endpoint = <&bridge_in>;
|
||||||
};
|
};
|
||||||
|
@ -485,13 +485,20 @@
|
||||||
edid-emulation = <5>;
|
edid-emulation = <5>;
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
port0 {
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
bridge_out: endpoint {
|
bridge_out: endpoint {
|
||||||
remote-endpoint = <&panel_in>;
|
remote-endpoint = <&panel_in>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
port1 {
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
bridge_in: endpoint {
|
bridge_in: endpoint {
|
||||||
remote-endpoint = <&dp_out>;
|
remote-endpoint = <&dp_out>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -163,7 +163,7 @@
|
||||||
hpd-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
|
hpd-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
port0 {
|
port {
|
||||||
dp_out: endpoint {
|
dp_out: endpoint {
|
||||||
remote-endpoint = <&bridge_in>;
|
remote-endpoint = <&bridge_in>;
|
||||||
};
|
};
|
||||||
|
@ -631,13 +631,20 @@
|
||||||
use-external-pwm;
|
use-external-pwm;
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
port0 {
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
bridge_out: endpoint {
|
bridge_out: endpoint {
|
||||||
remote-endpoint = <&panel_in>;
|
remote-endpoint = <&panel_in>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
port1 {
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
bridge_in: endpoint {
|
bridge_in: endpoint {
|
||||||
remote-endpoint = <&dp_out>;
|
remote-endpoint = <&dp_out>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -85,7 +85,7 @@
|
||||||
OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk.sdmmc2_clk */
|
OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk.sdmmc2_clk */
|
||||||
OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd.sdmmc2_cmd */
|
OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd.sdmmc2_cmd */
|
||||||
OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0.sdmmc2_dat0 */
|
OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0.sdmmc2_dat0 */
|
||||||
OMAP3_CORE1_IOPAD(0x215e, WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */
|
OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */
|
||||||
OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2.sdmmc2_dat2 */
|
OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2.sdmmc2_dat2 */
|
||||||
OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3.sdmmc2_dat3 */
|
OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3.sdmmc2_dat3 */
|
||||||
>;
|
>;
|
||||||
|
|
|
@ -188,6 +188,7 @@
|
||||||
vmmc-supply = <&vmmc1>;
|
vmmc-supply = <&vmmc1>;
|
||||||
vmmc_aux-supply = <&vsim>;
|
vmmc_aux-supply = <&vsim>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
cd-gpios = <&twl_gpio 0 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmc3 {
|
&mmc3 {
|
||||||
|
|
|
@ -194,6 +194,12 @@
|
||||||
OMAP3630_CORE2_IOPAD(0x25f8, PIN_OUTPUT | MUX_MODE4) /* etk_d14.gpio_28 */
|
OMAP3630_CORE2_IOPAD(0x25f8, PIN_OUTPUT | MUX_MODE4) /* etk_d14.gpio_28 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mmc1_wp_pins: pinmux_mmc1_cd_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT | MUX_MODE4) /* etk_d15.gpio_29 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c3 {
|
&i2c3 {
|
||||||
|
@ -250,3 +256,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
pinctrl-0 = <&mmc1_pins &mmc1_wp_pins>;
|
||||||
|
wp-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; /* gpio_29 */
|
||||||
|
};
|
||||||
|
|
|
@ -288,7 +288,7 @@
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
|
OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */
|
OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* ssi1_wake_tx (cawake) */
|
OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE4) /* ssi1_wake_tx (cawake) */
|
||||||
OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */
|
OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */
|
OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */
|
||||||
OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */
|
OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */
|
||||||
|
@ -300,7 +300,7 @@
|
||||||
modem_pins: pinmux_modem {
|
modem_pins: pinmux_modem {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE4) /* gpio 70 => cmt_apeslpx */
|
OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE4) /* gpio 70 => cmt_apeslpx */
|
||||||
OMAP3_CORE1_IOPAD(0x20e0, PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* gpio 72 => ape_rst_rq */
|
OMAP3_CORE1_IOPAD(0x20e0, PIN_INPUT | MUX_MODE4) /* gpio 72 => ape_rst_rq */
|
||||||
OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE4) /* gpio 73 => cmt_rst_rq */
|
OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE4) /* gpio 73 => cmt_rst_rq */
|
||||||
OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE4) /* gpio 74 => cmt_en */
|
OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE4) /* gpio 74 => cmt_en */
|
||||||
OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE4) /* gpio 75 => cmt_rst */
|
OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE4) /* gpio 75 => cmt_rst */
|
||||||
|
|
|
@ -97,7 +97,7 @@
|
||||||
OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */
|
OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */
|
OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
|
OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* ssi1_wake_tx (cawake) */
|
OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE4) /* ssi1_wake_tx (cawake) */
|
||||||
OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */
|
OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */
|
||||||
OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */
|
OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */
|
||||||
OMAP3_CORE1_IOPAD(0x2188, PIN_OUTPUT | MUX_MODE1) /* ssi1_rdy_rx */
|
OMAP3_CORE1_IOPAD(0x2188, PIN_OUTPUT | MUX_MODE1) /* ssi1_rdy_rx */
|
||||||
|
@ -110,7 +110,7 @@
|
||||||
OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE7) /* ssi1_dat_tx */
|
OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE7) /* ssi1_dat_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE7) /* ssi1_flag_tx */
|
OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE7) /* ssi1_flag_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLDOWN | MUX_MODE7) /* ssi1_rdy_tx */
|
OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLDOWN | MUX_MODE7) /* ssi1_rdy_tx */
|
||||||
OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* ssi1_wake_tx (cawake) */
|
OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE4) /* ssi1_wake_tx (cawake) */
|
||||||
OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE7) /* ssi1_dat_rx */
|
OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE7) /* ssi1_dat_rx */
|
||||||
OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE7) /* ssi1_flag_rx */
|
OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE7) /* ssi1_flag_rx */
|
||||||
OMAP3_CORE1_IOPAD(0x2188, PIN_OUTPUT | MUX_MODE4) /* ssi1_rdy_rx */
|
OMAP3_CORE1_IOPAD(0x2188, PIN_OUTPUT | MUX_MODE4) /* ssi1_rdy_rx */
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
|
|
||||||
modem_pins1: pinmux_modem_core1_pins {
|
modem_pins1: pinmux_modem_core1_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP3_CORE1_IOPAD(0x207a, PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* gpio_34 (ape_rst_rq) */
|
OMAP3_CORE1_IOPAD(0x207a, PIN_INPUT | MUX_MODE4) /* gpio_34 (ape_rst_rq) */
|
||||||
OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE4) /* gpio_88 (cmt_rst_rq) */
|
OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE4) /* gpio_88 (cmt_rst_rq) */
|
||||||
OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE4) /* gpio_93 (cmt_apeslpx) */
|
OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE4) /* gpio_93 (cmt_apeslpx) */
|
||||||
>;
|
>;
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP3_CORE1_IOPAD(0x2174, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_cts.uart2_cts */
|
OMAP3_CORE1_IOPAD(0x2174, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_cts.uart2_cts */
|
||||||
OMAP3_CORE1_IOPAD(0x2176, PIN_OUTPUT | MUX_MODE0) /* uart2_rts.uart2_rts */
|
OMAP3_CORE1_IOPAD(0x2176, PIN_OUTPUT | MUX_MODE0) /* uart2_rts.uart2_rts */
|
||||||
OMAP3_CORE1_IOPAD(0x217a, WAKEUP_EN | PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */
|
OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */
|
||||||
OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE0) /* uart2_tx.uart2_tx */
|
OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE0) /* uart2_tx.uart2_tx */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP3_CORE1_IOPAD(0x219a, PIN_INPUT_PULLDOWN | MUX_MODE0) /* uart3_cts_rctx.uart3_cts_rctx */
|
OMAP3_CORE1_IOPAD(0x219a, PIN_INPUT_PULLDOWN | MUX_MODE0) /* uart3_cts_rctx.uart3_cts_rctx */
|
||||||
OMAP3_CORE1_IOPAD(0x219c, PIN_OUTPUT | MUX_MODE0) /* uart3_rts_sd.uart3_rts_sd */
|
OMAP3_CORE1_IOPAD(0x219c, PIN_OUTPUT | MUX_MODE0) /* uart3_rts_sd.uart3_rts_sd */
|
||||||
OMAP3_CORE1_IOPAD(0x219e, WAKEUP_EN | PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */
|
OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */
|
||||||
OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx */
|
OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
@ -125,7 +125,7 @@
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP3630_CORE2_IOPAD(0x25d8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_clk.sdmmc3_clk */
|
OMAP3630_CORE2_IOPAD(0x25d8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_clk.sdmmc3_clk */
|
||||||
OMAP3630_CORE2_IOPAD(0x25e4, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d4.sdmmc3_dat0 */
|
OMAP3630_CORE2_IOPAD(0x25e4, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d4.sdmmc3_dat0 */
|
||||||
OMAP3630_CORE2_IOPAD(0x25e6, WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d5.sdmmc3_dat1 */
|
OMAP3630_CORE2_IOPAD(0x25e6, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d5.sdmmc3_dat1 */
|
||||||
OMAP3630_CORE2_IOPAD(0x25e8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d6.sdmmc3_dat2 */
|
OMAP3630_CORE2_IOPAD(0x25e8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d6.sdmmc3_dat2 */
|
||||||
OMAP3630_CORE2_IOPAD(0x25e2, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d3.sdmmc3_dat3 */
|
OMAP3630_CORE2_IOPAD(0x25e2, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d3.sdmmc3_dat3 */
|
||||||
>;
|
>;
|
||||||
|
|
|
@ -14,6 +14,29 @@
|
||||||
display0 = &hdmi0;
|
display0 = &hdmi0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vmain: fixedregulator-vmain {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vmain";
|
||||||
|
regulator-min-microvolt = <5000000>;
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vsys_cobra: fixedregulator-vsys_cobra {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vsys_cobra";
|
||||||
|
vin-supply = <&vmain>;
|
||||||
|
regulator-min-microvolt = <5000000>;
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vdds_1v8_main: fixedregulator-vdds_1v8_main {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vdds_1v8_main";
|
||||||
|
vin-supply = <&smps7_reg>;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
};
|
||||||
|
|
||||||
vmmcsd_fixed: fixedregulator-mmcsd {
|
vmmcsd_fixed: fixedregulator-mmcsd {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vmmcsd_fixed";
|
regulator-name = "vmmcsd_fixed";
|
||||||
|
@ -309,7 +332,7 @@
|
||||||
|
|
||||||
wlcore_irq_pin: pinmux_wlcore_irq_pin {
|
wlcore_irq_pin: pinmux_wlcore_irq_pin {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP5_IOPAD(0x40, WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE6) /* llia_wakereqin.gpio1_wk14 */
|
OMAP5_IOPAD(0x40, PIN_INPUT_PULLUP | MUX_MODE6) /* llia_wakereqin.gpio1_wk14 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -409,6 +432,26 @@
|
||||||
|
|
||||||
ti,ldo6-vibrator;
|
ti,ldo6-vibrator;
|
||||||
|
|
||||||
|
smps123-in-supply = <&vsys_cobra>;
|
||||||
|
smps45-in-supply = <&vsys_cobra>;
|
||||||
|
smps6-in-supply = <&vsys_cobra>;
|
||||||
|
smps7-in-supply = <&vsys_cobra>;
|
||||||
|
smps8-in-supply = <&vsys_cobra>;
|
||||||
|
smps9-in-supply = <&vsys_cobra>;
|
||||||
|
smps10_out2-in-supply = <&vsys_cobra>;
|
||||||
|
smps10_out1-in-supply = <&vsys_cobra>;
|
||||||
|
ldo1-in-supply = <&vsys_cobra>;
|
||||||
|
ldo2-in-supply = <&vsys_cobra>;
|
||||||
|
ldo3-in-supply = <&vdds_1v8_main>;
|
||||||
|
ldo4-in-supply = <&vdds_1v8_main>;
|
||||||
|
ldo5-in-supply = <&vsys_cobra>;
|
||||||
|
ldo6-in-supply = <&vdds_1v8_main>;
|
||||||
|
ldo7-in-supply = <&vsys_cobra>;
|
||||||
|
ldo8-in-supply = <&vsys_cobra>;
|
||||||
|
ldo9-in-supply = <&vmmcsd_fixed>;
|
||||||
|
ldoln-in-supply = <&vsys_cobra>;
|
||||||
|
ldousb-in-supply = <&vsys_cobra>;
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
smps123_reg: smps123 {
|
smps123_reg: smps123 {
|
||||||
/* VDD_OPP_MPU */
|
/* VDD_OPP_MPU */
|
||||||
|
@ -600,7 +643,8 @@
|
||||||
pinctrl-0 = <&twl6040_pins>;
|
pinctrl-0 = <&twl6040_pins>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 119 IRQ_TYPE_NONE>; /* IRQ_SYS_2N cascaded to gic */
|
interrupts = <GIC_SPI 119 IRQ_TYPE_NONE>; /* IRQ_SYS_2N cascaded to gic */
|
||||||
ti,audpwron-gpio = <&gpio5 13 GPIO_ACTIVE_HIGH>; /* gpio line 141 */
|
|
||||||
|
/* audpwron gpio defined in the board specific dts */
|
||||||
|
|
||||||
vio-supply = <&smps7_reg>;
|
vio-supply = <&smps7_reg>;
|
||||||
v2v1-supply = <&smps9_reg>;
|
v2v1-supply = <&smps9_reg>;
|
||||||
|
|
|
@ -35,6 +35,22 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* LDO4 is VPP1 - ball AD9 */
|
||||||
|
&ldo4_reg {
|
||||||
|
regulator-min-microvolt = <2000000>;
|
||||||
|
regulator-max-microvolt = <2000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LDO7 is used for HDMI: VDDA_DSIPORTA - ball AA33, VDDA_DSIPORTC - ball AE33,
|
||||||
|
* VDDA_HDMI - ball AN25
|
||||||
|
*/
|
||||||
|
&ldo7_reg {
|
||||||
|
status = "okay";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
};
|
||||||
|
|
||||||
&omap5_pmx_core {
|
&omap5_pmx_core {
|
||||||
i2c4_pins: pinmux_i2c4_pins {
|
i2c4_pins: pinmux_i2c4_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
|
@ -52,3 +68,13 @@
|
||||||
<&gpio7 3 0>; /* 195, SDA */
|
<&gpio7 3 0>; /* 195, SDA */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&twl6040 {
|
||||||
|
ti,audpwron-gpio = <&gpio5 16 GPIO_ACTIVE_HIGH>; /* gpio line 144 */
|
||||||
|
};
|
||||||
|
|
||||||
|
&twl6040_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP5_IOPAD(0x1c4, PIN_OUTPUT | MUX_MODE6) /* mcspi1_somi.gpio5_144 */
|
||||||
|
OMAP5_IOPAD(0x1ca, PIN_OUTPUT | MUX_MODE6) /* perslimbus2_clock.gpio5_145 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
|
@ -51,3 +51,13 @@
|
||||||
<&gpio9 1 GPIO_ACTIVE_HIGH>, /* TCA6424A P00, LS OE */
|
<&gpio9 1 GPIO_ACTIVE_HIGH>, /* TCA6424A P00, LS OE */
|
||||||
<&gpio7 1 GPIO_ACTIVE_HIGH>; /* GPIO 193, HPD */
|
<&gpio7 1 GPIO_ACTIVE_HIGH>; /* GPIO 193, HPD */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&twl6040 {
|
||||||
|
ti,audpwron-gpio = <&gpio5 13 GPIO_ACTIVE_HIGH>; /* gpio line 141 */
|
||||||
|
};
|
||||||
|
|
||||||
|
&twl6040_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP5_IOPAD(0x1be, PIN_OUTPUT | MUX_MODE6) /* mcspi1_somi.gpio5_141 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
|
@ -136,6 +136,7 @@
|
||||||
&gmac1 {
|
&gmac1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
|
phy-handle = <&phy1>;
|
||||||
|
|
||||||
snps,reset-gpio = <&porta 0 GPIO_ACTIVE_LOW>;
|
snps,reset-gpio = <&porta 0 GPIO_ACTIVE_LOW>;
|
||||||
snps,reset-active-low;
|
snps,reset-active-low;
|
||||||
|
|
|
@ -24,18 +24,21 @@
|
||||||
compatible = "shared-dma-pool";
|
compatible = "shared-dma-pool";
|
||||||
reg = <0x40000000 0x01000000>;
|
reg = <0x40000000 0x01000000>;
|
||||||
no-map;
|
no-map;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gp1_reserved: rproc@41000000 {
|
gp1_reserved: rproc@41000000 {
|
||||||
compatible = "shared-dma-pool";
|
compatible = "shared-dma-pool";
|
||||||
reg = <0x41000000 0x01000000>;
|
reg = <0x41000000 0x01000000>;
|
||||||
no-map;
|
no-map;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
audio_reserved: rproc@42000000 {
|
audio_reserved: rproc@42000000 {
|
||||||
compatible = "shared-dma-pool";
|
compatible = "shared-dma-pool";
|
||||||
reg = <0x42000000 0x01000000>;
|
reg = <0x42000000 0x01000000>;
|
||||||
no-map;
|
no-map;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
dmu_reserved: rproc@43000000 {
|
dmu_reserved: rproc@43000000 {
|
||||||
|
|
|
@ -65,8 +65,9 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 36>,
|
||||||
<&ahb_gates 44>, <&dram_gates 26>;
|
<&ahb_gates 43>, <&ahb_gates 44>,
|
||||||
|
<&dram_gates 26>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -74,8 +75,9 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi";
|
allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 36>,
|
||||||
<&ahb_gates 44>, <&ahb_gates 46>,
|
<&ahb_gates 43>, <&ahb_gates 44>,
|
||||||
|
<&ahb_gates 46>,
|
||||||
<&dram_gates 25>, <&dram_gates 26>;
|
<&dram_gates 25>, <&dram_gates 26>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -84,9 +86,9 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_fe0-de_be0-lcd0";
|
allwinner,pipeline = "de_fe0-de_be0-lcd0";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 36>,
|
||||||
<&ahb_gates 46>, <&dram_gates 25>,
|
<&ahb_gates 44>, <&ahb_gates 46>,
|
||||||
<&dram_gates 26>;
|
<&dram_gates 25>, <&dram_gates 26>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -94,8 +96,9 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0";
|
allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 34>,
|
||||||
<&ahb_gates 44>, <&ahb_gates 46>,
|
<&ahb_gates 36>, <&ahb_gates 44>,
|
||||||
|
<&ahb_gates 46>,
|
||||||
<&dram_gates 5>, <&dram_gates 25>, <&dram_gates 26>;
|
<&dram_gates 5>, <&dram_gates 25>, <&dram_gates 26>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
|
@ -65,8 +65,8 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 36>,
|
||||||
<&ahb_gates 44>;
|
<&ahb_gates 43>, <&ahb_gates 44>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -74,7 +74,8 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_be0-lcd0";
|
allwinner,pipeline = "de_be0-lcd0";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>;
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 36>,
|
||||||
|
<&ahb_gates 44>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -82,8 +83,8 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_be0-lcd0-tve0";
|
allwinner,pipeline = "de_be0-lcd0-tve0";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 34>,
|
||||||
<&ahb_gates 44>;
|
<&ahb_gates 36>, <&ahb_gates 44>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "NextThing C.H.I.P.";
|
model = "NextThing C.H.I.P.";
|
||||||
compatible = "nextthing,chip", "allwinner,sun5i-r8";
|
compatible = "nextthing,chip", "allwinner,sun5i-r8", "allwinner,sun5i-a13";
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
i2c0 = &i2c0;
|
i2c0 = &i2c0;
|
||||||
|
|
|
@ -176,8 +176,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
®_dc1sw {
|
®_dc1sw {
|
||||||
regulator-min-microvolt = <3000000>;
|
|
||||||
regulator-max-microvolt = <3000000>;
|
|
||||||
regulator-name = "vcc-lcd";
|
regulator-name = "vcc-lcd";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -135,8 +135,6 @@
|
||||||
|
|
||||||
®_dc1sw {
|
®_dc1sw {
|
||||||
regulator-name = "vcc-lcd-usb2";
|
regulator-name = "vcc-lcd-usb2";
|
||||||
regulator-min-microvolt = <3000000>;
|
|
||||||
regulator-max-microvolt = <3000000>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
®_dc5ldo {
|
®_dc5ldo {
|
||||||
|
|
|
@ -67,8 +67,9 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
allwinner,pipeline = "de_be0-lcd0-hdmi";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 36>,
|
||||||
<&ahb_gates 44>, <&dram_gates 26>;
|
<&ahb_gates 43>, <&ahb_gates 44>,
|
||||||
|
<&dram_gates 26>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -76,8 +77,8 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_be0-lcd0";
|
allwinner,pipeline = "de_be0-lcd0";
|
||||||
clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>,
|
clocks = <&pll3>, <&pll5 1>, <&ahb_gates 36>,
|
||||||
<&dram_gates 26>;
|
<&ahb_gates 44>, <&dram_gates 26>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -85,7 +86,7 @@
|
||||||
compatible = "allwinner,simple-framebuffer",
|
compatible = "allwinner,simple-framebuffer",
|
||||||
"simple-framebuffer";
|
"simple-framebuffer";
|
||||||
allwinner,pipeline = "de_be0-lcd0-tve0";
|
allwinner,pipeline = "de_be0-lcd0-tve0";
|
||||||
clocks = <&pll5 1>,
|
clocks = <&pll3>, <&pll5 1>,
|
||||||
<&ahb_gates 34>, <&ahb_gates 36>, <&ahb_gates 44>,
|
<&ahb_gates 34>, <&ahb_gates 36>, <&ahb_gates 44>,
|
||||||
<&dram_gates 5>, <&dram_gates 26>;
|
<&dram_gates 5>, <&dram_gates 26>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -231,6 +232,7 @@
|
||||||
pll3x2: pll3x2_clk {
|
pll3x2: pll3x2_clk {
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "fixed-factor-clock";
|
compatible = "fixed-factor-clock";
|
||||||
|
clocks = <&pll3>;
|
||||||
clock-div = <1>;
|
clock-div = <1>;
|
||||||
clock-mult = <2>;
|
clock-mult = <2>;
|
||||||
clock-output-names = "pll3-2x";
|
clock-output-names = "pll3-2x";
|
||||||
|
@ -272,6 +274,7 @@
|
||||||
pll7x2: pll7x2_clk {
|
pll7x2: pll7x2_clk {
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "fixed-factor-clock";
|
compatible = "fixed-factor-clock";
|
||||||
|
clocks = <&pll7>;
|
||||||
clock-div = <1>;
|
clock-div = <1>;
|
||||||
clock-mult = <2>;
|
clock-mult = <2>;
|
||||||
clock-output-names = "pll7-2x";
|
clock-output-names = "pll7-2x";
|
||||||
|
|
|
@ -1843,7 +1843,7 @@
|
||||||
|
|
||||||
ldo5_reg: ldo5 {
|
ldo5_reg: ldo5 {
|
||||||
regulator-name = "vddio_sdmmc,avdd_vdac";
|
regulator-name = "vddio_sdmmc,avdd_vdac";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
@ -1914,6 +1914,7 @@
|
||||||
|
|
||||||
sdhci@78000000 {
|
sdhci@78000000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
vqmmc-supply = <&ldo5_reg>;
|
||||||
cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
|
||||||
wp-gpios = <&gpio TEGRA_GPIO(T, 3) GPIO_ACTIVE_HIGH>;
|
wp-gpios = <&gpio TEGRA_GPIO(T, 3) GPIO_ACTIVE_HIGH>;
|
||||||
power-gpios = <&gpio TEGRA_GPIO(D, 7) GPIO_ACTIVE_HIGH>;
|
power-gpios = <&gpio TEGRA_GPIO(D, 7) GPIO_ACTIVE_HIGH>;
|
||||||
|
|
|
@ -82,6 +82,7 @@ CONFIG_TOUCHSCREEN_MMS114=y
|
||||||
CONFIG_INPUT_MISC=y
|
CONFIG_INPUT_MISC=y
|
||||||
CONFIG_INPUT_MAX77693_HAPTIC=y
|
CONFIG_INPUT_MAX77693_HAPTIC=y
|
||||||
CONFIG_INPUT_MAX8997_HAPTIC=y
|
CONFIG_INPUT_MAX8997_HAPTIC=y
|
||||||
|
CONFIG_KEYBOARD_SAMSUNG=y
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_SAMSUNG=y
|
CONFIG_SERIAL_SAMSUNG=y
|
||||||
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
||||||
|
|
|
@ -264,6 +264,7 @@ CONFIG_KEYBOARD_TEGRA=y
|
||||||
CONFIG_KEYBOARD_SPEAR=y
|
CONFIG_KEYBOARD_SPEAR=y
|
||||||
CONFIG_KEYBOARD_ST_KEYSCAN=y
|
CONFIG_KEYBOARD_ST_KEYSCAN=y
|
||||||
CONFIG_KEYBOARD_CROS_EC=m
|
CONFIG_KEYBOARD_CROS_EC=m
|
||||||
|
CONFIG_KEYBOARD_SAMSUNG=m
|
||||||
CONFIG_MOUSE_PS2_ELANTECH=y
|
CONFIG_MOUSE_PS2_ELANTECH=y
|
||||||
CONFIG_MOUSE_CYAPA=m
|
CONFIG_MOUSE_CYAPA=m
|
||||||
CONFIG_MOUSE_ELAN_I2C=y
|
CONFIG_MOUSE_ELAN_I2C=y
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
|
static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
|
||||||
{
|
{
|
||||||
return (pmd_t *)get_zeroed_page(GFP_KERNEL | __GFP_REPEAT);
|
return (pmd_t *)get_zeroed_page(GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
|
static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
|
||||||
|
|
|
@ -193,6 +193,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr)
|
||||||
|
|
||||||
#define pmd_large(pmd) (pmd_val(pmd) & 2)
|
#define pmd_large(pmd) (pmd_val(pmd) & 2)
|
||||||
#define pmd_bad(pmd) (pmd_val(pmd) & 2)
|
#define pmd_bad(pmd) (pmd_val(pmd) & 2)
|
||||||
|
#define pmd_present(pmd) (pmd_val(pmd))
|
||||||
|
|
||||||
#define copy_pmd(pmdpd,pmdps) \
|
#define copy_pmd(pmdpd,pmdps) \
|
||||||
do { \
|
do { \
|
||||||
|
|
|
@ -211,6 +211,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr)
|
||||||
: !!(pmd_val(pmd) & (val)))
|
: !!(pmd_val(pmd) & (val)))
|
||||||
#define pmd_isclear(pmd, val) (!(pmd_val(pmd) & (val)))
|
#define pmd_isclear(pmd, val) (!(pmd_val(pmd) & (val)))
|
||||||
|
|
||||||
|
#define pmd_present(pmd) (pmd_isset((pmd), L_PMD_SECT_VALID))
|
||||||
#define pmd_young(pmd) (pmd_isset((pmd), PMD_SECT_AF))
|
#define pmd_young(pmd) (pmd_isset((pmd), PMD_SECT_AF))
|
||||||
#define pte_special(pte) (pte_isset((pte), L_PTE_SPECIAL))
|
#define pte_special(pte) (pte_isset((pte), L_PTE_SPECIAL))
|
||||||
static inline pte_t pte_mkspecial(pte_t pte)
|
static inline pte_t pte_mkspecial(pte_t pte)
|
||||||
|
@ -249,10 +250,10 @@ PMD_BIT_FUNC(mkyoung, |= PMD_SECT_AF);
|
||||||
#define pfn_pmd(pfn,prot) (__pmd(((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot)))
|
#define pfn_pmd(pfn,prot) (__pmd(((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot)))
|
||||||
#define mk_pmd(page,prot) pfn_pmd(page_to_pfn(page),prot)
|
#define mk_pmd(page,prot) pfn_pmd(page_to_pfn(page),prot)
|
||||||
|
|
||||||
/* represent a notpresent pmd by zero, this is used by pmdp_invalidate */
|
/* represent a notpresent pmd by faulting entry, this is used by pmdp_invalidate */
|
||||||
static inline pmd_t pmd_mknotpresent(pmd_t pmd)
|
static inline pmd_t pmd_mknotpresent(pmd_t pmd)
|
||||||
{
|
{
|
||||||
return __pmd(0);
|
return __pmd(pmd_val(pmd) & ~L_PMD_SECT_VALID);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
|
static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue