Merge 1c9f8dff62 ("Merge tag 'char-misc-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc") into android-mainline
Steps on the way to 6.6-rc1 Change-Id: I1dfff264b71cfa9757f52ebb65b065de2c7a56b4 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -666,11 +666,6 @@ S: Tamsui town, Taipei county,
|
||||
S: Taiwan 251
|
||||
S: Republic of China
|
||||
|
||||
N: Reinette Chatre
|
||||
E: reinette.chatre@intel.com
|
||||
D: WiMedia Link Protocol implementation
|
||||
D: UWB stack bits and pieces
|
||||
|
||||
N: Michael Elizabeth Chastain
|
||||
E: mec@shout.net
|
||||
D: Configure, Menuconfig, xconfig
|
||||
@@ -3023,12 +3018,6 @@ S: Demonstratsii 8-382
|
||||
S: Tula 300000
|
||||
S: Russia
|
||||
|
||||
N: Inaky Perez-Gonzalez
|
||||
E: inaky.perez-gonzalez@intel.com
|
||||
D: UWB stack, HWA-RC driver and HWA-HC drivers
|
||||
D: Wireless USB additions to the USB stack
|
||||
D: WiMedia Link Protocol bits and pieces
|
||||
|
||||
N: Gordon Peters
|
||||
E: GordPeters@smarttech.com
|
||||
D: Isochronous receive for IEEE 1394 driver (OHCI module).
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
What: /sys/bus/mhi/devices/.../serialnumber
|
||||
Date: Sept 2020
|
||||
KernelVersion: 5.10
|
||||
Contact: Bhaumik Bhatt <bbhatt@codeaurora.org>
|
||||
Contact: mhi@lists.linux.dev
|
||||
Description: The file holds the serial number of the client device obtained
|
||||
using a BHI (Boot Host Interface) register read after at least
|
||||
one attempt to power up the device has been done. If read
|
||||
@@ -12,7 +12,7 @@ Users: Any userspace application or clients interested in device info.
|
||||
What: /sys/bus/mhi/devices/.../oem_pk_hash
|
||||
Date: Sept 2020
|
||||
KernelVersion: 5.10
|
||||
Contact: Bhaumik Bhatt <bbhatt@codeaurora.org>
|
||||
Contact: mhi@lists.linux.dev
|
||||
Description: The file holds the OEM PK Hash value of the endpoint device
|
||||
obtained using a BHI (Boot Host Interface) register read after
|
||||
at least one attempt to power up the device has been done. If
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
What: /config/usb-gadget/gadget/functions/midi2.name
|
||||
Date: Jul 2023
|
||||
KernelVersion: 6.6
|
||||
Description:
|
||||
The attributes:
|
||||
|
||||
============ ===============================================
|
||||
process_ump Flag to process UMP Stream messages (0 or 1)
|
||||
static_block Flag for static blocks (0 or 1)
|
||||
iface_name MIDI interface name string
|
||||
============ ===============================================
|
||||
|
||||
What: /config/usb-gadget/gadget/functions/midi2.name/ep.number
|
||||
Date: Jul 2023
|
||||
KernelVersion: 6.6
|
||||
Description:
|
||||
This group contains a UMP Endpoint configuration.
|
||||
A new Endpoint starts from 0, and can be up to 3.
|
||||
|
||||
The attributes:
|
||||
|
||||
============= ===============================================
|
||||
protocol_caps MIDI protocol capabilities (1, 2 or 3 for both)
|
||||
protocol Default MIDI protocol (1 or 2)
|
||||
ep_name UMP Endpoint name string
|
||||
product_id Product ID string
|
||||
manufacturer Manufacture ID (24 bit)
|
||||
family Device family ID (16 bit)
|
||||
model Device model ID (16 bit)
|
||||
sw_revision Software Revision (32 bit)
|
||||
============= ===============================================
|
||||
|
||||
What: /config/usb-gadget/gadget/functions/midi2.name/ep.number/block.number
|
||||
Date: Jul 2023
|
||||
KernelVersion: 6.6
|
||||
Description:
|
||||
This group contains a UMP Function Block configuration.
|
||||
A new block starts from 0, and can be up to 31.
|
||||
|
||||
The attributes:
|
||||
|
||||
================= ==============================================
|
||||
name Function Block name string
|
||||
direction 1: input, 2: output, 3: bidirectional
|
||||
first_group The first UMP Group number (0-15)
|
||||
num_groups The number of groups in this FB (1-16)
|
||||
midi1_first_group The first UMP Group number for MIDI 1.0 (0-15)
|
||||
midi1_num_groups The number of groups for MIDI 1.0 (0-16)
|
||||
ui_hint 0: unknown, 1: receiver, 2: sender, 3: both
|
||||
midi_ci_verison Supported MIDI-CI version number (8 bit)
|
||||
is_midi1 Legacy MIDI 1.0 device (0, 1 or 2)
|
||||
sysex8_streams Max number of SysEx8 streams (8 bit)
|
||||
active Active FB flag (0 or 1)
|
||||
================= ==============================================
|
||||
@@ -22,11 +22,11 @@ Description:
|
||||
phase clock.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/external_input_phase_clock_select_available
|
||||
KernelVersion: 6.4
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
KernelVersion: 6.4
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Discrete set of available values for the respective device
|
||||
configuration are listed in this file.
|
||||
Discrete set of available values for the respective device
|
||||
configuration are listed in this file.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/countY/count
|
||||
KernelVersion: 5.2
|
||||
|
||||
@@ -7,4 +7,4 @@ Description:
|
||||
by the driver. A value of 1 indicates that a timeout has
|
||||
occurred and no transfers have completed since the timeout. A
|
||||
value of 0 indicates that no timeout has occurred, or if one
|
||||
has, more recent transfers have completed successful.
|
||||
has, more recent transfers have completed successfully.
|
||||
|
||||
@@ -2163,3 +2163,19 @@ Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
An example format is 16-bytes, 2-digits-per-byte, HEX-string
|
||||
representing the sensor unique ID number.
|
||||
|
||||
What: /sys/.../events/in_proximity_thresh_either_runningperiod
|
||||
KernelVersion: 6.6
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
A running period of time (in seconds) for which
|
||||
in_proximity_thresh_either_runningcount amount of conditions
|
||||
must occur before an event is generated. If direction is not
|
||||
specified then this period applies to both directions.
|
||||
|
||||
What: /sys/.../events/in_proximity_thresh_either_runningcount
|
||||
KernelVersion: 6.6
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Number of conditions that must occur, during a running
|
||||
period, before an event is generated.
|
||||
|
||||
@@ -7,6 +7,8 @@ Description:
|
||||
|
||||
- auto -> Adjust bandpass filter to track changes in input clock rate.
|
||||
- manual -> disable/unregister the clock rate notifier / input clock tracking.
|
||||
- bypass -> bypass low pass filter, high pass filter and disable/unregister
|
||||
the clock rate notifier
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/filter_mode
|
||||
KernelVersion:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/boot_acl
|
||||
Date: Jun 2018
|
||||
KernelVersion: 4.17
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: Holds a comma separated list of device unique_ids that
|
||||
are allowed to be connected automatically during system
|
||||
startup (e.g boot devices). The list always contains
|
||||
@@ -33,7 +33,7 @@ Description: This attribute tells whether the system supports
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/iommu_dma_protection
|
||||
Date: Mar 2019
|
||||
KernelVersion: 4.21
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute tells whether the system uses IOMMU
|
||||
for DMA protection. Value of 1 means IOMMU is used 0 means
|
||||
it is not (DMA protection is solely based on Thunderbolt
|
||||
@@ -42,7 +42,7 @@ Description: This attribute tells whether the system uses IOMMU
|
||||
What: /sys/bus/thunderbolt/devices/.../domainX/security
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute holds current Thunderbolt security level
|
||||
set by the system BIOS. Possible values are:
|
||||
|
||||
@@ -64,7 +64,7 @@ Description: This attribute holds current Thunderbolt security level
|
||||
What: /sys/bus/thunderbolt/devices/.../authorized
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute is used to authorize Thunderbolt devices
|
||||
after they have been connected. If the device is not
|
||||
authorized, no PCIe devices are available to the system.
|
||||
@@ -98,7 +98,7 @@ Description: This attribute is used to authorize Thunderbolt devices
|
||||
What: /sys/bus/thunderbolt/devices/.../boot
|
||||
Date: Jun 2018
|
||||
KernelVersion: 4.17
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute contains 1 if Thunderbolt device was already
|
||||
authorized on boot and 0 otherwise.
|
||||
|
||||
@@ -113,7 +113,7 @@ Description: This attribute contains the generation of the Thunderbolt
|
||||
What: /sys/bus/thunderbolt/devices/.../key
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: When a devices supports Thunderbolt secure connect it will
|
||||
have this attribute. Writing 32 byte hex string changes
|
||||
authorization to use the secure connection method instead.
|
||||
@@ -123,14 +123,14 @@ Description: When a devices supports Thunderbolt secure connect it will
|
||||
What: /sys/bus/thunderbolt/devices/.../device
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute contains id of this device extracted from
|
||||
the device DROM.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../device_name
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute contains name of this device extracted from
|
||||
the device DROM.
|
||||
|
||||
@@ -172,21 +172,21 @@ Description: This attribute reports number of TX lanes the device is
|
||||
What: /sys/bus/thunderbolt/devices/.../vendor
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute contains vendor id of this device extracted
|
||||
from the device DROM.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../vendor_name
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute contains vendor name of this device extracted
|
||||
from the device DROM.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/.../unique_id
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This attribute contains unique_id string of this device.
|
||||
This is either read from hardware registers (UUID on
|
||||
newer hardware) or based on UID from the device DROM.
|
||||
@@ -195,7 +195,7 @@ Description: This attribute contains unique_id string of this device.
|
||||
What: /sys/bus/thunderbolt/devices/.../nvm_version
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: If the device has upgradeable firmware the version
|
||||
number is available here. Format: %x.%x, major.minor.
|
||||
If the device is in safe mode reading the file returns
|
||||
@@ -204,7 +204,7 @@ Description: If the device has upgradeable firmware the version
|
||||
What: /sys/bus/thunderbolt/devices/.../nvm_authenticate
|
||||
Date: Sep 2017
|
||||
KernelVersion: 4.13
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: When new NVM image is written to the non-active NVM
|
||||
area (through non_activeX NVMem device), the
|
||||
authentication procedure is started by writing to
|
||||
@@ -246,7 +246,7 @@ Description: For supported devices, automatically authenticate the new Thunderbo
|
||||
What: /sys/bus/thunderbolt/devices/<xdomain>.<service>/key
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.15
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This contains name of the property directory the XDomain
|
||||
service exposes. This entry describes the protocol in
|
||||
question. Following directories are already reserved by
|
||||
@@ -261,35 +261,35 @@ Description: This contains name of the property directory the XDomain
|
||||
What: /sys/bus/thunderbolt/devices/<xdomain>.<service>/modalias
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.15
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: Stores the same MODALIAS value emitted by uevent for
|
||||
the XDomain service. Format: tbtsvc:kSpNvNrN
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcid
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.15
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This contains XDomain protocol identifier the XDomain
|
||||
service supports.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcvers
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.15
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This contains XDomain protocol version the XDomain
|
||||
service supports.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcrevs
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.15
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This contains XDomain software version the XDomain
|
||||
service supports.
|
||||
|
||||
What: /sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcstns
|
||||
Date: Jan 2018
|
||||
KernelVersion: 4.15
|
||||
Contact: thunderbolt-software@lists.01.org
|
||||
Contact: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
Description: This contains XDomain service specific settings as
|
||||
bitmask. Format: %x
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
What: /sys/bus/umc/
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The Wireless Host Controller Interface (WHCI)
|
||||
specification describes a PCI-based device with
|
||||
multiple capabilities; the UWB Multi-interface
|
||||
Controller (UMC).
|
||||
|
||||
The umc bus presents each of the individual
|
||||
capabilities as a device.
|
||||
|
||||
What: /sys/bus/umc/devices/.../capability_id
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The ID of this capability, with 0 being the radio
|
||||
controller capability.
|
||||
|
||||
What: /sys/bus/umc/devices/.../version
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The specification version this capability's hardware
|
||||
interface complies with.
|
||||
@@ -28,40 +28,6 @@ Description:
|
||||
drivers, non-authorized one are not. By default, wired
|
||||
USB devices are authorized.
|
||||
|
||||
Certified Wireless USB devices are not authorized
|
||||
initially and should be (by writing 1) after the
|
||||
device has been authenticated.
|
||||
|
||||
What: /sys/bus/usb/device/.../wusb_cdid
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
For Certified Wireless USB devices only.
|
||||
|
||||
A devices's CDID, as 16 space-separated hex octets.
|
||||
|
||||
What: /sys/bus/usb/device/.../wusb_ck
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
For Certified Wireless USB devices only.
|
||||
|
||||
Write the device's connection key (CK) to start the
|
||||
authentication of the device. The CK is 16
|
||||
space-separated hex octets.
|
||||
|
||||
What: /sys/bus/usb/device/.../wusb_disconnect
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
For Certified Wireless USB devices only.
|
||||
|
||||
Write a 1 to force the device to disconnect
|
||||
(equivalent to unplugging a wired USB device).
|
||||
|
||||
What: /sys/bus/usb/drivers/.../new_id
|
||||
Date: October 2011
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
|
||||
@@ -1,156 +0,0 @@
|
||||
What: /sys/class/uwb_rc
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
Interfaces for WiMedia Ultra Wideband Common Radio
|
||||
Platform (UWB) radio controllers.
|
||||
|
||||
Familiarity with the ECMA-368 'High Rate Ultra
|
||||
Wideband MAC and PHY Specification' is assumed.
|
||||
|
||||
What: /sys/class/uwb_rc/beacon_timeout_ms
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Description:
|
||||
If no beacons are received from a device for at least
|
||||
this time, the device will be considered to have gone
|
||||
and it will be removed. The default is 3 superframes
|
||||
(~197 ms) as required by the specification.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
An individual UWB radio controller.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/beacon
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
Write:
|
||||
|
||||
<channel>
|
||||
|
||||
to force a specific channel to be used when beaconing,
|
||||
or, if <channel> is -1, to prohibit beaconing. If
|
||||
<channel> is 0, then the default channel selection
|
||||
algorithm will be used. Valid channels depends on the
|
||||
radio controller's supported band groups.
|
||||
|
||||
Reading returns the currently active channel, or -1 if
|
||||
the radio controller is not beaconing.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/ASIE
|
||||
Date: August 2014
|
||||
KernelVersion: 3.18
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
|
||||
The application-specific information element (ASIE)
|
||||
included in this device's beacon, in space separated
|
||||
hex octets.
|
||||
|
||||
Reading returns the current ASIE. Writing replaces
|
||||
the current ASIE with the one written.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/scan
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
Write:
|
||||
|
||||
<channel> <type> [<bpst offset>]
|
||||
|
||||
to start (or stop) scanning on a channel. <type> is one of:
|
||||
|
||||
== =======================================
|
||||
0 scan
|
||||
1 scan outside BP
|
||||
2 scan while inactive
|
||||
3 scanning disabled
|
||||
4 scan (with start time of <bpst offset>)
|
||||
== =======================================
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/mac_address
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
The EUI-48, in colon-separated hex octets, for this
|
||||
radio controller. A write will change the radio
|
||||
controller's EUI-48 but only do so while the device is
|
||||
not beaconing or scanning.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
A symlink to the device (if any) of the WUSB Host
|
||||
Controller PAL using this radio controller.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
A neighbour UWB device that has either been detected
|
||||
as part of a scan or is a member of the radio
|
||||
controllers beacon group.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/BPST
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
The time (using the radio controllers internal 1 ms
|
||||
interval superframe timer) of the last beacon from
|
||||
this device was received.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/DevAddr
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
The current DevAddr of this device in colon separated
|
||||
hex octets.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/EUI_48
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
|
||||
The EUI-48 of this device in colon separated hex
|
||||
octets.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/IEs
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
The latest IEs included in this device's beacon, in
|
||||
space separated hex octets with one IE per line.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/LQE
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
Link Quality Estimate - the Signal to Noise Ratio
|
||||
(SNR) of all packets received from this device in dB.
|
||||
This gives an estimate on a suitable PHY rate. Refer
|
||||
to [ECMA-368] section 13.3 for more details.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/<EUI-48>/RSSI
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: linux-usb@vger.kernel.org
|
||||
Description:
|
||||
Received Signal Strength Indication - the strength of
|
||||
the received signal in dB. LQE is a more useful
|
||||
measure of the radio link quality.
|
||||
@@ -1,57 +0,0 @@
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_chid
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
Write the CHID (16 space-separated hex octets) for this host controller.
|
||||
This starts the host controller, allowing it to accept connection from
|
||||
WUSB devices.
|
||||
|
||||
Set an all zero CHID to stop the host controller.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_trust_timeout
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
Devices that haven't sent a WUSB packet to the host
|
||||
within 'wusb_trust_timeout' ms are considered to have
|
||||
disconnected and are removed. The default value of
|
||||
4000 ms is the value required by the WUSB
|
||||
specification.
|
||||
|
||||
Since this relates to security (specifically, the
|
||||
lifetime of PTKs and GTKs) it should not be changed
|
||||
from the default.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_phy_rate
|
||||
Date: August 2009
|
||||
KernelVersion: 2.6.32
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The maximum PHY rate to use for all connected devices.
|
||||
This is only of limited use for testing and
|
||||
development as the hardware's automatic rate
|
||||
adaptation is better then this simple control.
|
||||
|
||||
Refer to [ECMA-368] section 10.3.1.1 for the value to
|
||||
use.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_dnts
|
||||
Date: June 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: Thomas Pugliese <thomas.pugliese@gmail.com>
|
||||
Description:
|
||||
The device notification time slot (DNTS) count and interval in
|
||||
milliseconds that the WUSB host should use. This controls how
|
||||
often the devices will have the opportunity to send
|
||||
notifications to the host.
|
||||
|
||||
What: /sys/class/uwb_rc/uwb<N>/wusbhc/wusb_retry_count
|
||||
Date: June 2013
|
||||
KernelVersion: 3.11
|
||||
Contact: Thomas Pugliese <thomas.pugliese@gmail.com>
|
||||
Description:
|
||||
The number of retries that the WUSB host should attempt
|
||||
before reporting an error for a bus transaction. The range of
|
||||
valid values is [0..15], where 0 indicates infinite retries.
|
||||
@@ -1,101 +0,0 @@
|
||||
What: /sys/bus/usb/drivers/wusb_cbaf/.../wusb_*
|
||||
Date: August 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
Various files for managing Cable Based Association of
|
||||
(wireless) USB devices.
|
||||
|
||||
The sequence of operations should be:
|
||||
|
||||
1. Device is plugged in.
|
||||
|
||||
2. The connection manager (CM) sees a device with CBA capability.
|
||||
(the wusb_chid etc. files in /sys/devices/blah/OURDEVICE).
|
||||
|
||||
3. The CM writes the host name, supported band groups,
|
||||
and the CHID (host ID) into the wusb_host_name,
|
||||
wusb_host_band_groups and wusb_chid files. These
|
||||
get sent to the device and the CDID (if any) for
|
||||
this host is requested.
|
||||
|
||||
4. The CM can verify that the device's supported band
|
||||
groups (wusb_device_band_groups) are compatible
|
||||
with the host.
|
||||
|
||||
5. The CM reads the wusb_cdid file.
|
||||
|
||||
6. The CM looks it up its database.
|
||||
|
||||
- If it has a matching CHID,CDID entry, the device
|
||||
has been authorized before and nothing further
|
||||
needs to be done.
|
||||
|
||||
- If the CDID is zero (or the CM doesn't find a
|
||||
matching CDID in its database), the device is
|
||||
assumed to be not known. The CM may associate
|
||||
the host with device by: writing a randomly
|
||||
generated CDID to wusb_cdid and then a random CK
|
||||
to wusb_ck (this uploads the new CC to the
|
||||
device).
|
||||
|
||||
CMD may choose to prompt the user before
|
||||
associating with a new device.
|
||||
|
||||
7. Device is unplugged.
|
||||
|
||||
References:
|
||||
[WUSB-AM]
|
||||
Association Models Supplement to the
|
||||
Certified Wireless Universal Serial Bus
|
||||
Specification, version 1.0.
|
||||
|
||||
What: /sys/bus/usb/drivers/wusb_cbaf/.../wusb_chid
|
||||
Date: August 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The CHID of the host formatted as 16 space-separated
|
||||
hex octets.
|
||||
|
||||
Writes fetches device's supported band groups and the
|
||||
the CDID for any existing association with this host.
|
||||
|
||||
What: /sys/bus/usb/drivers/wusb_cbaf/.../wusb_host_name
|
||||
Date: August 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
A friendly name for the host as a UTF-8 encoded string.
|
||||
|
||||
What: /sys/bus/usb/drivers/wusb_cbaf/.../wusb_host_band_groups
|
||||
Date: August 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The band groups supported by the host, in the format
|
||||
defined in [WUSB-AM].
|
||||
|
||||
What: /sys/bus/usb/drivers/wusb_cbaf/.../wusb_device_band_groups
|
||||
Date: August 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The band groups supported by the device, in the format
|
||||
defined in [WUSB-AM].
|
||||
|
||||
What: /sys/bus/usb/drivers/wusb_cbaf/.../wusb_cdid
|
||||
Date: August 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
The device's CDID formatted as 16 space-separated hex
|
||||
octets.
|
||||
|
||||
What: /sys/bus/usb/drivers/wusb_cbaf/.../wusb_ck
|
||||
Date: August 2008
|
||||
KernelVersion: 2.6.27
|
||||
Contact: David Vrabel <david.vrabel@csr.com>
|
||||
Description:
|
||||
Write 16 space-separated random, hex octets to
|
||||
associate with the device.
|
||||
@@ -2691,18 +2691,9 @@
|
||||
45 = /dev/ttyMM1 Marvell MPSC - port 1 (obsolete unused)
|
||||
46 = /dev/ttyCPM0 PPC CPM (SCC or SMC) - port 0
|
||||
...
|
||||
49 = /dev/ttyCPM5 PPC CPM (SCC or SMC) - port 3
|
||||
50 = /dev/ttyIOC0 Altix serial card
|
||||
...
|
||||
81 = /dev/ttyIOC31 Altix serial card
|
||||
51 = /dev/ttyCPM5 PPC CPM (SCC or SMC) - port 5
|
||||
82 = /dev/ttyVR0 NEC VR4100 series SIU
|
||||
83 = /dev/ttyVR1 NEC VR4100 series DSIU
|
||||
84 = /dev/ttyIOC84 Altix ioc4 serial card
|
||||
...
|
||||
115 = /dev/ttyIOC115 Altix ioc4 serial card
|
||||
116 = /dev/ttySIOC0 Altix ioc3 serial card
|
||||
...
|
||||
147 = /dev/ttySIOC31 Altix ioc3 serial card
|
||||
148 = /dev/ttyPSC0 PPC PSC - port 0
|
||||
...
|
||||
153 = /dev/ttyPSC5 PPC PSC - port 5
|
||||
@@ -2761,10 +2752,7 @@
|
||||
43 = /dev/ttycusmx2 Callout device for ttySMX2
|
||||
46 = /dev/cucpm0 Callout device for ttyCPM0
|
||||
...
|
||||
49 = /dev/cucpm5 Callout device for ttyCPM5
|
||||
50 = /dev/cuioc40 Callout device for ttyIOC40
|
||||
...
|
||||
81 = /dev/cuioc431 Callout device for ttyIOC431
|
||||
51 = /dev/cucpm5 Callout device for ttyCPM5
|
||||
82 = /dev/cuvr0 Callout device for ttyVR0
|
||||
83 = /dev/cuvr1 Callout device for ttyVR1
|
||||
|
||||
|
||||
@@ -216,13 +216,14 @@ The flags are::
|
||||
t Include thread ID, or <intr>
|
||||
m Include module name
|
||||
f Include the function name
|
||||
s Include the source file name
|
||||
l Include line number
|
||||
|
||||
For ``print_hex_dump_debug()`` and ``print_hex_dump_bytes()``, only
|
||||
the ``p`` flag has meaning, other flags are ignored.
|
||||
|
||||
Note the regexp ``^[-+=][flmpt_]+$`` matches a flags specification.
|
||||
To clear all flags at once, use ``=_`` or ``-flmpt``.
|
||||
Note the regexp ``^[-+=][fslmpt_]+$`` matches a flags specification.
|
||||
To clear all flags at once, use ``=_`` or ``-fslmpt``.
|
||||
|
||||
|
||||
Debug messages during Boot Process
|
||||
|
||||
@@ -6723,7 +6723,7 @@
|
||||
|
||||
usbcore.authorized_default=
|
||||
[USB] Default USB device authorization:
|
||||
(default -1 = authorized except for wireless USB,
|
||||
(default -1 = authorized (same as 1),
|
||||
0 = not authorized, 1 = authorized, 2 = authorized
|
||||
if device connected to internal port)
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ properties:
|
||||
|
||||
connector:
|
||||
$ref: /schemas/connector/usb-connector.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
ports:
|
||||
$ref: /schemas/graph.yaml#/properties/ports
|
||||
|
||||
@@ -27,6 +27,10 @@ properties:
|
||||
description: I2C slave address of the device. Usually 0x25 for SM5502
|
||||
and SM5703, 0x14 for SM5504.
|
||||
|
||||
connector:
|
||||
$ref: /schemas/connector/usb-connector.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/fsi/ibm,i2cr-fsi-master.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: IBM I2C Responder virtual FSI master
|
||||
|
||||
maintainers:
|
||||
- Eddie James <eajames@linux.ibm.com>
|
||||
|
||||
description: |
|
||||
The I2C Responder (I2CR) is a an I2C device that's connected to an FSI CFAM
|
||||
(see fsi.txt). The I2CR translates I2C bus operations to FSI CFAM reads and
|
||||
writes or SCOM operations, thereby acting as an FSI master.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- ibm,i2cr-fsi-master
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2cr@20 {
|
||||
compatible = "ibm,i2cr-fsi-master";
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,91 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/iio/adc/allwinner,sun20i-d1-gpadc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Allwinner D1 General Purpose ADC
|
||||
|
||||
maintainers:
|
||||
- Maksim Kiselev <bigunclemax@gmail.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun20i-d1-gpadc
|
||||
|
||||
"#io-channel-cells":
|
||||
const: 1
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
"^channel@[0-9a-f]+$":
|
||||
$ref: adc.yaml
|
||||
type: object
|
||||
description:
|
||||
Represents the internal channels of the ADC.
|
||||
|
||||
properties:
|
||||
reg:
|
||||
items:
|
||||
minimum: 0
|
||||
maximum: 15
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- "#io-channel-cells"
|
||||
- clocks
|
||||
- compatible
|
||||
- interrupts
|
||||
- reg
|
||||
- resets
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/sun20i-d1-ccu.h>
|
||||
#include <dt-bindings/reset/sun20i-d1-ccu.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
gpadc: adc@2009000 {
|
||||
compatible = "allwinner,sun20i-d1-gpadc";
|
||||
reg = <0x2009000 0x400>;
|
||||
clocks = <&ccu CLK_BUS_GPADC>;
|
||||
resets = <&ccu RST_BUS_GPADC>;
|
||||
interrupts = <73 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#io-channel-cells = <1>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
channel@0 {
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
channel@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -78,9 +78,9 @@ patternProperties:
|
||||
ti,datarate:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
minimum: 0
|
||||
maximum: 6
|
||||
maximum: 7
|
||||
description: |
|
||||
Data acquisition rate in samples per second
|
||||
Data acquisition rate in samples per second for ADS1015, TLA2024
|
||||
0: 128
|
||||
1: 250
|
||||
2: 490
|
||||
@@ -88,6 +88,17 @@ patternProperties:
|
||||
4: 1600 (default)
|
||||
5: 2400
|
||||
6: 3300
|
||||
7: 3300
|
||||
|
||||
Data acquisition rate in samples per second for ADS1115
|
||||
0: 8
|
||||
1: 16
|
||||
2: 32
|
||||
3: 64
|
||||
4: 128 (default)
|
||||
5: 250
|
||||
6: 475
|
||||
7: 860
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
|
||||
$id: http://devicetree.org/schemas/iio/dac/microchip,mcp4728.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Microchip MCP4728 DAC
|
||||
|
||||
maintainers:
|
||||
- Andrea Collamati <andrea.collamati@gmail.com>
|
||||
|
||||
description: |
|
||||
MCP4728 is a quad channel, 12-bit voltage output
|
||||
Digital-to-Analog Converter with non-volatile
|
||||
memory and I2C compatible Serial Interface.
|
||||
https://www.microchip.com/en-us/product/mcp4728
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: microchip,mcp4728
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
vdd-supply:
|
||||
description: |
|
||||
Provides both power and acts as the reference supply on the MCP4728
|
||||
when Internal Vref is not selected.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- vdd-supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dac@60 {
|
||||
compatible = "microchip,mcp4728";
|
||||
reg = <0x60>;
|
||||
vdd-supply = <&vdac_vdd>;
|
||||
};
|
||||
};
|
||||
@@ -39,6 +39,46 @@ properties:
|
||||
description:
|
||||
Analog voltage regulator.
|
||||
|
||||
vcc-drv-supply:
|
||||
description:
|
||||
RF Driver voltage regulator.
|
||||
|
||||
vcc2-drv-supply:
|
||||
description:
|
||||
RF predriver voltage regulator.
|
||||
|
||||
vcc-vva-supply:
|
||||
description:
|
||||
VVA Control Circuit voltage regulator.
|
||||
|
||||
vcc-amp1-supply:
|
||||
description:
|
||||
RF Amplifier 1 voltage regulator.
|
||||
|
||||
vcc-amp2-supply:
|
||||
description:
|
||||
RF Amplifier 2 voltage regulator.
|
||||
|
||||
vcc-env-supply:
|
||||
description:
|
||||
Envelope Detector voltage regulator.
|
||||
|
||||
vcc-bg-supply:
|
||||
description:
|
||||
Mixer Chip Band Gap Circuit voltage regulator.
|
||||
|
||||
vcc-bg2-supply:
|
||||
description:
|
||||
VGA Chip Band Gap Circuit voltage regulator.
|
||||
|
||||
vcc-mixer-supply:
|
||||
description:
|
||||
Mixer voltage regulator.
|
||||
|
||||
vcc-quad-supply:
|
||||
description:
|
||||
Quadruppler voltage regulator.
|
||||
|
||||
adi,detector-enable:
|
||||
description:
|
||||
Enable the Envelope Detector available at output pins VENV_P and
|
||||
@@ -69,6 +109,16 @@ required:
|
||||
- clocks
|
||||
- clock-names
|
||||
- vcm-supply
|
||||
- vcc-drv-supply
|
||||
- vcc2-drv-supply
|
||||
- vcc-vva-supply
|
||||
- vcc-amp1-supply
|
||||
- vcc-amp2-supply
|
||||
- vcc-env-supply
|
||||
- vcc-bg-supply
|
||||
- vcc-bg2-supply
|
||||
- vcc-mixer-supply
|
||||
- vcc-quad-supply
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
||||
@@ -87,6 +137,16 @@ examples:
|
||||
clocks = <&admv1013_lo>;
|
||||
clock-names = "lo_in";
|
||||
vcm-supply = <&vcm>;
|
||||
vcc-drv-supply = <&vcc_drv>;
|
||||
vcc2-drv-supply = <&vcc2_drv>;
|
||||
vcc-vva-supply = <&vcc_vva>;
|
||||
vcc-amp1-supply = <&vcc_amp1>;
|
||||
vcc-amp2-supply = <&vcc_amp2>;
|
||||
vcc-env-supply = <&vcc_env>;
|
||||
vcc-bg-supply = <&vcc_bg>;
|
||||
vcc-bg2-supply = <&vcc_bg2>;
|
||||
vcc-mixer-supply = <&vcc_mixer>;
|
||||
vcc-quad-supply = <&vcc_quad>;
|
||||
adi,quad-se-mode = "diff";
|
||||
adi,detector-enable;
|
||||
};
|
||||
|
||||
@@ -103,6 +103,14 @@ required:
|
||||
- clocks
|
||||
- clock-names
|
||||
- vcm-supply
|
||||
- vcc-if-bb-supply
|
||||
- vcc-vga-supply
|
||||
- vcc-vva-supply
|
||||
- vcc-lna-3p3-supply
|
||||
- vcc-lna-1p5-supply
|
||||
- vcc-bg-supply
|
||||
- vcc-quad-supply
|
||||
- vcc-mixer-supply
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/iio/light/rohm,bu27010.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ROHM BU27010 color sensor
|
||||
|
||||
maintainers:
|
||||
- Matti Vaittinen <mazziesaccount@gmail.com>
|
||||
|
||||
description: |
|
||||
The ROHM BU27010 is a sensor with 6 photodiodes (red, green, blue, clear,
|
||||
IR and flickering detection) with five configurable channels. Red, green
|
||||
and flickering detection being always available and two out of the rest
|
||||
three (blue, clear, IR) can be selected to be simultaneously measured.
|
||||
Typical application is adjusting LCD/OLED backlight of TVs, mobile phones
|
||||
and tablet PCs.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: rohm,bu27010
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
vdd-supply: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- vdd-supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
light-sensor@38 {
|
||||
compatible = "rohm,bu27010";
|
||||
reg = <0x38>;
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,60 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/iio/proximity/murata,irsd200.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Murata IRS-D200 PIR sensor
|
||||
|
||||
maintainers:
|
||||
- Waqar Hameed <waqar.hameed@axis.com>
|
||||
|
||||
description:
|
||||
PIR sensor for human detection.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: murata,irsd200
|
||||
|
||||
reg:
|
||||
items:
|
||||
- enum:
|
||||
- 0x48
|
||||
- 0x49
|
||||
description: |
|
||||
When the AD pin is connected to GND, the slave address is 0x48.
|
||||
When the AD pin is connected to VDD, the slave address is 0x49.
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
description:
|
||||
Type should be IRQ_TYPE_EDGE_RISING.
|
||||
|
||||
vdd-supply:
|
||||
description:
|
||||
3.3 V supply voltage.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- vdd-supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
proximity@48 {
|
||||
compatible = "murata,irsd200";
|
||||
reg = <0x48>;
|
||||
interrupts = <24 IRQ_TYPE_EDGE_RISING>;
|
||||
vdd-supply = <®ulator_3v3>;
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -15,6 +15,9 @@ description: |
|
||||
Specifications about the devices can be found at:
|
||||
https://www.semtech.com/products/smart-sensing/sar-sensors/sx9310
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/iio/iio.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
@@ -102,7 +105,7 @@ required:
|
||||
- reg
|
||||
- "#io-channel-cells"
|
||||
|
||||
additionalProperties: false
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
|
||||
@@ -13,6 +13,9 @@ maintainers:
|
||||
description: |
|
||||
Semtech's SX9324 proximity sensor.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/iio/iio.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: semtech,sx9324
|
||||
@@ -167,7 +170,7 @@ required:
|
||||
- reg
|
||||
- "#io-channel-cells"
|
||||
|
||||
additionalProperties: false
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
|
||||
@@ -25,14 +25,20 @@ properties:
|
||||
- const: qcom,msm8998-bwmon # BWMON v4
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,sc7180-cpu-bwmon
|
||||
- qcom,sc7280-cpu-bwmon
|
||||
- qcom,sc8280xp-cpu-bwmon
|
||||
- qcom,sdm845-cpu-bwmon
|
||||
- qcom,sm6350-llcc-bwmon
|
||||
- qcom,sm8250-cpu-bwmon
|
||||
- qcom,sm8550-cpu-bwmon
|
||||
- const: qcom,sdm845-bwmon # BWMON v4, unified register space
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,sc7180-llcc-bwmon
|
||||
- qcom,sc8280xp-llcc-bwmon
|
||||
- qcom,sm6350-cpu-bwmon
|
||||
- qcom,sm8250-llcc-bwmon
|
||||
- qcom,sm8550-llcc-bwmon
|
||||
- const: qcom,sc7280-llcc-bwmon
|
||||
- const: qcom,sc7280-llcc-bwmon # BWMON v5
|
||||
|
||||
@@ -21,6 +21,7 @@ properties:
|
||||
- enum:
|
||||
- qcom,sc7180-osm-l3
|
||||
- qcom,sc8180x-osm-l3
|
||||
- qcom,sdm670-osm-l3
|
||||
- qcom,sdm845-osm-l3
|
||||
- qcom,sm6350-osm-l3
|
||||
- qcom,sm8150-osm-l3
|
||||
|
||||
@@ -18,9 +18,6 @@ description: |
|
||||
least one RPMh device child node pertaining to their RSC and each provider
|
||||
can map to multiple RPMh resources.
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,rpmh-common.yaml#
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
@@ -91,6 +88,7 @@ properties:
|
||||
- qcom,sm8250-mc-virt
|
||||
- qcom,sm8250-mmss-noc
|
||||
- qcom,sm8250-npu-noc
|
||||
- qcom,sm8250-qup-virt
|
||||
- qcom,sm8250-system-noc
|
||||
- qcom,sm8350-aggre1-noc
|
||||
- qcom,sm8350-aggre2-noc
|
||||
@@ -107,7 +105,19 @@ properties:
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,rpmh-common.yaml#
|
||||
- if:
|
||||
not:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sm8250-qup-virt
|
||||
then:
|
||||
required:
|
||||
- reg
|
||||
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/nvmem/fsl,t1023-sfp.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NXP QorIQ eFuse support
|
||||
|
||||
maintainers:
|
||||
- Richard Alpe <richard@bit42.se>
|
||||
|
||||
description:
|
||||
Read support for the eFuses (SFP) on NXP QorIQ series SoC's.
|
||||
|
||||
allOf:
|
||||
- $ref: nvmem.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,t1023-sfp
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
efuse@e8000 {
|
||||
compatible = "fsl,t1023-sfp";
|
||||
reg = <0xe8000 0x1000>;
|
||||
};
|
||||
...
|
||||
@@ -11,6 +11,15 @@ maintainers:
|
||||
- Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: mac-base
|
||||
description: >
|
||||
Cell with base MAC address to be used for calculating extra relative
|
||||
addresses.
|
||||
It can be stored in a plain binary format (cell length 6) or as an
|
||||
ASCII text like "00:11:22:33:44:55" (cell length 17).
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -25,6 +34,23 @@ properties:
|
||||
description:
|
||||
Size in bit within the address range specified by reg.
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
required: [ compatible ]
|
||||
then:
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: mac-base
|
||||
then:
|
||||
properties:
|
||||
"#nvmem-cell-cells":
|
||||
description: The first argument is a MAC address offset.
|
||||
const: 1
|
||||
required:
|
||||
- "#nvmem-cell-cells"
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
|
||||
@@ -44,6 +44,18 @@ examples:
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
mac@100 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x100 0x6>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
|
||||
mac@110 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x110 0x11>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
|
||||
calibration@4000 {
|
||||
reg = <0x4000 0x100>;
|
||||
};
|
||||
|
||||
@@ -49,7 +49,10 @@ properties:
|
||||
patternProperties:
|
||||
"@[0-9a-f]+(,[0-7])?$":
|
||||
type: object
|
||||
$ref: layouts/fixed-cell.yaml
|
||||
allOf:
|
||||
- $ref: layouts/fixed-cell.yaml
|
||||
- properties:
|
||||
compatible: false
|
||||
deprecated: true
|
||||
|
||||
additionalProperties: true
|
||||
|
||||
@@ -23,11 +23,13 @@ properties:
|
||||
- qcom,ipq8064-qfprom
|
||||
- qcom,ipq8074-qfprom
|
||||
- qcom,ipq9574-qfprom
|
||||
- qcom,msm8226-qfprom
|
||||
- qcom,msm8916-qfprom
|
||||
- qcom,msm8974-qfprom
|
||||
- qcom,msm8976-qfprom
|
||||
- qcom,msm8996-qfprom
|
||||
- qcom,msm8998-qfprom
|
||||
- qcom,qcm2290-qfprom
|
||||
- qcom,qcs404-qfprom
|
||||
- qcom,sc7180-qfprom
|
||||
- qcom,sc7280-qfprom
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/nvmem/qcom,sec-qfprom.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Technologies Inc, Secure QFPROM Efuse
|
||||
|
||||
maintainers:
|
||||
- Komal Bajaj <quic_kbajaj@quicinc.com>
|
||||
|
||||
description:
|
||||
For some of the Qualcomm SoC's, it is possible that the qfprom region is
|
||||
protected from non-secure access. In such situations, the OS have to use
|
||||
secure calls to read the region.
|
||||
|
||||
allOf:
|
||||
- $ref: nvmem.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- qcom,qdu1000-sec-qfprom
|
||||
- const: qcom,sec-qfprom
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: The secure qfprom corrected region.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
efuse@221c8000 {
|
||||
compatible = "qcom,qdu1000-sec-qfprom", "qcom,sec-qfprom";
|
||||
reg = <0 0x221c8000 0 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
multi_chan_ddr: multi-chan-ddr@12b {
|
||||
reg = <0x12b 0x1>;
|
||||
bits = <0 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/peci/nuvoton,npcm-peci.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Nuvoton PECI Bus
|
||||
|
||||
maintainers:
|
||||
- Tomer Maimon <tmaimon77@gmail.com>
|
||||
|
||||
allOf:
|
||||
- $ref: peci-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- nuvoton,npcm750-peci
|
||||
- nuvoton,npcm845-peci
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
description:
|
||||
Clock source for PECI controller. Should reference the APB clock.
|
||||
maxItems: 1
|
||||
|
||||
cmd-timeout-ms:
|
||||
minimum: 1
|
||||
maximum: 1000
|
||||
default: 1000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/nuvoton,npcm7xx-clock.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
peci-controller@f0100000 {
|
||||
compatible = "nuvoton,npcm750-peci";
|
||||
reg = <0xf0100000 0x200>;
|
||||
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk NPCM7XX_CLK_APB3>;
|
||||
cmd-timeout-ms = <1000>;
|
||||
};
|
||||
...
|
||||
@@ -0,0 +1,175 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
# Copyright 2023 Realtek Semiconductor Corporation
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/phy/realtek,usb2phy.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Realtek DHC SoCs USB 2.0 PHY
|
||||
|
||||
maintainers:
|
||||
- Stanley Chang <stanley_chang@realtek.com>
|
||||
|
||||
description: |
|
||||
Realtek USB 2.0 PHY support the digital home center (DHC) RTD series SoCs.
|
||||
The USB 2.0 PHY driver is designed to support the XHCI controller. The SoCs
|
||||
support multiple XHCI controllers. One PHY device node maps to one XHCI
|
||||
controller.
|
||||
|
||||
RTD1295/RTD1619 SoCs USB
|
||||
The USB architecture includes three XHCI controllers.
|
||||
Each XHCI maps to one USB 2.0 PHY and map one USB 3.0 PHY on some
|
||||
controllers.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
XHCI controller#2 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
|
||||
RTD1395 SoCs USB
|
||||
The USB architecture includes two XHCI controllers.
|
||||
The controller#0 has one USB 2.0 PHY. The controller#1 includes two USB 2.0
|
||||
PHY.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
|- phy#1
|
||||
|
||||
RTD1319/RTD1619b SoCs USB
|
||||
The USB architecture includes three XHCI controllers.
|
||||
Each XHCI maps to one USB 2.0 PHY and map one USB 3.0 PHY on controllers#2.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
XHCI controller#2 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
|
||||
RTD1319d SoCs USB
|
||||
The USB architecture includes three XHCI controllers.
|
||||
Each xhci maps to one USB 2.0 PHY and map one USB 3.0 PHY on controllers#0.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
XHCI controller#2 -- usb2phy -- phy#0
|
||||
|
||||
RTD1312c/RTD1315e SoCs USB
|
||||
The USB architecture includes three XHCI controllers.
|
||||
Each XHCI maps to one USB 2.0 PHY.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
XHCI controller#2 -- usb2phy -- phy#0
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- realtek,rtd1295-usb2phy
|
||||
- realtek,rtd1312c-usb2phy
|
||||
- realtek,rtd1315e-usb2phy
|
||||
- realtek,rtd1319-usb2phy
|
||||
- realtek,rtd1319d-usb2phy
|
||||
- realtek,rtd1395-usb2phy
|
||||
- realtek,rtd1395-usb2phy-2port
|
||||
- realtek,rtd1619-usb2phy
|
||||
- realtek,rtd1619b-usb2phy
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: PHY data registers
|
||||
- description: PHY control registers
|
||||
|
||||
"#phy-cells":
|
||||
const: 0
|
||||
|
||||
nvmem-cells:
|
||||
maxItems: 2
|
||||
description:
|
||||
Phandles to nvmem cell that contains the trimming data.
|
||||
If unspecified, default value is used.
|
||||
|
||||
nvmem-cell-names:
|
||||
items:
|
||||
- const: usb-dc-cal
|
||||
- const: usb-dc-dis
|
||||
description:
|
||||
The following names, which correspond to each nvmem-cells.
|
||||
usb-dc-cal is the driving level for each phy specified via efuse.
|
||||
usb-dc-dis is the disconnection level for each phy specified via efuse.
|
||||
|
||||
realtek,inverse-hstx-sync-clock:
|
||||
description:
|
||||
For one of the phys of RTD1619b SoC, the synchronous clock of the
|
||||
high-speed tx must be inverted.
|
||||
type: boolean
|
||||
|
||||
realtek,driving-level:
|
||||
description:
|
||||
Control the magnitude of High speed Dp/Dm output swing (mV).
|
||||
For a different board or port, the original magnitude maybe not meet
|
||||
the specification. In this situation we can adjust the value to meet
|
||||
the specification.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
default: 8
|
||||
minimum: 0
|
||||
maximum: 31
|
||||
|
||||
realtek,driving-level-compensate:
|
||||
description:
|
||||
For RTD1315e SoC, the driving level can be adjusted by reading the
|
||||
efuse table. This property provides drive compensation.
|
||||
If the magnitude of High speed Dp/Dm output swing still not meet the
|
||||
specification, then we can set this value to meet the specification.
|
||||
$ref: /schemas/types.yaml#/definitions/int32
|
||||
default: 0
|
||||
minimum: -8
|
||||
maximum: 8
|
||||
|
||||
realtek,disconnection-compensate:
|
||||
description:
|
||||
This adjusts the disconnection level compensation for the different
|
||||
boards with different disconnection level.
|
||||
$ref: /schemas/types.yaml#/definitions/int32
|
||||
default: 0
|
||||
minimum: -8
|
||||
maximum: 8
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#phy-cells"
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
not:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- realtek,rtd1619b-usb2phy
|
||||
then:
|
||||
properties:
|
||||
realtek,inverse-hstx-sync-clock: false
|
||||
|
||||
- if:
|
||||
not:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- realtek,rtd1315e-usb2phy
|
||||
then:
|
||||
properties:
|
||||
realtek,driving-level-compensate: false
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
usb-phy@13214 {
|
||||
compatible = "realtek,rtd1619b-usb2phy";
|
||||
reg = <0x13214 0x4>, <0x28280 0x4>;
|
||||
#phy-cells = <0>;
|
||||
nvmem-cells = <&otp_usb_port0_dc_cal>, <&otp_usb_port0_dc_dis>;
|
||||
nvmem-cell-names = "usb-dc-cal", "usb-dc-dis";
|
||||
|
||||
realtek,inverse-hstx-sync-clock;
|
||||
realtek,driving-level = <0xa>;
|
||||
realtek,disconnection-compensate = <(-1)>;
|
||||
};
|
||||
@@ -0,0 +1,107 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
# Copyright 2023 Realtek Semiconductor Corporation
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/phy/realtek,usb3phy.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Realtek DHC SoCs USB 3.0 PHY
|
||||
|
||||
maintainers:
|
||||
- Stanley Chang <stanley_chang@realtek.com>
|
||||
|
||||
description: |
|
||||
Realtek USB 3.0 PHY support the digital home center (DHC) RTD series SoCs.
|
||||
The USB 3.0 PHY driver is designed to support the XHCI controller. The SoCs
|
||||
support multiple XHCI controllers. One PHY device node maps to one XHCI
|
||||
controller.
|
||||
|
||||
RTD1295/RTD1619 SoCs USB
|
||||
The USB architecture includes three XHCI controllers.
|
||||
Each XHCI maps to one USB 2.0 PHY and map one USB 3.0 PHY on some
|
||||
controllers.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
XHCI controller#2 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
|
||||
RTD1319/RTD1619b SoCs USB
|
||||
The USB architecture includes three XHCI controllers.
|
||||
Each XHCI maps to one USB 2.0 PHY and map one USB 3.0 PHY on controllers#2.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
XHCI controller#2 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
|
||||
RTD1319d SoCs USB
|
||||
The USB architecture includes three XHCI controllers.
|
||||
Each xhci maps to one USB 2.0 PHY and map one USB 3.0 PHY on controllers#0.
|
||||
XHCI controller#0 -- usb2phy -- phy#0
|
||||
|- usb3phy -- phy#0
|
||||
XHCI controller#1 -- usb2phy -- phy#0
|
||||
XHCI controller#2 -- usb2phy -- phy#0
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- realtek,rtd1295-usb3phy
|
||||
- realtek,rtd1319-usb3phy
|
||||
- realtek,rtd1319d-usb3phy
|
||||
- realtek,rtd1619-usb3phy
|
||||
- realtek,rtd1619b-usb3phy
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
"#phy-cells":
|
||||
const: 0
|
||||
|
||||
nvmem-cells:
|
||||
maxItems: 1
|
||||
description: A phandle to the tx lfps swing trim data provided by
|
||||
a nvmem device, if unspecified, default values shall be used.
|
||||
|
||||
nvmem-cell-names:
|
||||
items:
|
||||
- const: usb_u3_tx_lfps_swing_trim
|
||||
|
||||
realtek,amplitude-control-coarse-tuning:
|
||||
description:
|
||||
This adjusts the signal amplitude for normal operation and beacon LFPS.
|
||||
This value is a parameter for coarse tuning.
|
||||
For different boards, if the default value is inappropriate, this
|
||||
property can be assigned to adjust.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
default: 255
|
||||
minimum: 0
|
||||
maximum: 255
|
||||
|
||||
realtek,amplitude-control-fine-tuning:
|
||||
description:
|
||||
This adjusts the signal amplitude for normal operation and beacon LFPS.
|
||||
This value is used for fine-tuning parameters.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
default: 65535
|
||||
minimum: 0
|
||||
maximum: 65535
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#phy-cells"
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
usb-phy@13e10 {
|
||||
compatible = "realtek,rtd1319d-usb3phy";
|
||||
reg = <0x13e10 0x4>;
|
||||
#phy-cells = <0>;
|
||||
|
||||
nvmem-cells = <&otp_usb_u3_tx_lfps_swing_trim>;
|
||||
nvmem-cell-names = "usb_u3_tx_lfps_swing_trim";
|
||||
|
||||
realtek,amplitude-control-coarse-tuning = <0x77>;
|
||||
};
|
||||
@@ -33,6 +33,7 @@ properties:
|
||||
- amlogic,meson8b-uart
|
||||
- amlogic,meson-gx-uart
|
||||
- amlogic,meson-s4-uart
|
||||
- amlogic,meson-a1-uart
|
||||
- const: amlogic,meson-ao-uart
|
||||
- description: Always-on power domain UART controller on G12A SoCs
|
||||
items:
|
||||
@@ -46,10 +47,15 @@ properties:
|
||||
- amlogic,meson8b-uart
|
||||
- amlogic,meson-gx-uart
|
||||
- amlogic,meson-s4-uart
|
||||
- amlogic,meson-a1-uart
|
||||
- description: Everything-Else power domain UART controller on G12A SoCs
|
||||
items:
|
||||
- const: amlogic,meson-g12a-uart
|
||||
- const: amlogic,meson-gx-uart
|
||||
- description: UART controller on S4 compatible SoCs
|
||||
items:
|
||||
- const: amlogic,t7-uart
|
||||
- const: amlogic,meson-s4-uart
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -25,9 +25,13 @@ properties:
|
||||
- fsl,imxrt1050-lpuart
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx93-lpuart
|
||||
- fsl,imx8ulp-lpuart
|
||||
- const: fsl,imx7ulp-lpuart
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx93-lpuart
|
||||
- const: fsl,imx8ulp-lpuart
|
||||
- const: fsl,imx7ulp-lpuart
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx8qm-lpuart
|
||||
|
||||
@@ -23,6 +23,9 @@ Optional properties:
|
||||
1 = active low.
|
||||
- irda-mode-ports: An array that lists the indices of the port that
|
||||
should operate in IrDA mode.
|
||||
- nxp,modem-control-line-ports: An array that lists the indices of the port that
|
||||
should have shared GPIO lines configured as
|
||||
modem control lines.
|
||||
|
||||
Example:
|
||||
sc16is750: sc16is750@51 {
|
||||
@@ -35,6 +38,26 @@ Example:
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
sc16is752: sc16is752@53 {
|
||||
compatible = "nxp,sc16is752";
|
||||
reg = <0x53>;
|
||||
clocks = <&clk20m>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
||||
nxp,modem-control-line-ports = <1>; /* Port 1 as modem control lines */
|
||||
gpio-controller; /* Port 0 as GPIOs */
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
sc16is752: sc16is752@54 {
|
||||
compatible = "nxp,sc16is752";
|
||||
reg = <0x54>;
|
||||
clocks = <&clk20m>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
||||
nxp,modem-control-line-ports = <0 1>; /* Ports 0 and 1 as modem control lines */
|
||||
};
|
||||
|
||||
* spi as bus
|
||||
|
||||
Required properties:
|
||||
@@ -59,6 +82,9 @@ Optional properties:
|
||||
1 = active low.
|
||||
- irda-mode-ports: An array that lists the indices of the port that
|
||||
should operate in IrDA mode.
|
||||
- nxp,modem-control-line-ports: An array that lists the indices of the port that
|
||||
should have shared GPIO lines configured as
|
||||
modem control lines.
|
||||
|
||||
Example:
|
||||
sc16is750: sc16is750@0 {
|
||||
@@ -70,3 +96,23 @@ Example:
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
sc16is752: sc16is752@1 {
|
||||
compatible = "nxp,sc16is752";
|
||||
reg = <1>;
|
||||
clocks = <&clk20m>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
||||
nxp,modem-control-line-ports = <1>; /* Port 1 as modem control lines */
|
||||
gpio-controller; /* Port 0 as GPIOs */
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
sc16is752: sc16is752@2 {
|
||||
compatible = "nxp,sc16is752";
|
||||
reg = <2>;
|
||||
clocks = <&clk20m>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
||||
nxp,modem-control-line-ports = <0 1>; /* Ports 0 and 1 as modem control lines */
|
||||
};
|
||||
|
||||
@@ -117,7 +117,6 @@ properties:
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ properties:
|
||||
- fsl,imx23-usb
|
||||
- fsl,imx25-usb
|
||||
- fsl,imx28-usb
|
||||
- fsl,imx35-usb
|
||||
- fsl,imx50-usb
|
||||
- fsl,imx51-usb
|
||||
- fsl,imx53-usb
|
||||
@@ -76,11 +77,11 @@ properties:
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
maxItems: 3
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
maxItems: 3
|
||||
|
||||
dr_mode: true
|
||||
|
||||
@@ -292,6 +293,18 @@ properties:
|
||||
minimum: 0x0
|
||||
maximum: 0xf
|
||||
|
||||
fsl,picophy-rise-fall-time-adjust:
|
||||
description:
|
||||
HS Transmitter Rise/Fall Time Adjustment. Adjust the rise/fall times
|
||||
of the high-speed transmitter waveform. It has no unit. The rise/fall
|
||||
time will be increased or decreased by a certain percentage relative
|
||||
to design default time. (0:-10%; 1:design default; 2:+15%; 3:+20%)
|
||||
Details can refer to TXRISETUNE0 bit of USBNC_n_PHY_CFG1.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
minimum: 0
|
||||
maximum: 3
|
||||
default: 1
|
||||
|
||||
usb-phy:
|
||||
description: phandle for the PHY device. Use "phys" instead.
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/usb/cypress,hx3.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Cypress HX3 USB 3.0 hub controller family
|
||||
|
||||
maintainers:
|
||||
- Benjamin Bara <benjamin.bara@skidata.com>
|
||||
|
||||
allOf:
|
||||
- $ref: usb-device.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- usb4b4,6504
|
||||
- usb4b4,6506
|
||||
|
||||
reg: true
|
||||
|
||||
reset-gpios:
|
||||
items:
|
||||
- description: GPIO specifier for RESETN pin.
|
||||
|
||||
vdd-supply:
|
||||
description:
|
||||
1V2 power supply (VDD_EFUSE, AVDD12, DVDD12).
|
||||
|
||||
vdd2-supply:
|
||||
description:
|
||||
3V3 power supply (AVDD33, VDD_IO).
|
||||
|
||||
peer-hub:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description:
|
||||
phandle to the peer hub on the controller.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- peer-hub
|
||||
- vdd-supply
|
||||
- vdd2-supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
usb {
|
||||
dr_mode = "host";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* 2.0 hub on port 1 */
|
||||
hub_2_0: hub@1 {
|
||||
compatible = "usb4b4,6504";
|
||||
reg = <1>;
|
||||
peer-hub = <&hub_3_0>;
|
||||
reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
|
||||
vdd-supply = <®_1v2_usb>;
|
||||
vdd2-supply = <®_3v3_usb>;
|
||||
};
|
||||
|
||||
/* 3.0 hub on port 2 */
|
||||
hub_3_0: hub@2 {
|
||||
compatible = "usb4b4,6506";
|
||||
reg = <2>;
|
||||
peer-hub = <&hub_2_0>;
|
||||
reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
|
||||
vdd-supply = <®_1v2_usb>;
|
||||
vdd2-supply = <®_3v3_usb>;
|
||||
};
|
||||
};
|
||||
@@ -68,6 +68,7 @@ properties:
|
||||
- const: generic-ehci
|
||||
- items:
|
||||
- enum:
|
||||
- atmel,at91sam9g45-ehci
|
||||
- cavium,octeon-6335-ehci
|
||||
- ibm,usb-ehci-440epx
|
||||
- ibm,usb-ehci-460ex
|
||||
|
||||
@@ -17,6 +17,7 @@ properties:
|
||||
enum:
|
||||
- usb5e3,608
|
||||
- usb5e3,610
|
||||
- usb5e3,620
|
||||
|
||||
reg: true
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ properties:
|
||||
items:
|
||||
- enum:
|
||||
- qcom,ipq4019-dwc3
|
||||
- qcom,ipq5332-dwc3
|
||||
- qcom,ipq6018-dwc3
|
||||
- qcom,ipq8064-dwc3
|
||||
- qcom,ipq8074-dwc3
|
||||
@@ -82,15 +83,6 @@ properties:
|
||||
minItems: 1
|
||||
maxItems: 9
|
||||
|
||||
assigned-clocks:
|
||||
items:
|
||||
- description: Phandle and clock specifier of MOCK_UTMI_CLK.
|
||||
- description: Phandle and clock specifoer of MASTER_CLK.
|
||||
|
||||
assigned-clock-rates:
|
||||
items:
|
||||
- description: Must be 19.2MHz (19200000).
|
||||
- description: Must be >= 60 MHz in HS mode, >= 125 MHz in SS mode.
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
@@ -246,6 +238,7 @@ allOf:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,ipq5332-dwc3
|
||||
- qcom,msm8994-dwc3
|
||||
- qcom,qcs404-dwc3
|
||||
then:
|
||||
@@ -290,15 +283,23 @@ allOf:
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 6
|
||||
minItems: 5
|
||||
maxItems: 6
|
||||
clock-names:
|
||||
items:
|
||||
- const: cfg_noc
|
||||
- const: core
|
||||
- const: iface
|
||||
- const: sleep
|
||||
- const: mock_utmi
|
||||
- const: bus
|
||||
oneOf:
|
||||
- items:
|
||||
- const: cfg_noc
|
||||
- const: core
|
||||
- const: iface
|
||||
- const: sleep
|
||||
- const: mock_utmi
|
||||
- const: bus
|
||||
- items:
|
||||
- const: cfg_noc
|
||||
- const: core
|
||||
- const: sleep
|
||||
- const: mock_utmi
|
||||
- const: bus
|
||||
|
||||
- if:
|
||||
properties:
|
||||
@@ -410,6 +411,7 @@ allOf:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,ipq5332-dwc3
|
||||
- qcom,sdm660-dwc3
|
||||
then:
|
||||
properties:
|
||||
|
||||
@@ -15,6 +15,7 @@ properties:
|
||||
- samsung,exynos5250-dwusb3
|
||||
- samsung,exynos5433-dwusb3
|
||||
- samsung,exynos7-dwusb3
|
||||
- samsung,exynos850-dwusb3
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
@@ -72,7 +73,7 @@ allOf:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: samsung,exynos54333-dwusb3
|
||||
const: samsung,exynos5433-dwusb3
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
@@ -82,8 +83,8 @@ allOf:
|
||||
items:
|
||||
- const: aclk
|
||||
- const: susp_clk
|
||||
- const: pipe_pclk
|
||||
- const: phyclk
|
||||
- const: pipe_pclk
|
||||
|
||||
- if:
|
||||
properties:
|
||||
@@ -101,6 +102,21 @@ allOf:
|
||||
- const: usbdrd30_susp_clk
|
||||
- const: usbdrd30_axius_clk
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: samsung,exynos850-dwusb3
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
clock-names:
|
||||
items:
|
||||
- const: bus_early
|
||||
- const: ref
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
|
||||
@@ -113,3 +113,28 @@ through dot to generate diagrams in many graphical formats::
|
||||
|
||||
$ cat /sys/kernel/debug/interconnect/interconnect_graph | \
|
||||
dot -Tsvg > interconnect_graph.svg
|
||||
|
||||
The ``test-client`` directory provides interfaces for issuing BW requests to
|
||||
any arbitrary path. Note that for safety reasons, this feature is disabled by
|
||||
default without a Kconfig to enable it. Enabling it requires code changes to
|
||||
``#define INTERCONNECT_ALLOW_WRITE_DEBUGFS``. Example usage::
|
||||
|
||||
cd /sys/kernel/debug/interconnect/test-client/
|
||||
|
||||
# Configure node endpoints for the path from CPU to DDR on
|
||||
# qcom/sm8550.
|
||||
echo chm_apps > src_node
|
||||
echo ebi > dst_node
|
||||
|
||||
# Get path between src_node and dst_node. This is only
|
||||
# necessary after updating the node endpoints.
|
||||
echo 1 > get
|
||||
|
||||
# Set desired BW to 1GBps avg and 2GBps peak.
|
||||
echo 1000000 > avg_bw
|
||||
echo 2000000 > peak_bw
|
||||
|
||||
# Vote for avg_bw and peak_bw on the latest path from "get".
|
||||
# Voting for multiple paths is possible by repeating this
|
||||
# process for different nodes endpoints.
|
||||
echo 1 > commit
|
||||
|
||||
@@ -15,10 +15,13 @@ Flip Buffer Management
|
||||
======================
|
||||
|
||||
.. kernel-doc:: drivers/tty/tty_buffer.c
|
||||
:identifiers: tty_prepare_flip_string tty_insert_flip_string_fixed_flag
|
||||
tty_insert_flip_string_flags __tty_insert_flip_char
|
||||
:identifiers: tty_prepare_flip_string
|
||||
tty_flip_buffer_push tty_ldisc_receive_buf
|
||||
|
||||
.. kernel-doc:: include/linux/tty_flip.h
|
||||
:identifiers: tty_insert_flip_string_fixed_flag tty_insert_flip_string_flags
|
||||
tty_insert_flip_char
|
||||
|
||||
----
|
||||
|
||||
Other Functions
|
||||
|
||||
@@ -420,6 +420,12 @@ USBDEVFS_CONNECTINFO
|
||||
know the devnum value already, it's the DDD value of the device file
|
||||
name.
|
||||
|
||||
USBDEVFS_GET_SPEED
|
||||
Returns the speed of the device. The speed is returned as a
|
||||
nummerical value in accordance with enum usb_device_speed
|
||||
|
||||
File modification time is not updated by this request.
|
||||
|
||||
USBDEVFS_GETDRIVER
|
||||
Returns the name of the kernel driver bound to a given interface (a
|
||||
string). Parameter is a pointer to this structure, which is
|
||||
@@ -771,8 +777,7 @@ Speed may be:
|
||||
======= ======================================================
|
||||
1.5 Mbit/s for low speed USB
|
||||
12 Mbit/s for full speed USB
|
||||
480 Mbit/s for high speed USB (added for USB 2.0);
|
||||
also used for Wireless USB, which has no fixed speed
|
||||
480 Mbit/s for high speed USB (added for USB 2.0)
|
||||
5000 Mbit/s for SuperSpeed USB (added for USB 3.0)
|
||||
======= ======================================================
|
||||
|
||||
|
||||
@@ -6,30 +6,29 @@ Everything you ever wanted to know about Linux -stable releases
|
||||
Rules on what kind of patches are accepted, and which ones are not, into the
|
||||
"-stable" tree:
|
||||
|
||||
- It or an equivalent fix must already exist in Linus' tree (upstream).
|
||||
- It must be obviously correct and tested.
|
||||
- It cannot be bigger than 100 lines, with context.
|
||||
- It must fix only one thing.
|
||||
- It must fix a real bug that bothers people (not a, "This could be a
|
||||
problem..." type thing).
|
||||
- It must fix a problem that causes a build error (but not for things
|
||||
marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
|
||||
security issue, or some "oh, that's not good" issue. In short, something
|
||||
critical.
|
||||
- Serious issues as reported by a user of a distribution kernel may also
|
||||
be considered if they fix a notable performance or interactivity issue.
|
||||
As these fixes are not as obvious and have a higher risk of a subtle
|
||||
regression they should only be submitted by a distribution kernel
|
||||
maintainer and include an addendum linking to a bugzilla entry if it
|
||||
exists and additional information on the user-visible impact.
|
||||
- New device IDs and quirks are also accepted.
|
||||
- No "theoretical race condition" issues, unless an explanation of how the
|
||||
race can be exploited is also provided.
|
||||
- It cannot contain any "trivial" fixes in it (spelling changes,
|
||||
whitespace cleanups, etc).
|
||||
- It must follow the
|
||||
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
|
||||
rules.
|
||||
- It or an equivalent fix must already exist in Linus' tree (upstream).
|
||||
- It must either fix a real bug that bothers people or just add a device ID.
|
||||
To elaborate on the former:
|
||||
|
||||
- It fixes a problem like an oops, a hang, data corruption, a real security
|
||||
issue, a hardware quirk, a build error (but not for things marked
|
||||
CONFIG_BROKEN), or some "oh, that's not good" issue.
|
||||
- Serious issues as reported by a user of a distribution kernel may also
|
||||
be considered if they fix a notable performance or interactivity issue.
|
||||
As these fixes are not as obvious and have a higher risk of a subtle
|
||||
regression they should only be submitted by a distribution kernel
|
||||
maintainer and include an addendum linking to a bugzilla entry if it
|
||||
exists and additional information on the user-visible impact.
|
||||
- No "This could be a problem..." type of things like a "theoretical race
|
||||
condition", unless an explanation of how the bug can be exploited is also
|
||||
provided.
|
||||
- No "trivial" fixes without benefit for users (spelling changes, whitespace
|
||||
cleanups, etc).
|
||||
|
||||
|
||||
Procedure for submitting patches to the -stable tree
|
||||
@@ -41,32 +40,106 @@ Procedure for submitting patches to the -stable tree
|
||||
process but should follow the procedures in
|
||||
:ref:`Documentation/process/security-bugs.rst <securitybugs>`.
|
||||
|
||||
For all other submissions, choose one of the following procedures
|
||||
-----------------------------------------------------------------
|
||||
There are three options to submit a change to -stable trees:
|
||||
|
||||
1. Add a 'stable tag' to the description of a patch you then submit for
|
||||
mainline inclusion.
|
||||
2. Ask the stable team to pick up a patch already mainlined.
|
||||
3. Submit a patch to the stable team that is equivalent to a change already
|
||||
mainlined.
|
||||
|
||||
The sections below describe each of the options in more detail.
|
||||
|
||||
:ref:`option_1` is **strongly** preferred, it is the easiest and most common.
|
||||
:ref:`option_2` is mainly meant for changes where backporting was not considered
|
||||
at the time of submission. :ref:`option_3` is an alternative to the two earlier
|
||||
options for cases where a mainlined patch needs adjustments to apply in older
|
||||
series (for example due to API changes).
|
||||
|
||||
When using option 2 or 3 you can ask for your change to be included in specific
|
||||
stable series. When doing so, ensure the fix or an equivalent is applicable,
|
||||
submitted, or already present in all newer stable trees still supported. This is
|
||||
meant to prevent regressions that users might later encounter on updating, if
|
||||
e.g. a fix merged for 5.19-rc1 would be backported to 5.10.y, but not to 5.15.y.
|
||||
|
||||
.. _option_1:
|
||||
|
||||
Option 1
|
||||
********
|
||||
|
||||
To have the patch automatically included in the stable tree, add the tag
|
||||
To have a patch you submit for mainline inclusion later automatically picked up
|
||||
for stable trees, add the tag
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
|
||||
in the sign-off area. Once the patch is merged it will be applied to
|
||||
the stable tree without anything else needing to be done by the author
|
||||
or subsystem maintainer.
|
||||
in the sign-off area. Once the patch is mainlined it will be applied to the
|
||||
stable tree without anything else needing to be done by the author or
|
||||
subsystem maintainer.
|
||||
|
||||
To sent additional instructions to the stable team, use a shell-style inline
|
||||
comment:
|
||||
|
||||
* To specify any additional patch prerequisites for cherry picking use the
|
||||
following format in the sign-off area:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x: fd21073: sched: Fix affinity logic
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
|
||||
The tag sequence has the meaning of:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
git cherry-pick a1f84a3
|
||||
git cherry-pick 1b9508f
|
||||
git cherry-pick fd21073
|
||||
git cherry-pick <this commit>
|
||||
|
||||
* For patches that may have kernel version prerequisites specify them using
|
||||
the following format in the sign-off area:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x
|
||||
|
||||
The tag has the meaning of:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
git cherry-pick <this commit>
|
||||
|
||||
For each "-stable" tree starting with the specified version.
|
||||
|
||||
Note, such tagging is unnecessary if the stable team can derive the
|
||||
appropriate versions from Fixes: tags.
|
||||
|
||||
* To delay pick up of patches, use the following format:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Cc: <stable@vger.kernel.org> # after 4 weeks in mainline
|
||||
|
||||
* For any other requests, just add a note to the stable tag. This for example
|
||||
can be used to point out known problems:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Cc: <stable@vger.kernel.org> # see patch description, needs adjustments for <= 6.3
|
||||
|
||||
.. _option_2:
|
||||
|
||||
Option 2
|
||||
********
|
||||
|
||||
After the patch has been merged to Linus' tree, send an email to
|
||||
If the patch already has been merged to mainline, send an email to
|
||||
stable@vger.kernel.org containing the subject of the patch, the commit ID,
|
||||
why you think it should be applied, and what kernel version you wish it to
|
||||
why you think it should be applied, and what kernel versions you wish it to
|
||||
be applied to.
|
||||
|
||||
.. _option_3:
|
||||
@@ -75,23 +148,9 @@ Option 3
|
||||
********
|
||||
|
||||
Send the patch, after verifying that it follows the above rules, to
|
||||
stable@vger.kernel.org. You must note the upstream commit ID in the
|
||||
changelog of your submission, as well as the kernel version you wish
|
||||
it to be applied to.
|
||||
|
||||
:ref:`option_1` is **strongly** preferred, is the easiest and most common.
|
||||
:ref:`option_2` and :ref:`option_3` are more useful if the patch isn't deemed
|
||||
worthy at the time it is applied to a public git tree (for instance, because
|
||||
it deserves more regression testing first). :ref:`option_3` is especially
|
||||
useful if the original upstream patch needs to be backported (for example
|
||||
the backport needs some special handling due to e.g. API changes).
|
||||
|
||||
Note that for :ref:`option_3`, if the patch deviates from the original
|
||||
upstream patch (for example because it had to be backported) this must be very
|
||||
clearly documented and justified in the patch description.
|
||||
|
||||
The upstream commit ID must be specified with a separate line above the commit
|
||||
text, like this:
|
||||
stable@vger.kernel.org and mention the kernel versions you wish it to be applied
|
||||
to. When doing so, you must note the upstream commit ID in the changelog of your
|
||||
submission with a separate line above the commit text, like this:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
@@ -103,49 +162,20 @@ or alternatively:
|
||||
|
||||
[ Upstream commit <sha1> ]
|
||||
|
||||
Additionally, some patches submitted via :ref:`option_1` may have additional
|
||||
patch prerequisites which can be cherry-picked. This can be specified in the
|
||||
following format in the sign-off area:
|
||||
If the submitted patch deviates from the original upstream patch (for example
|
||||
because it had to be adjusted for the older API), this must be very clearly
|
||||
documented and justified in the patch description.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x: fd21073: sched: Fix affinity logic
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Following the submission
|
||||
------------------------
|
||||
|
||||
The tag sequence has the meaning of:
|
||||
The sender will receive an ACK when the patch has been accepted into the
|
||||
queue, or a NAK if the patch is rejected. This response might take a few
|
||||
days, according to the schedules of the stable team members.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
git cherry-pick a1f84a3
|
||||
git cherry-pick 1b9508f
|
||||
git cherry-pick fd21073
|
||||
git cherry-pick <this commit>
|
||||
|
||||
Also, some patches may have kernel version prerequisites. This can be
|
||||
specified in the following format in the sign-off area:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Cc: <stable@vger.kernel.org> # 3.3.x
|
||||
|
||||
The tag has the meaning of:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
git cherry-pick <this commit>
|
||||
|
||||
For each "-stable" tree starting with the specified version.
|
||||
|
||||
Following the submission:
|
||||
|
||||
- The sender will receive an ACK when the patch has been accepted into the
|
||||
queue, or a NAK if the patch is rejected. This response might take a few
|
||||
days, according to the developer's schedules.
|
||||
- If accepted, the patch will be added to the -stable queue, for review by
|
||||
other developers and by the relevant subsystem maintainer.
|
||||
If accepted, the patch will be added to the -stable queue, for review by other
|
||||
developers and by the relevant subsystem maintainer.
|
||||
|
||||
|
||||
Review cycle
|
||||
@@ -174,6 +204,7 @@ Review cycle
|
||||
security kernel team, and not go through the normal review cycle.
|
||||
Contact the kernel security team for more details on this procedure.
|
||||
|
||||
|
||||
Trees
|
||||
-----
|
||||
|
||||
|
||||
@@ -33,12 +33,9 @@ Remove the lock down::
|
||||
|
||||
$ echo 1 > /sys/bus/usb/devices/usbX/authorized_default
|
||||
|
||||
By default, Wired USB devices are authorized by default to
|
||||
connect. Wireless USB hosts deauthorize by default all new connected
|
||||
devices (this is so because we need to do an authentication phase
|
||||
before authorizing). Writing "2" to the authorized_default attribute
|
||||
causes kernel to only authorize by default devices connected to internal
|
||||
USB ports.
|
||||
By default, all USB devices are authorized. Writing "2" to the
|
||||
authorized_default attribute causes the kernel to authorize by default
|
||||
only devices connected to internal USB ports.
|
||||
|
||||
|
||||
Example system lockdown (lame)
|
||||
|
||||
@@ -27,6 +27,7 @@ provided by gadgets.
|
||||
18. UVC function
|
||||
19. PRINTER function
|
||||
20. UAC1 function (new API)
|
||||
21. MIDI2 function
|
||||
|
||||
|
||||
1. ACM function
|
||||
@@ -965,3 +966,156 @@ e.g.::
|
||||
|
||||
$ arecord -f dat -t wav -D hw:CARD=UAC1Gadget,DEV=0 | \
|
||||
aplay -D default:CARD=OdroidU3
|
||||
|
||||
|
||||
21. MIDI2 function
|
||||
==================
|
||||
|
||||
The function is provided by usb_f_midi2.ko module.
|
||||
It will create a virtual ALSA card containing a UMP rawmidi device
|
||||
where the UMP packet is looped back. In addition, a legacy rawmidi
|
||||
device is created. The UMP rawmidi is bound with ALSA sequencer
|
||||
clients, too.
|
||||
|
||||
Function-specific configfs interface
|
||||
------------------------------------
|
||||
|
||||
The function name to use when creating the function directory is "midi2".
|
||||
The midi2 function provides these attributes in its function directory
|
||||
as the card top-level information:
|
||||
|
||||
============= =================================================
|
||||
process_ump Bool flag to process UMP Stream messages (0 or 1)
|
||||
static_block Bool flag for static blocks (0 or 1)
|
||||
iface_name Optional interface name string
|
||||
============= =================================================
|
||||
|
||||
The directory contains a subdirectory "ep.0", and this provides the
|
||||
attributes for a UMP Endpoint (which is a pair of USB MIDI Endpoints):
|
||||
|
||||
============= =================================================
|
||||
protocol_caps MIDI protocol capabilities;
|
||||
1: MIDI 1.0, 2: MIDI 2.0, or 3: both protocols
|
||||
protocol Default MIDI protocol (either 1 or 2)
|
||||
ep_name UMP Endpoint name string
|
||||
product_id Product ID string
|
||||
manufacturer Manufacture ID number (24 bit)
|
||||
family Device family ID number (16 bit)
|
||||
model Device model ID number (16 bit)
|
||||
sw_revision Software revision (32 bit)
|
||||
============= =================================================
|
||||
|
||||
Each Endpoint subdirectory contains a subdirectory "block.0", which
|
||||
represents the Function Block for Block 0 information.
|
||||
Its attributes are:
|
||||
|
||||
================= ===============================================
|
||||
name Function Block name string
|
||||
direction Direction of this FB
|
||||
1: input, 2: output, or 3: bidirectional
|
||||
first_group The first UMP Group number (0-15)
|
||||
num_groups The number of groups in this FB (1-16)
|
||||
midi1_first_group The first UMP Group number for MIDI 1.0 (0-15)
|
||||
midi1_num_groups The number of groups for MIDI 1.0 (0-16)
|
||||
ui_hint UI-hint of this FB
|
||||
0: unknown, 1: receiver, 2: sender, 3: both
|
||||
midi_ci_verison Supported MIDI-CI version number (8 bit)
|
||||
is_midi1 Legacy MIDI 1.0 device (0-2)
|
||||
0: MIDI 2.0 device,
|
||||
1: MIDI 1.0 without restriction, or
|
||||
2: MIDI 1.0 with low speed
|
||||
sysex8_streams Max number of SysEx8 streams (8 bit)
|
||||
active Bool flag for FB activity (0 or 1)
|
||||
================= ===============================================
|
||||
|
||||
If multiple Function Blocks are required, you can add more Function
|
||||
Blocks by creating subdirectories "block.<num>" with the corresponding
|
||||
Function Block number (1, 2, ....). The FB subdirectories can be
|
||||
dynamically removed, too. Note that the Function Block numbers must be
|
||||
continuous.
|
||||
|
||||
Similarly, if you multiple UMP Endpoints are required, you can add
|
||||
more Endpoints by creating subdirectories "ep.<num>". The number must
|
||||
be continuous.
|
||||
|
||||
For emulating the old MIDI 2.0 device without UMP v1.1 support, pass 0
|
||||
to `process_ump` flag. Then the whole UMP v1.1 requests are ignored.
|
||||
|
||||
Testing the MIDI2 function
|
||||
--------------------------
|
||||
|
||||
On the device: run the gadget, and running::
|
||||
|
||||
$ cat /proc/asound/cards
|
||||
|
||||
will show a new sound card containing a MIDI2 device.
|
||||
|
||||
OTOH, on the host::
|
||||
|
||||
$ cat /proc/asound/cards
|
||||
|
||||
will show a new sound card containing either MIDI1 or MIDI2 device,
|
||||
depending on the USB audio driver configuration.
|
||||
|
||||
On both, when ALSA sequencer is enabled on the host, you can find the
|
||||
UMP MIDI client such as "MIDI 2.0 Gadget".
|
||||
|
||||
As the driver simply loops back the data, there is no need for a real
|
||||
device just for testing.
|
||||
|
||||
For testing a MIDI input from the gadget to the host (e.g. emulating a
|
||||
MIDI keyboard), you can send a MIDI stream like the following.
|
||||
|
||||
On the gadget::
|
||||
|
||||
$ aconnect -o
|
||||
....
|
||||
client 20: 'MIDI 2.0 Gadget' [type=kernel,card=1]
|
||||
0 'MIDI 2.0 '
|
||||
1 'Group 1 (MIDI 2.0 Gadget I/O)'
|
||||
$ aplaymidi -p 20:1 to_host.mid
|
||||
|
||||
On the host::
|
||||
|
||||
$ aconnect -i
|
||||
....
|
||||
client 24: 'MIDI 2.0 Gadget' [type=kernel,card=2]
|
||||
0 'MIDI 2.0 '
|
||||
1 'Group 1 (MIDI 2.0 Gadget I/O)'
|
||||
$ arecordmidi -p 24:1 from_gadget.mid
|
||||
|
||||
If you have a UMP-capable application, you can use the UMP port to
|
||||
send/receive the raw UMP packets, too. For example, aseqdump program
|
||||
with UMP support can receive from UMP port. On the host::
|
||||
|
||||
$ aseqdump -u 2 -p 24:1
|
||||
Waiting for data. Press Ctrl+C to end.
|
||||
Source Group Event Ch Data
|
||||
24:1 Group 0, Program change 0, program 0, Bank select 0:0
|
||||
24:1 Group 0, Channel pressure 0, value 0x80000000
|
||||
|
||||
For testing a MIDI output to the gadget to the host (e.g. emulating a
|
||||
MIDI synth), it'll be just other way round.
|
||||
|
||||
On the gadget::
|
||||
|
||||
$ arecordmidi -p 20:1 from_host.mid
|
||||
|
||||
On the host::
|
||||
|
||||
$ aplaymidi -p 24:1 to_gadget.mid
|
||||
|
||||
The access to MIDI 1.0 on altset 0 on the host is supported, and it's
|
||||
translated from/to UMP packets on the gadget. It's bound to only
|
||||
Function Block 0.
|
||||
|
||||
The current operation mode can be observed in ALSA control element
|
||||
"Operation Mode" for SND_CTL_IFACE_RAWMIDI. For example::
|
||||
|
||||
$ amixer -c1 contents
|
||||
numid=1,iface=RAWMIDI,name='Operation Mode'
|
||||
; type=INTEGER,access=r--v----,values=1,min=0,max=2,step=0
|
||||
: values=2
|
||||
|
||||
where 0 = unused, 1 = MIDI 1.0 (altset 0), 2 = MIDI 2.0 (altset 1).
|
||||
The example above shows it's running in 2, i.e. MIDI 2.0.
|
||||
|
||||
@@ -14014,12 +14014,14 @@ F: drivers/nvmem/microchip-otpc.c
|
||||
F: include/dt-bindings/nvmem/microchip,sama7g5-otpc.h
|
||||
|
||||
MICROCHIP PCI1XXXX GP DRIVER
|
||||
M: Vaibhaav Ram T.L <vaibhaavram.tl@microchip.com>
|
||||
M: Kumaravel Thiagarajan <kumaravel.thiagarajan@microchip.com>
|
||||
L: linux-gpio@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/misc/mchp_pci1xxxx/mchp_pci1xxxx_gp.c
|
||||
F: drivers/misc/mchp_pci1xxxx/mchp_pci1xxxx_gp.h
|
||||
F: drivers/misc/mchp_pci1xxxx/mchp_pci1xxxx_gpio.c
|
||||
F: drivers/misc/mchp_pci1xxxx/mchp_pci1xxxx_otpe2p.c
|
||||
|
||||
MICROCHIP PCI1XXXX I2C DRIVER
|
||||
M: Tharun Kumar P <tharunkumar.pasumarthi@microchip.com>
|
||||
|
||||
@@ -421,7 +421,7 @@ register_cpus(void)
|
||||
arch_initcall(register_cpus);
|
||||
|
||||
#ifdef CONFIG_MAGIC_SYSRQ
|
||||
static void sysrq_reboot_handler(int unused)
|
||||
static void sysrq_reboot_handler(u8 unused)
|
||||
{
|
||||
machine_halt();
|
||||
}
|
||||
|
||||
@@ -129,9 +129,8 @@ srmcons_do_write(struct tty_port *port, const char *buf, int count)
|
||||
return count;
|
||||
}
|
||||
|
||||
static int
|
||||
srmcons_write(struct tty_struct *tty,
|
||||
const unsigned char *buf, int count)
|
||||
static ssize_t
|
||||
srmcons_write(struct tty_struct *tty, const u8 *buf, size_t count)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
|
||||
@@ -220,6 +220,15 @@
|
||||
};
|
||||
};
|
||||
|
||||
peci: peci-controller@f0100000 {
|
||||
compatible = "nuvoton,npcm750-peci";
|
||||
reg = <0xf0100000 0x200>;
|
||||
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk NPCM7XX_CLK_APB3>;
|
||||
cmd-timeout-ms = <1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi0: spi@200000 {
|
||||
compatible = "nuvoton,npcm750-pspi";
|
||||
reg = <0x200000 0x1000>;
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
};
|
||||
|
||||
uart_AO: serial@1c00 {
|
||||
compatible = "amlogic,meson-gx-uart",
|
||||
compatible = "amlogic,meson-a1-uart",
|
||||
"amlogic,meson-ao-uart";
|
||||
reg = <0x0 0x1c00 0x0 0x18>;
|
||||
interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
|
||||
@@ -118,7 +118,7 @@
|
||||
};
|
||||
|
||||
uart_AO_B: serial@2000 {
|
||||
compatible = "amlogic,meson-gx-uart",
|
||||
compatible = "amlogic,meson-a1-uart",
|
||||
"amlogic,meson-ao-uart";
|
||||
reg = <0x0 0x2000 0x0 0x18>;
|
||||
interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
|
||||
|
||||
@@ -68,6 +68,15 @@
|
||||
ranges = <0x0 0x0 0xf0000000 0x00300000>,
|
||||
<0xfff00000 0x0 0xfff00000 0x00016000>;
|
||||
|
||||
peci: peci-controller@100000 {
|
||||
compatible = "nuvoton,npcm845-peci";
|
||||
reg = <0x100000 0x1000>;
|
||||
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk NPCM8XX_CLK_APB3>;
|
||||
cmd-timeout-ms = <1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timer0: timer@8000 {
|
||||
compatible = "nuvoton,npcm845-timer";
|
||||
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
@@ -43,7 +43,7 @@ static void sysrq_tlbdump_othercpus(struct work_struct *dummy)
|
||||
static DECLARE_WORK(sysrq_tlbdump, sysrq_tlbdump_othercpus);
|
||||
#endif
|
||||
|
||||
static void sysrq_handle_tlbdump(int key)
|
||||
static void sysrq_handle_tlbdump(u8 key)
|
||||
{
|
||||
sysrq_tlbdump_single(NULL);
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
@@ -70,16 +70,16 @@ static void nfcon_tty_close(struct tty_struct *tty, struct file *filp)
|
||||
{
|
||||
}
|
||||
|
||||
static int nfcon_tty_write(struct tty_struct *tty, const unsigned char *buf,
|
||||
int count)
|
||||
static ssize_t nfcon_tty_write(struct tty_struct *tty, const u8 *buf,
|
||||
size_t count)
|
||||
{
|
||||
nfputs(buf, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
static int nfcon_tty_put_char(struct tty_struct *tty, unsigned char ch)
|
||||
static int nfcon_tty_put_char(struct tty_struct *tty, u8 ch)
|
||||
{
|
||||
char temp[2] = { ch, 0 };
|
||||
u8 temp[2] = { ch, 0 };
|
||||
|
||||
nf_call(stderr_id, virt_to_phys(temp));
|
||||
return 1;
|
||||
|
||||
@@ -18,4 +18,3 @@ obj-y += crypto/
|
||||
obj-$(CONFIG_MTD) += flash_setup.o
|
||||
obj-$(CONFIG_SMP) += smp.o
|
||||
obj-$(CONFIG_OCTEON_ILM) += oct_ilm.o
|
||||
obj-$(CONFIG_USB) += octeon-usb.o
|
||||
|
||||
@@ -450,7 +450,6 @@ static const struct of_device_id octeon_ids[] __initconst = {
|
||||
{ .compatible = "cavium,octeon-3860-bootbus", },
|
||||
{ .compatible = "cavium,mdio-mux", },
|
||||
{ .compatible = "gpio-leds", },
|
||||
{ .compatible = "cavium,octeon-7130-usb-uctl", },
|
||||
{},
|
||||
};
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ static void sysrq_tlbdump_othercpus(struct work_struct *dummy)
|
||||
static DECLARE_WORK(sysrq_tlbdump, sysrq_tlbdump_othercpus);
|
||||
#endif
|
||||
|
||||
static void sysrq_handle_tlbdump(int key)
|
||||
static void sysrq_handle_tlbdump(u8 key)
|
||||
{
|
||||
sysrq_tlbdump_single(NULL);
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
/*
|
||||
* Platform information definitions.
|
||||
*
|
||||
* 2006 (c) MontaVista Software, Inc.
|
||||
* Vitaly Bordug <vbordug@ru.mvista.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#ifndef FS_PD_H
|
||||
#define FS_PD_H
|
||||
#include <sysdev/fsl_soc.h>
|
||||
#include <asm/time.h>
|
||||
|
||||
static inline int uart_baudrate(void)
|
||||
{
|
||||
return get_baudrate();
|
||||
}
|
||||
|
||||
static inline int uart_clock(void)
|
||||
{
|
||||
return ppc_proc_freq;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <linux/fs_uart_pd.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/of_address.h>
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <linux/fs_uart_pd.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/of_fdt.h>
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include <linux/phy.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
#include <linux/fs_uart_pd.h>
|
||||
#include <linux/reboot.h>
|
||||
|
||||
#include <linux/atomic.h>
|
||||
@@ -35,7 +34,6 @@
|
||||
#include <asm/cpm2.h>
|
||||
#include <asm/fsl_hcalls.h> /* For the Freescale hypervisor */
|
||||
|
||||
extern void init_smc_ioports(struct fs_uart_platform_info*);
|
||||
static phys_addr_t immrbase = -1;
|
||||
|
||||
phys_addr_t get_immrbase(void)
|
||||
|
||||
@@ -3988,7 +3988,7 @@ static void xmon_init(int enable)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MAGIC_SYSRQ
|
||||
static void sysrq_handle_xmon(int key)
|
||||
static void sysrq_handle_xmon(u8 key)
|
||||
{
|
||||
if (xmon_is_locked_down()) {
|
||||
clear_all_bpt();
|
||||
|
||||
@@ -284,7 +284,7 @@ struct vio_dring_state {
|
||||
struct ldc_trans_cookie cookies[VIO_MAX_RING_COOKIES];
|
||||
};
|
||||
|
||||
#define VIO_TAG_SIZE ((int)sizeof(struct vio_msg_tag))
|
||||
#define VIO_TAG_SIZE (sizeof(struct vio_msg_tag))
|
||||
#define VIO_VCC_MTU_SIZE (LDC_PACKET_SIZE - VIO_TAG_SIZE)
|
||||
|
||||
struct vio_vcc {
|
||||
|
||||
@@ -295,7 +295,7 @@ void arch_trigger_cpumask_backtrace(const cpumask_t *mask, int exclude_cpu)
|
||||
|
||||
#ifdef CONFIG_MAGIC_SYSRQ
|
||||
|
||||
static void sysrq_handle_globreg(int key)
|
||||
static void sysrq_handle_globreg(u8 key)
|
||||
{
|
||||
trigger_all_cpu_backtrace();
|
||||
}
|
||||
@@ -370,7 +370,7 @@ static void pmu_snapshot_all_cpus(void)
|
||||
spin_unlock_irqrestore(&global_cpu_snapshot_lock, flags);
|
||||
}
|
||||
|
||||
static void sysrq_handle_globpmu(int key)
|
||||
static void sysrq_handle_globpmu(u8 key)
|
||||
{
|
||||
pmu_snapshot_all_cpus();
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ void line_flush_chars(struct tty_struct *tty)
|
||||
line_flush_buffer(tty);
|
||||
}
|
||||
|
||||
int line_write(struct tty_struct *tty, const unsigned char *buf, int len)
|
||||
ssize_t line_write(struct tty_struct *tty, const u8 *buf, size_t len)
|
||||
{
|
||||
struct line *line = tty->driver_data;
|
||||
unsigned long flags;
|
||||
|
||||
@@ -64,8 +64,7 @@ extern void line_cleanup(struct tty_struct *tty);
|
||||
extern void line_hangup(struct tty_struct *tty);
|
||||
extern int line_setup(char **conf, unsigned nlines, char **def,
|
||||
char *init, char *name);
|
||||
extern int line_write(struct tty_struct *tty, const unsigned char *buf,
|
||||
int len);
|
||||
extern ssize_t line_write(struct tty_struct *tty, const u8 *buf, size_t len);
|
||||
extern unsigned int line_chars_in_buffer(struct tty_struct *tty);
|
||||
extern void line_flush_buffer(struct tty_struct *tty);
|
||||
extern void line_flush_chars(struct tty_struct *tty);
|
||||
|
||||
@@ -238,12 +238,6 @@
|
||||
extern int (*console_blank_hook)(int);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The apm_bios device is one of the misc char devices.
|
||||
* This is its minor number.
|
||||
*/
|
||||
#define APM_MINOR_DEV 134
|
||||
|
||||
/*
|
||||
* Various options can be changed at boot time as follows:
|
||||
* (We allow underscores for compatibility with the modules code)
|
||||
|
||||
@@ -45,7 +45,21 @@ static u64 prefetch_disable_bits;
|
||||
*/
|
||||
static unsigned int pseudo_lock_major;
|
||||
static unsigned long pseudo_lock_minor_avail = GENMASK(MINORBITS, 0);
|
||||
static struct class *pseudo_lock_class;
|
||||
|
||||
static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode)
|
||||
{
|
||||
const struct rdtgroup *rdtgrp;
|
||||
|
||||
rdtgrp = dev_get_drvdata(dev);
|
||||
if (mode)
|
||||
*mode = 0600;
|
||||
return kasprintf(GFP_KERNEL, "pseudo_lock/%s", rdtgrp->kn->name);
|
||||
}
|
||||
|
||||
static const struct class pseudo_lock_class = {
|
||||
.name = "pseudo_lock",
|
||||
.devnode = pseudo_lock_devnode,
|
||||
};
|
||||
|
||||
/**
|
||||
* get_prefetch_disable_bits - prefetch disable bits of supported platforms
|
||||
@@ -1353,7 +1367,7 @@ int rdtgroup_pseudo_lock_create(struct rdtgroup *rdtgrp)
|
||||
&pseudo_measure_fops);
|
||||
}
|
||||
|
||||
dev = device_create(pseudo_lock_class, NULL,
|
||||
dev = device_create(&pseudo_lock_class, NULL,
|
||||
MKDEV(pseudo_lock_major, new_minor),
|
||||
rdtgrp, "%s", rdtgrp->kn->name);
|
||||
|
||||
@@ -1383,7 +1397,7 @@ int rdtgroup_pseudo_lock_create(struct rdtgroup *rdtgrp)
|
||||
goto out;
|
||||
|
||||
out_device:
|
||||
device_destroy(pseudo_lock_class, MKDEV(pseudo_lock_major, new_minor));
|
||||
device_destroy(&pseudo_lock_class, MKDEV(pseudo_lock_major, new_minor));
|
||||
out_debugfs:
|
||||
debugfs_remove_recursive(plr->debugfs_dir);
|
||||
pseudo_lock_minor_release(new_minor);
|
||||
@@ -1424,7 +1438,7 @@ void rdtgroup_pseudo_lock_remove(struct rdtgroup *rdtgrp)
|
||||
|
||||
pseudo_lock_cstates_relax(plr);
|
||||
debugfs_remove_recursive(rdtgrp->plr->debugfs_dir);
|
||||
device_destroy(pseudo_lock_class, MKDEV(pseudo_lock_major, plr->minor));
|
||||
device_destroy(&pseudo_lock_class, MKDEV(pseudo_lock_major, plr->minor));
|
||||
pseudo_lock_minor_release(plr->minor);
|
||||
|
||||
free:
|
||||
@@ -1560,16 +1574,6 @@ static const struct file_operations pseudo_lock_dev_fops = {
|
||||
.mmap = pseudo_lock_dev_mmap,
|
||||
};
|
||||
|
||||
static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode)
|
||||
{
|
||||
const struct rdtgroup *rdtgrp;
|
||||
|
||||
rdtgrp = dev_get_drvdata(dev);
|
||||
if (mode)
|
||||
*mode = 0600;
|
||||
return kasprintf(GFP_KERNEL, "pseudo_lock/%s", rdtgrp->kn->name);
|
||||
}
|
||||
|
||||
int rdt_pseudo_lock_init(void)
|
||||
{
|
||||
int ret;
|
||||
@@ -1580,21 +1584,18 @@ int rdt_pseudo_lock_init(void)
|
||||
|
||||
pseudo_lock_major = ret;
|
||||
|
||||
pseudo_lock_class = class_create("pseudo_lock");
|
||||
if (IS_ERR(pseudo_lock_class)) {
|
||||
ret = PTR_ERR(pseudo_lock_class);
|
||||
ret = class_register(&pseudo_lock_class);
|
||||
if (ret) {
|
||||
unregister_chrdev(pseudo_lock_major, "pseudo_lock");
|
||||
return ret;
|
||||
}
|
||||
|
||||
pseudo_lock_class->devnode = pseudo_lock_devnode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void rdt_pseudo_lock_release(void)
|
||||
{
|
||||
class_destroy(pseudo_lock_class);
|
||||
pseudo_lock_class = NULL;
|
||||
class_unregister(&pseudo_lock_class);
|
||||
unregister_chrdev(pseudo_lock_major, "pseudo_lock");
|
||||
pseudo_lock_major = 0;
|
||||
}
|
||||
|
||||
+16
-15
@@ -40,7 +40,6 @@
|
||||
#include <asm/processor.h>
|
||||
#include <asm/msr.h>
|
||||
|
||||
static struct class *cpuid_class;
|
||||
static enum cpuhp_state cpuhp_cpuid_state;
|
||||
|
||||
struct cpuid_regs_done {
|
||||
@@ -124,26 +123,31 @@ static const struct file_operations cpuid_fops = {
|
||||
.open = cpuid_open,
|
||||
};
|
||||
|
||||
static char *cpuid_devnode(const struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt));
|
||||
}
|
||||
|
||||
static const struct class cpuid_class = {
|
||||
.name = "cpuid",
|
||||
.devnode = cpuid_devnode,
|
||||
};
|
||||
|
||||
static int cpuid_device_create(unsigned int cpu)
|
||||
{
|
||||
struct device *dev;
|
||||
|
||||
dev = device_create(cpuid_class, NULL, MKDEV(CPUID_MAJOR, cpu), NULL,
|
||||
dev = device_create(&cpuid_class, NULL, MKDEV(CPUID_MAJOR, cpu), NULL,
|
||||
"cpu%d", cpu);
|
||||
return PTR_ERR_OR_ZERO(dev);
|
||||
}
|
||||
|
||||
static int cpuid_device_destroy(unsigned int cpu)
|
||||
{
|
||||
device_destroy(cpuid_class, MKDEV(CPUID_MAJOR, cpu));
|
||||
device_destroy(&cpuid_class, MKDEV(CPUID_MAJOR, cpu));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *cpuid_devnode(const struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt));
|
||||
}
|
||||
|
||||
static int __init cpuid_init(void)
|
||||
{
|
||||
int err;
|
||||
@@ -154,12 +158,9 @@ static int __init cpuid_init(void)
|
||||
CPUID_MAJOR);
|
||||
return -EBUSY;
|
||||
}
|
||||
cpuid_class = class_create("cpuid");
|
||||
if (IS_ERR(cpuid_class)) {
|
||||
err = PTR_ERR(cpuid_class);
|
||||
err = class_register(&cpuid_class);
|
||||
if (err)
|
||||
goto out_chrdev;
|
||||
}
|
||||
cpuid_class->devnode = cpuid_devnode;
|
||||
|
||||
err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/cpuid:online",
|
||||
cpuid_device_create, cpuid_device_destroy);
|
||||
@@ -170,7 +171,7 @@ static int __init cpuid_init(void)
|
||||
return 0;
|
||||
|
||||
out_class:
|
||||
class_destroy(cpuid_class);
|
||||
class_unregister(&cpuid_class);
|
||||
out_chrdev:
|
||||
__unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid");
|
||||
return err;
|
||||
@@ -180,7 +181,7 @@ module_init(cpuid_init);
|
||||
static void __exit cpuid_exit(void)
|
||||
{
|
||||
cpuhp_remove_state(cpuhp_cpuid_state);
|
||||
class_destroy(cpuid_class);
|
||||
class_unregister(&cpuid_class);
|
||||
__unregister_chrdev(CPUID_MAJOR, 0, NR_CPUS, "cpu/cpuid");
|
||||
}
|
||||
module_exit(cpuid_exit);
|
||||
|
||||
+16
-15
@@ -39,7 +39,6 @@
|
||||
#include <asm/cpufeature.h>
|
||||
#include <asm/msr.h>
|
||||
|
||||
static struct class *msr_class;
|
||||
static enum cpuhp_state cpuhp_msr_state;
|
||||
|
||||
enum allow_write_msrs {
|
||||
@@ -235,26 +234,31 @@ static const struct file_operations msr_fops = {
|
||||
.compat_ioctl = msr_ioctl,
|
||||
};
|
||||
|
||||
static char *msr_devnode(const struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt));
|
||||
}
|
||||
|
||||
static const struct class msr_class = {
|
||||
.name = "msr",
|
||||
.devnode = msr_devnode,
|
||||
};
|
||||
|
||||
static int msr_device_create(unsigned int cpu)
|
||||
{
|
||||
struct device *dev;
|
||||
|
||||
dev = device_create(msr_class, NULL, MKDEV(MSR_MAJOR, cpu), NULL,
|
||||
dev = device_create(&msr_class, NULL, MKDEV(MSR_MAJOR, cpu), NULL,
|
||||
"msr%d", cpu);
|
||||
return PTR_ERR_OR_ZERO(dev);
|
||||
}
|
||||
|
||||
static int msr_device_destroy(unsigned int cpu)
|
||||
{
|
||||
device_destroy(msr_class, MKDEV(MSR_MAJOR, cpu));
|
||||
device_destroy(&msr_class, MKDEV(MSR_MAJOR, cpu));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *msr_devnode(const struct device *dev, umode_t *mode)
|
||||
{
|
||||
return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt));
|
||||
}
|
||||
|
||||
static int __init msr_init(void)
|
||||
{
|
||||
int err;
|
||||
@@ -263,12 +267,9 @@ static int __init msr_init(void)
|
||||
pr_err("unable to get major %d for msr\n", MSR_MAJOR);
|
||||
return -EBUSY;
|
||||
}
|
||||
msr_class = class_create("msr");
|
||||
if (IS_ERR(msr_class)) {
|
||||
err = PTR_ERR(msr_class);
|
||||
err = class_register(&msr_class);
|
||||
if (err)
|
||||
goto out_chrdev;
|
||||
}
|
||||
msr_class->devnode = msr_devnode;
|
||||
|
||||
err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/msr:online",
|
||||
msr_device_create, msr_device_destroy);
|
||||
@@ -278,7 +279,7 @@ static int __init msr_init(void)
|
||||
return 0;
|
||||
|
||||
out_class:
|
||||
class_destroy(msr_class);
|
||||
class_unregister(&msr_class);
|
||||
out_chrdev:
|
||||
__unregister_chrdev(MSR_MAJOR, 0, NR_CPUS, "cpu/msr");
|
||||
return err;
|
||||
@@ -288,7 +289,7 @@ module_init(msr_init);
|
||||
static void __exit msr_exit(void)
|
||||
{
|
||||
cpuhp_remove_state(cpuhp_msr_state);
|
||||
class_destroy(msr_class);
|
||||
class_unregister(&msr_class);
|
||||
__unregister_chrdev(MSR_MAJOR, 0, NR_CPUS, "cpu/msr");
|
||||
}
|
||||
module_exit(msr_exit)
|
||||
|
||||
@@ -52,8 +52,7 @@ static void rs_close(struct tty_struct *tty, struct file * filp)
|
||||
}
|
||||
|
||||
|
||||
static int rs_write(struct tty_struct * tty,
|
||||
const unsigned char *buf, int count)
|
||||
static ssize_t rs_write(struct tty_struct * tty, const u8 *buf, size_t count)
|
||||
{
|
||||
/* see drivers/char/serialX.c to reference original version */
|
||||
|
||||
@@ -82,32 +81,12 @@ static void rs_poll(struct timer_list *unused)
|
||||
mod_timer(&serial_timer, jiffies + SERIAL_TIMER_VALUE);
|
||||
}
|
||||
|
||||
|
||||
static int rs_put_char(struct tty_struct *tty, unsigned char ch)
|
||||
{
|
||||
return rs_write(tty, &ch, 1);
|
||||
}
|
||||
|
||||
static void rs_flush_chars(struct tty_struct *tty)
|
||||
{
|
||||
}
|
||||
|
||||
static unsigned int rs_write_room(struct tty_struct *tty)
|
||||
{
|
||||
/* Let's say iss can always accept 2K characters.. */
|
||||
return 2 * 1024;
|
||||
}
|
||||
|
||||
static void rs_hangup(struct tty_struct *tty)
|
||||
{
|
||||
/* Stub, once again.. */
|
||||
}
|
||||
|
||||
static void rs_wait_until_sent(struct tty_struct *tty, int timeout)
|
||||
{
|
||||
/* Stub, once again.. */
|
||||
}
|
||||
|
||||
static int rs_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
seq_printf(m, "serinfo:1.0 driver:0.1\n");
|
||||
@@ -118,11 +97,7 @@ static const struct tty_operations serial_ops = {
|
||||
.open = rs_open,
|
||||
.close = rs_close,
|
||||
.write = rs_write,
|
||||
.put_char = rs_put_char,
|
||||
.flush_chars = rs_flush_chars,
|
||||
.write_room = rs_write_room,
|
||||
.hangup = rs_hangup,
|
||||
.wait_until_sent = rs_wait_until_sent,
|
||||
.proc_show = rs_proc_show,
|
||||
};
|
||||
|
||||
|
||||
@@ -71,15 +71,14 @@ static void spk_ttyio_ldisc_close(struct tty_struct *tty)
|
||||
kfree(tty->disc_data);
|
||||
}
|
||||
|
||||
static int spk_ttyio_receive_buf2(struct tty_struct *tty,
|
||||
const unsigned char *cp,
|
||||
const char *fp, int count)
|
||||
static size_t spk_ttyio_receive_buf2(struct tty_struct *tty, const u8 *cp,
|
||||
const u8 *fp, size_t count)
|
||||
{
|
||||
struct spk_ldisc_data *ldisc_data = tty->disc_data;
|
||||
struct spk_synth *synth = ldisc_data->synth;
|
||||
|
||||
if (synth->read_buff_add) {
|
||||
int i;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
synth->read_buff_add(cp[i]);
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
static const struct acpi_device_id amba_id_list[] = {
|
||||
{"ARMH0061", 0}, /* PL061 GPIO Device */
|
||||
{"ARMH0330", 0}, /* ARM DMA Controller DMA-330 */
|
||||
{"ARMHC500", 0}, /* ARM CoreSight ETM4x */
|
||||
{"ARMHC501", 0}, /* ARM CoreSight ETR */
|
||||
{"ARMHC502", 0}, /* ARM CoreSight STM */
|
||||
{"ARMHC503", 0}, /* ARM CoreSight Debug */
|
||||
|
||||
@@ -528,6 +528,7 @@ static void amba_device_release(struct device *dev)
|
||||
{
|
||||
struct amba_device *d = to_amba_device(dev);
|
||||
|
||||
of_node_put(d->dev.of_node);
|
||||
if (d->res.parent)
|
||||
release_resource(&d->res);
|
||||
mutex_destroy(&d->periphid_lock);
|
||||
|
||||
@@ -6758,6 +6758,7 @@ static int __init binder_init(void)
|
||||
struct binder_device *device;
|
||||
struct hlist_node *tmp;
|
||||
char *device_names = NULL;
|
||||
const struct binder_debugfs_entry *db_entry;
|
||||
|
||||
ret = binder_alloc_shrinker_init();
|
||||
if (ret)
|
||||
@@ -6767,19 +6768,16 @@ static int __init binder_init(void)
|
||||
atomic_set(&binder_transaction_log_failed.cur, ~0U);
|
||||
|
||||
binder_debugfs_dir_entry_root = debugfs_create_dir("binder", NULL);
|
||||
if (binder_debugfs_dir_entry_root) {
|
||||
const struct binder_debugfs_entry *db_entry;
|
||||
|
||||
binder_for_each_debugfs_entry(db_entry)
|
||||
debugfs_create_file(db_entry->name,
|
||||
db_entry->mode,
|
||||
binder_debugfs_dir_entry_root,
|
||||
db_entry->data,
|
||||
db_entry->fops);
|
||||
binder_for_each_debugfs_entry(db_entry)
|
||||
debugfs_create_file(db_entry->name,
|
||||
db_entry->mode,
|
||||
binder_debugfs_dir_entry_root,
|
||||
db_entry->data,
|
||||
db_entry->fops);
|
||||
|
||||
binder_debugfs_dir_entry_proc = debugfs_create_dir("proc",
|
||||
binder_debugfs_dir_entry_root);
|
||||
}
|
||||
binder_debugfs_dir_entry_proc = debugfs_create_dir("proc",
|
||||
binder_debugfs_dir_entry_root);
|
||||
|
||||
if (!IS_ENABLED(CONFIG_ANDROID_BINDERFS) &&
|
||||
strcmp(binder_devices_param, "") != 0) {
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/mount.h>
|
||||
#include <linux/fs_parser.h>
|
||||
#include <linux/radix-tree.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
+20
-10
@@ -2306,12 +2306,12 @@ static void device_platform_notify(struct device *dev)
|
||||
|
||||
static void device_platform_notify_remove(struct device *dev)
|
||||
{
|
||||
acpi_device_notify_remove(dev);
|
||||
if (platform_notify_remove)
|
||||
platform_notify_remove(dev);
|
||||
|
||||
software_node_notify_remove(dev);
|
||||
|
||||
if (platform_notify_remove)
|
||||
platform_notify_remove(dev);
|
||||
acpi_device_notify_remove(dev);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3528,18 +3528,17 @@ int device_add(struct device *dev)
|
||||
* the name, and force the use of dev_name()
|
||||
*/
|
||||
if (dev->init_name) {
|
||||
dev_set_name(dev, "%s", dev->init_name);
|
||||
error = dev_set_name(dev, "%s", dev->init_name);
|
||||
dev->init_name = NULL;
|
||||
}
|
||||
|
||||
if (dev_name(dev))
|
||||
error = 0;
|
||||
/* subsystems can specify simple device enumeration */
|
||||
if (!dev_name(dev) && dev->bus && dev->bus->dev_name)
|
||||
dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
|
||||
|
||||
if (!dev_name(dev)) {
|
||||
error = -EINVAL;
|
||||
else if (dev->bus && dev->bus->dev_name)
|
||||
error = dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id);
|
||||
if (error)
|
||||
goto name_error;
|
||||
}
|
||||
|
||||
pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
|
||||
|
||||
@@ -3815,6 +3814,17 @@ void device_del(struct device *dev)
|
||||
device_platform_notify_remove(dev);
|
||||
device_links_purge(dev);
|
||||
|
||||
/*
|
||||
* If a device does not have a driver attached, we need to clean
|
||||
* up any managed resources. We do this in device_release(), but
|
||||
* it's never called (and we leak the device) if a managed
|
||||
* resource holds a reference to the device. So release all
|
||||
* managed resources here, like we do in driver_detach(). We
|
||||
* still need to do so again in device_release() in case someone
|
||||
* adds a new resource after this point, though.
|
||||
*/
|
||||
devres_release_all(dev);
|
||||
|
||||
bus_notify(dev, BUS_NOTIFY_REMOVED_DEVICE);
|
||||
kobject_uevent(&dev->kobj, KOBJ_REMOVE);
|
||||
glue_dir = get_glue_dir(dev);
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <linux/cpufeature.h>
|
||||
#include <linux/tick.h>
|
||||
#include <linux/pm_qos.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/sched/isolation.h>
|
||||
|
||||
#include "base.h"
|
||||
@@ -50,12 +51,30 @@ static int cpu_subsys_online(struct device *dev)
|
||||
int cpuid = dev->id;
|
||||
int from_nid, to_nid;
|
||||
int ret;
|
||||
int retries = 0;
|
||||
|
||||
from_nid = cpu_to_node(cpuid);
|
||||
if (from_nid == NUMA_NO_NODE)
|
||||
return -ENODEV;
|
||||
|
||||
retry:
|
||||
ret = cpu_device_up(dev);
|
||||
|
||||
/*
|
||||
* If -EBUSY is returned, it is likely that hotplug is temporarily
|
||||
* disabled when cpu_hotplug_disable() was called. This condition is
|
||||
* transient. So we retry after waiting for an exponentially
|
||||
* increasing delay up to a total of at least 620ms as some PCI
|
||||
* device initialization can take quite a while.
|
||||
*/
|
||||
if (ret == -EBUSY) {
|
||||
retries++;
|
||||
if (retries > 5)
|
||||
return ret;
|
||||
msleep(10 * (1 << retries));
|
||||
goto retry;
|
||||
}
|
||||
|
||||
/*
|
||||
* When hot adding memory to memoryless node and enabling a cpu
|
||||
* on the node, node number of the cpu may internally change.
|
||||
|
||||
@@ -693,6 +693,8 @@ re_probe:
|
||||
|
||||
device_remove(dev);
|
||||
driver_sysfs_remove(dev);
|
||||
if (dev->bus && dev->bus->dma_cleanup)
|
||||
dev->bus->dma_cleanup(dev);
|
||||
device_unbind_cleanup(dev);
|
||||
|
||||
goto re_probe;
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/swap.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/hugetlb.h>
|
||||
|
||||
static struct bus_type node_subsys = {
|
||||
.name = "node",
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
CONFIG_KUNIT=y
|
||||
CONFIG_DM_KUNIT_TEST=y
|
||||
@@ -9,6 +9,10 @@ config TEST_ASYNC_DRIVER_PROBE
|
||||
|
||||
If unsure say N.
|
||||
|
||||
config DM_KUNIT_TEST
|
||||
tristate "KUnit Tests for the device model" if !KUNIT_ALL_TESTS
|
||||
depends on KUNIT
|
||||
|
||||
config DRIVER_PE_KUNIT_TEST
|
||||
bool "KUnit Tests for property entry API" if !KUNIT_ALL_TESTS
|
||||
depends on KUNIT=y
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-$(CONFIG_TEST_ASYNC_DRIVER_PROBE) += test_async_driver_probe.o
|
||||
|
||||
obj-$(CONFIG_DM_KUNIT_TEST) += root-device-test.o
|
||||
obj-$(CONFIG_DM_KUNIT_TEST) += platform-device-test.o
|
||||
|
||||
obj-$(CONFIG_DRIVER_PE_KUNIT_TEST) += property-entry-test.o
|
||||
CFLAGS_property-entry-test.o += $(DISABLE_STRUCTLEAK_PLUGIN)
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include <kunit/resource.h>
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#define DEVICE_NAME "test"
|
||||
|
||||
struct test_priv {
|
||||
bool probe_done;
|
||||
bool release_done;
|
||||
wait_queue_head_t probe_wq;
|
||||
wait_queue_head_t release_wq;
|
||||
struct device *dev;
|
||||
};
|
||||
|
||||
static int platform_device_devm_init(struct kunit *test)
|
||||
{
|
||||
struct test_priv *priv;
|
||||
|
||||
priv = kunit_kzalloc(test, sizeof(*priv), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv);
|
||||
init_waitqueue_head(&priv->probe_wq);
|
||||
init_waitqueue_head(&priv->release_wq);
|
||||
|
||||
test->priv = priv;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void devm_device_action(void *ptr)
|
||||
{
|
||||
struct test_priv *priv = ptr;
|
||||
|
||||
priv->release_done = true;
|
||||
wake_up_interruptible(&priv->release_wq);
|
||||
}
|
||||
|
||||
static void devm_put_device_action(void *ptr)
|
||||
{
|
||||
struct test_priv *priv = ptr;
|
||||
|
||||
put_device(priv->dev);
|
||||
priv->release_done = true;
|
||||
wake_up_interruptible(&priv->release_wq);
|
||||
}
|
||||
|
||||
#define RELEASE_TIMEOUT_MS 100
|
||||
|
||||
/*
|
||||
* Tests that a platform bus, non-probed device will run its
|
||||
* device-managed actions when unregistered.
|
||||
*/
|
||||
static void platform_device_devm_register_unregister_test(struct kunit *test)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
struct test_priv *priv = test->priv;
|
||||
int ret;
|
||||
|
||||
pdev = platform_device_alloc(DEVICE_NAME, PLATFORM_DEVID_NONE);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
|
||||
|
||||
ret = platform_device_add(pdev);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
priv->dev = &pdev->dev;
|
||||
|
||||
ret = devm_add_action_or_reset(priv->dev, devm_device_action, priv);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
platform_device_unregister(pdev);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_EXPECT_GT(test, ret, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests that a platform bus, non-probed device will run its
|
||||
* device-managed actions when unregistered, even if someone still holds
|
||||
* a reference to it.
|
||||
*/
|
||||
static void platform_device_devm_register_get_unregister_with_devm_test(struct kunit *test)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
struct test_priv *priv = test->priv;
|
||||
int ret;
|
||||
|
||||
pdev = platform_device_alloc(DEVICE_NAME, PLATFORM_DEVID_NONE);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
|
||||
|
||||
ret = platform_device_add(pdev);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
priv->dev = &pdev->dev;
|
||||
|
||||
get_device(priv->dev);
|
||||
|
||||
ret = devm_add_action_or_reset(priv->dev, devm_put_device_action, priv);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
platform_device_unregister(pdev);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_EXPECT_GT(test, ret, 0);
|
||||
}
|
||||
|
||||
static int fake_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct test_priv *priv = platform_get_drvdata(pdev);
|
||||
|
||||
priv->probe_done = true;
|
||||
wake_up_interruptible(&priv->probe_wq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver fake_driver = {
|
||||
.probe = fake_probe,
|
||||
.driver = {
|
||||
.name = DEVICE_NAME,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* Tests that a platform bus, probed device will run its device-managed
|
||||
* actions when unregistered.
|
||||
*/
|
||||
static void probed_platform_device_devm_register_unregister_test(struct kunit *test)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
struct test_priv *priv = test->priv;
|
||||
int ret;
|
||||
|
||||
ret = platform_driver_register(&fake_driver);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
pdev = platform_device_alloc(DEVICE_NAME, PLATFORM_DEVID_NONE);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
|
||||
|
||||
priv->dev = &pdev->dev;
|
||||
platform_set_drvdata(pdev, priv);
|
||||
|
||||
ret = platform_device_add(pdev);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->probe_wq, priv->probe_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_ASSERT_GT(test, ret, 0);
|
||||
|
||||
ret = devm_add_action_or_reset(priv->dev, devm_device_action, priv);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
platform_device_unregister(pdev);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_EXPECT_GT(test, ret, 0);
|
||||
|
||||
platform_driver_unregister(&fake_driver);
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests that a platform bus, probed device will run its device-managed
|
||||
* actions when unregistered, even if someone still holds a reference to
|
||||
* it.
|
||||
*/
|
||||
static void probed_platform_device_devm_register_get_unregister_with_devm_test(struct kunit *test)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
struct test_priv *priv = test->priv;
|
||||
int ret;
|
||||
|
||||
ret = platform_driver_register(&fake_driver);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
pdev = platform_device_alloc(DEVICE_NAME, PLATFORM_DEVID_NONE);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
|
||||
|
||||
priv->dev = &pdev->dev;
|
||||
platform_set_drvdata(pdev, priv);
|
||||
|
||||
ret = platform_device_add(pdev);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->probe_wq, priv->probe_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_ASSERT_GT(test, ret, 0);
|
||||
|
||||
get_device(priv->dev);
|
||||
|
||||
ret = devm_add_action_or_reset(priv->dev, devm_put_device_action, priv);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
platform_device_unregister(pdev);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_EXPECT_GT(test, ret, 0);
|
||||
|
||||
platform_driver_unregister(&fake_driver);
|
||||
}
|
||||
|
||||
static struct kunit_case platform_device_devm_tests[] = {
|
||||
KUNIT_CASE(platform_device_devm_register_unregister_test),
|
||||
KUNIT_CASE(platform_device_devm_register_get_unregister_with_devm_test),
|
||||
KUNIT_CASE(probed_platform_device_devm_register_unregister_test),
|
||||
KUNIT_CASE(probed_platform_device_devm_register_get_unregister_with_devm_test),
|
||||
{}
|
||||
};
|
||||
|
||||
static struct kunit_suite platform_device_devm_test_suite = {
|
||||
.name = "platform-device-devm",
|
||||
.init = platform_device_devm_init,
|
||||
.test_cases = platform_device_devm_tests,
|
||||
};
|
||||
|
||||
kunit_test_suite(platform_device_devm_test_suite);
|
||||
|
||||
MODULE_DESCRIPTION("Test module for platform devices");
|
||||
MODULE_AUTHOR("Maxime Ripard <mripard@kernel.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -0,0 +1,112 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
// Copyright 2023 Maxime Ripard <mripard@kernel.org>
|
||||
|
||||
#include <kunit/resource.h>
|
||||
|
||||
#include <linux/device.h>
|
||||
|
||||
#define DEVICE_NAME "test"
|
||||
|
||||
struct test_priv {
|
||||
bool probe_done;
|
||||
bool release_done;
|
||||
wait_queue_head_t release_wq;
|
||||
struct device *dev;
|
||||
};
|
||||
|
||||
static int root_device_devm_init(struct kunit *test)
|
||||
{
|
||||
struct test_priv *priv;
|
||||
|
||||
priv = kunit_kzalloc(test, sizeof(*priv), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv);
|
||||
init_waitqueue_head(&priv->release_wq);
|
||||
|
||||
test->priv = priv;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void devm_device_action(void *ptr)
|
||||
{
|
||||
struct test_priv *priv = ptr;
|
||||
|
||||
priv->release_done = true;
|
||||
wake_up_interruptible(&priv->release_wq);
|
||||
}
|
||||
|
||||
#define RELEASE_TIMEOUT_MS 100
|
||||
|
||||
/*
|
||||
* Tests that a bus-less, non-probed device will run its device-managed
|
||||
* actions when unregistered.
|
||||
*/
|
||||
static void root_device_devm_register_unregister_test(struct kunit *test)
|
||||
{
|
||||
struct test_priv *priv = test->priv;
|
||||
int ret;
|
||||
|
||||
priv->dev = root_device_register(DEVICE_NAME);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv->dev);
|
||||
|
||||
ret = devm_add_action_or_reset(priv->dev, devm_device_action, priv);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
root_device_unregister(priv->dev);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_EXPECT_GT(test, ret, 0);
|
||||
}
|
||||
|
||||
static void devm_put_device_action(void *ptr)
|
||||
{
|
||||
struct test_priv *priv = ptr;
|
||||
|
||||
put_device(priv->dev);
|
||||
priv->release_done = true;
|
||||
wake_up_interruptible(&priv->release_wq);
|
||||
}
|
||||
|
||||
/*
|
||||
* Tests that a bus-less, non-probed device will run its device-managed
|
||||
* actions when unregistered, even if someone still holds a reference to
|
||||
* it.
|
||||
*/
|
||||
static void root_device_devm_register_get_unregister_with_devm_test(struct kunit *test)
|
||||
{
|
||||
struct test_priv *priv = test->priv;
|
||||
int ret;
|
||||
|
||||
priv->dev = root_device_register(DEVICE_NAME);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv->dev);
|
||||
|
||||
get_device(priv->dev);
|
||||
|
||||
ret = devm_add_action_or_reset(priv->dev, devm_put_device_action, priv);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
root_device_unregister(priv->dev);
|
||||
|
||||
ret = wait_event_interruptible_timeout(priv->release_wq, priv->release_done,
|
||||
msecs_to_jiffies(RELEASE_TIMEOUT_MS));
|
||||
KUNIT_EXPECT_GT(test, ret, 0);
|
||||
}
|
||||
|
||||
static struct kunit_case root_device_devm_tests[] = {
|
||||
KUNIT_CASE(root_device_devm_register_unregister_test),
|
||||
KUNIT_CASE(root_device_devm_register_get_unregister_with_devm_test),
|
||||
{}
|
||||
};
|
||||
|
||||
static struct kunit_suite root_device_devm_test_suite = {
|
||||
.name = "root-device-devm",
|
||||
.init = root_device_devm_init,
|
||||
.test_cases = root_device_devm_tests,
|
||||
};
|
||||
|
||||
kunit_test_suite(root_device_devm_test_suite);
|
||||
|
||||
MODULE_DESCRIPTION("Test module for root devices");
|
||||
MODULE_AUTHOR("Maxime Ripard <mripard@kernel.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -84,7 +84,7 @@ test_platform_device_register_node(char *name, int id, int nid)
|
||||
|
||||
pdev = platform_device_alloc(name, id);
|
||||
if (!pdev)
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
if (nid != NUMA_NO_NODE)
|
||||
set_dev_node(&pdev->dev, nid);
|
||||
|
||||
@@ -599,7 +599,7 @@ static void hci_uart_tty_wakeup(struct tty_struct *tty)
|
||||
* Return Value: None
|
||||
*/
|
||||
static void hci_uart_tty_receive(struct tty_struct *tty, const u8 *data,
|
||||
const char *flags, int count)
|
||||
const u8 *flags, size_t count)
|
||||
{
|
||||
struct hci_uart *hu = tty->disc_data;
|
||||
|
||||
@@ -807,20 +807,14 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, unsigned int cmd,
|
||||
* We don't provide read/write/poll interface for user space.
|
||||
*/
|
||||
static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file,
|
||||
unsigned char *buf, size_t nr,
|
||||
void **cookie, unsigned long offset)
|
||||
u8 *buf, size_t nr, void **cookie,
|
||||
unsigned long offset)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file,
|
||||
const unsigned char *data, size_t count)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __poll_t hci_uart_tty_poll(struct tty_struct *tty,
|
||||
struct file *filp, poll_table *wait)
|
||||
const u8 *data, size_t count)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -835,7 +829,6 @@ static struct tty_ldisc_ops hci_uart_ldisc = {
|
||||
.write = hci_uart_tty_write,
|
||||
.ioctl = hci_uart_tty_ioctl,
|
||||
.compat_ioctl = hci_uart_tty_ioctl,
|
||||
.poll = hci_uart_tty_poll,
|
||||
.receive_buf = hci_uart_tty_receive,
|
||||
.write_wakeup = hci_uart_tty_wakeup,
|
||||
};
|
||||
|
||||
@@ -365,12 +365,10 @@ error_alloc_mhi_buf:
|
||||
}
|
||||
|
||||
static void mhi_firmware_copy(struct mhi_controller *mhi_cntrl,
|
||||
const struct firmware *firmware,
|
||||
const u8 *buf, size_t remainder,
|
||||
struct image_info *img_info)
|
||||
{
|
||||
size_t remainder = firmware->size;
|
||||
size_t to_cpy;
|
||||
const u8 *buf = firmware->data;
|
||||
struct mhi_buf *mhi_buf = img_info->mhi_buf;
|
||||
struct bhi_vec_entry *bhi_vec = img_info->bhi_vec;
|
||||
|
||||
@@ -393,9 +391,10 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
|
||||
struct device *dev = &mhi_cntrl->mhi_dev->dev;
|
||||
enum mhi_pm_state new_state;
|
||||
const char *fw_name;
|
||||
const u8 *fw_data;
|
||||
void *buf;
|
||||
dma_addr_t dma_addr;
|
||||
size_t size;
|
||||
size_t size, fw_sz;
|
||||
int i, ret;
|
||||
|
||||
if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) {
|
||||
@@ -425,6 +424,20 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
|
||||
fw_name = (mhi_cntrl->ee == MHI_EE_EDL) ?
|
||||
mhi_cntrl->edl_image : mhi_cntrl->fw_image;
|
||||
|
||||
/* check if the driver has already provided the firmware data */
|
||||
if (!fw_name && mhi_cntrl->fbc_download &&
|
||||
mhi_cntrl->fw_data && mhi_cntrl->fw_sz) {
|
||||
if (!mhi_cntrl->sbl_size) {
|
||||
dev_err(dev, "fw_data provided but no sbl_size\n");
|
||||
goto error_fw_load;
|
||||
}
|
||||
|
||||
size = mhi_cntrl->sbl_size;
|
||||
fw_data = mhi_cntrl->fw_data;
|
||||
fw_sz = mhi_cntrl->fw_sz;
|
||||
goto skip_req_fw;
|
||||
}
|
||||
|
||||
if (!fw_name || (mhi_cntrl->fbc_download && (!mhi_cntrl->sbl_size ||
|
||||
!mhi_cntrl->seg_len))) {
|
||||
dev_err(dev,
|
||||
@@ -444,6 +457,10 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
|
||||
if (size > firmware->size)
|
||||
size = firmware->size;
|
||||
|
||||
fw_data = firmware->data;
|
||||
fw_sz = firmware->size;
|
||||
|
||||
skip_req_fw:
|
||||
buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,
|
||||
GFP_KERNEL);
|
||||
if (!buf) {
|
||||
@@ -452,7 +469,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
|
||||
}
|
||||
|
||||
/* Download image using BHI */
|
||||
memcpy(buf, firmware->data, size);
|
||||
memcpy(buf, fw_data, size);
|
||||
ret = mhi_fw_load_bhi(mhi_cntrl, dma_addr, size);
|
||||
dma_free_coherent(mhi_cntrl->cntrl_dev, size, buf, dma_addr);
|
||||
|
||||
@@ -464,7 +481,7 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
|
||||
}
|
||||
|
||||
/* Wait for ready since EDL image was loaded */
|
||||
if (fw_name == mhi_cntrl->edl_image) {
|
||||
if (fw_name && fw_name == mhi_cntrl->edl_image) {
|
||||
release_firmware(firmware);
|
||||
goto fw_load_ready_state;
|
||||
}
|
||||
@@ -478,15 +495,14 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
|
||||
* device transitioning into MHI READY state
|
||||
*/
|
||||
if (mhi_cntrl->fbc_download) {
|
||||
ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image,
|
||||
firmware->size);
|
||||
ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz);
|
||||
if (ret) {
|
||||
release_firmware(firmware);
|
||||
goto error_fw_load;
|
||||
}
|
||||
|
||||
/* Load the firmware into BHIE vec table */
|
||||
mhi_firmware_copy(mhi_cntrl, firmware, mhi_cntrl->fbc_image);
|
||||
mhi_firmware_copy(mhi_cntrl, fw_data, fw_sz, mhi_cntrl->fbc_image);
|
||||
}
|
||||
|
||||
release_firmware(firmware);
|
||||
|
||||
@@ -759,7 +759,7 @@ static int parse_ch_cfg(struct mhi_controller *mhi_cntrl,
|
||||
* so to avoid any memory possible allocation failures, vzalloc is
|
||||
* used here
|
||||
*/
|
||||
mhi_cntrl->mhi_chan = vzalloc(mhi_cntrl->max_chan *
|
||||
mhi_cntrl->mhi_chan = vcalloc(mhi_cntrl->max_chan,
|
||||
sizeof(*mhi_cntrl->mhi_chan));
|
||||
if (!mhi_cntrl->mhi_chan)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -938,7 +938,6 @@ int mhi_process_ctrl_ev_ring(struct mhi_controller *mhi_cntrl,
|
||||
if (!mhi_chan->configured)
|
||||
break;
|
||||
parse_xfer_event(mhi_cntrl, local_rp, mhi_chan);
|
||||
event_quota--;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user