2019-05-19 08:07:45 -04:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
drivers: create a pin control subsystem
This creates a subsystem for handling of pin control devices.
These are devices that control different aspects of package
pins.
Currently it handles pinmuxing, i.e. assigning electronic
functions to groups of pins on primarily PGA and BGA type of
chip packages which are common in embedded systems.
The plan is to also handle other I/O pin control aspects
such as biasing, driving, input properties such as
schmitt-triggering, load capacitance etc within this
subsystem, to remove a lot of ARM arch code as well as
feature-creepy GPIO drivers which are implementing the same
thing over and over again.
This is being done to depopulate the arch/arm/* directory
of such custom drivers and try to abstract the infrastructure
they all need. See the Documentation/pinctrl.txt file that is
part of this patch for more details.
ChangeLog v1->v2:
- Various minor fixes from Joe's and Stephens review comments
- Added a pinmux_config() that can invoke custom configuration
with arbitrary data passed in or out to/from the pinmux driver
ChangeLog v2->v3:
- Renamed subsystem folder to "pinctrl" since we will likely
want to keep other pin control such as biasing in this
subsystem too, so let us keep to something generic even though
we're mainly doing pinmux now.
- As a consequence, register pins as an abstract entity separate
from the pinmux. The muxing functions will claim pins out of the
pin pool and make sure they do not collide. Pins can now be
named by the pinctrl core.
- Converted the pin lookup from a static array into a radix tree,
I agreed with Grant Likely to try to avoid any static allocation
(which is crap for device tree stuff) so I just rewrote this
to be dynamic, just like irq number descriptors. The
platform-wide definition of number of pins goes away - this is
now just the sum total of the pins registered to the subsystem.
- Make sure mappings with only a function name and no device
works properly.
ChangeLog v3->v4:
- Define a number space per controller instead of globally,
Stephen and Grant requested the same thing so now maps need to
define target controller, and the radix tree of pin descriptors
is a property on each pin controller device.
- Add a compulsory pinctrl device entry to the pinctrl mapping
table. This must match the pinctrl device, like "pinctrl.0"
- Split the file core.c in two: core.c and pinmux.c where the
latter carry all pinmux stuff, the core is for generic pin
control, and use local headers to access functionality between
files. It is now possible to implement a "blank" pin controller
without pinmux capabilities. This split will make new additions
like pindrive.c, pinbias.c etc possible for combined drivers
and chunks of functionality which is a GoodThing(TM).
- Rewrite the interaction with the GPIO subsystem - the pin
controller descriptor now handles this by defining an offset
into the GPIO numberspace for its handled pin range. This is
used to look up the apropriate pin controller for a GPIO pin.
Then that specific GPIO range is matched 1-1 for the target
controller instance.
- Fixed a number of review comments from Joe Perches.
- Broke out a header file pinctrl.h for the core pin handling
stuff that will be reused by other stuff than pinmux.
- Fixed some erroneous EXPORT() stuff.
- Remove mispatched U300 Kconfig and Makefile entries
- Fixed a number of review comments from Stephen Warren, not all
of them - still WIP. But I think the new mapping that will
specify which function goes to which pin mux controller address
50% of your concerns (else beat me up).
ChangeLog v4->v5:
- Defined a "position" for each function, so the pin controller now
tracks a function in a certain position, and the pinmux maps define
what position you want the function in. (Feedback from Stephen
Warren and Sascha Hauer).
- Since we now need to request a combined function+position from
the machine mapping table that connect mux settings to drivers,
it was extended with a position field and a name field. The
name field is now used if you e.g. need to switch between two
mux map settings at runtime.
- Switched from a class device to using struct bus_type for this
subsystem. Verified sysfs functionality: seems to work fine.
(Feedback from Arnd Bergmann and Greg Kroah-Hartman)
- Define a per pincontroller list of GPIO ranges from the GPIO
pin space that can be handled by the pin controller. These can
be added one by one at runtime. (Feedback from Barry Song)
- Expanded documentation of regulator_[get|enable|disable|put]
semantics.
- Fixed a number of review comments from Barry Song. (Thanks!)
ChangeLog v5->v6:
- Create an abstract pin group concept that can sort pins into
named and enumerated groups no matter what the use of these
groups may be, one possible usecase is a group of pins being
muxed in or so. The intention is however to also use these
groups for other pin control activities.
- Make it compulsory for pinmux functions to associate with
at least one group, so the abstract pin group concept is used
to define the groups of pins affected by a pinmux function.
The pinmux driver interface has been altered so as to enforce
a function to list applicable groups per function.
- Provide an optional .group entry in the pinmux machine map
so the map can select beteween different available groups
to be used with a certain function.
- Consequent changes all over the place so that e.g. debugfs
present reasonable information about the world.
- Drop the per-pin mux (*config) function in the pinmux_ops
struct - I was afraid that this would start to be used for
things totally unrelated to muxing, we can introduce that to
the generic struct pinctrl_ops if needed. I want to keep
muxing orthogonal to other pin control subjects and not mix
these things up.
ChangeLog v6->v7:
- Make it possible to have several map entries matching the
same device, pin controller and function, but using
a different group, and alter the semantics so that
pinmux_get() will pick all matching map entries, and
store the associated groups in a list. The list will
then be iterated over at pinmux_enable()/pinmux_disable()
and corresponding driver functions called for each
defined group. Notice that you're only allowed to map
multiple *groups* to the same
{ device, pin controller, function } triplet, attempts
to map the same device to multiple pin controllers will
for example fail. This is hopefully the crucial feature
requested by Stephen Warren.
- Add a pinmux hogging field to the pinmux mapping entries,
and enable the pinmux core to hog pinmux map entries.
This currently only works for pinmuxes without assigned
devices as it looks now, but with device trees we can
look up the corresponding struct device * entries when
we register the pinmux driver, and have it hog each
pinmux map in turn, for a simple approach to
non-dynamic pin muxing. This addresses an issue from
Grant Likely that the machine should take care of as
much of the pinmux setup as possible, not the devices.
By supplying a list of hogs, it can now instruct the
core to take care of any static mappings.
- Switch pinmux group retrieveal function to grab an
array of strings representing the groups rather than an
array of unsigned and rewrite accordingly.
- Alter debugfs to show the grouplist handled by each
pinmux. Also add a list of hogs.
- Dynamically allocate a struct pinmux at pinmux_get() and
free it at pinmux_put(), then add these to the global
list of pinmuxes active as we go along.
- Go over the list of pinmux maps at pinmux_get() time
and repeatedly apply matches.
- Retrieve applicable groups per function from the driver
as a string array rather than a unsigned array, then
lookup the enumerators.
- Make the device to pinmux map a singleton - only allow the
mapping table to be registered once and even tag the
registration function with __init so it surely won't be
abused.
- Create a separate debugfs file to view the pinmux map at
runtime.
- Introduce a spin lock to the pin descriptor struct, lock it
when modifying pin status entries. Reported by Stijn Devriendt.
- Fix up the documentation after review from Stephen Warren.
- Let the GPIO ranges give names as const char * instead of some
fixed-length string.
- add a function to unregister GPIO ranges to mirror the
registration function.
- Privatized the struct pinctrl_device and removed it from the
<linux/pinctrl/pinctrl.h> API, the drivers do not need to know
the members of this struct. It is now in the local header
"core.h".
- Rename the concept of "anonymous" mux maps to "system" muxes
and add convenience macros and documentation.
ChangeLog v7->v8:
- Delete the leftover pinmux_config() function from the
<linux/pinctrl/pinmux.h> header.
- Fix a race condition found by Stijn Devriendt in pin_request()
ChangeLog v8->v9:
- Drop the bus_type and the sysfs attributes and all, we're not on
the clear about how this should be used for e.g. userspace
interfaces so let us save this for the future.
- Use the right name in MAINTAINERS, PIN CONTROL rather than
PINMUX
- Don't kfree() the device state holder, let the .remove() callback
handle this.
- Fix up numerous kerneldoc headers to have one line for the function
description and more verbose documentation below the parameters
ChangeLog v9->v10:
- pinctrl: EXPORT_SYMBOL needs export.h, folded in a patch
from Steven Rothwell
- fix pinctrl_register error handling, folded in a patch from
Axel Lin
- Various fixes to documentation text so that it's consistent.
- Removed pointless comment from drivers/Kconfig
- Removed dependency on SYSFS since we removed the bus in
v9.
- Renamed hopelessly abbreviated pctldev_* functions to the
more verbose pinctrl_dev_*
- Drop mutex properly when looking up GPIO ranges
- Return NULL instead of ERR_PTR() errors on registration of
pin controllers, using cast pointers is fragile. We can
live without the detailed error codes for sure.
Cc: Stijn Devriendt <highguy@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-05-02 14:50:54 -04:00
|
|
|
#
|
|
|
|
# PINCTRL infrastructure and drivers
|
|
|
|
#
|
|
|
|
|
2017-10-06 01:08:05 -04:00
|
|
|
menuconfig PINCTRL
|
|
|
|
bool "Pin controllers"
|
drivers: create a pin control subsystem
This creates a subsystem for handling of pin control devices.
These are devices that control different aspects of package
pins.
Currently it handles pinmuxing, i.e. assigning electronic
functions to groups of pins on primarily PGA and BGA type of
chip packages which are common in embedded systems.
The plan is to also handle other I/O pin control aspects
such as biasing, driving, input properties such as
schmitt-triggering, load capacitance etc within this
subsystem, to remove a lot of ARM arch code as well as
feature-creepy GPIO drivers which are implementing the same
thing over and over again.
This is being done to depopulate the arch/arm/* directory
of such custom drivers and try to abstract the infrastructure
they all need. See the Documentation/pinctrl.txt file that is
part of this patch for more details.
ChangeLog v1->v2:
- Various minor fixes from Joe's and Stephens review comments
- Added a pinmux_config() that can invoke custom configuration
with arbitrary data passed in or out to/from the pinmux driver
ChangeLog v2->v3:
- Renamed subsystem folder to "pinctrl" since we will likely
want to keep other pin control such as biasing in this
subsystem too, so let us keep to something generic even though
we're mainly doing pinmux now.
- As a consequence, register pins as an abstract entity separate
from the pinmux. The muxing functions will claim pins out of the
pin pool and make sure they do not collide. Pins can now be
named by the pinctrl core.
- Converted the pin lookup from a static array into a radix tree,
I agreed with Grant Likely to try to avoid any static allocation
(which is crap for device tree stuff) so I just rewrote this
to be dynamic, just like irq number descriptors. The
platform-wide definition of number of pins goes away - this is
now just the sum total of the pins registered to the subsystem.
- Make sure mappings with only a function name and no device
works properly.
ChangeLog v3->v4:
- Define a number space per controller instead of globally,
Stephen and Grant requested the same thing so now maps need to
define target controller, and the radix tree of pin descriptors
is a property on each pin controller device.
- Add a compulsory pinctrl device entry to the pinctrl mapping
table. This must match the pinctrl device, like "pinctrl.0"
- Split the file core.c in two: core.c and pinmux.c where the
latter carry all pinmux stuff, the core is for generic pin
control, and use local headers to access functionality between
files. It is now possible to implement a "blank" pin controller
without pinmux capabilities. This split will make new additions
like pindrive.c, pinbias.c etc possible for combined drivers
and chunks of functionality which is a GoodThing(TM).
- Rewrite the interaction with the GPIO subsystem - the pin
controller descriptor now handles this by defining an offset
into the GPIO numberspace for its handled pin range. This is
used to look up the apropriate pin controller for a GPIO pin.
Then that specific GPIO range is matched 1-1 for the target
controller instance.
- Fixed a number of review comments from Joe Perches.
- Broke out a header file pinctrl.h for the core pin handling
stuff that will be reused by other stuff than pinmux.
- Fixed some erroneous EXPORT() stuff.
- Remove mispatched U300 Kconfig and Makefile entries
- Fixed a number of review comments from Stephen Warren, not all
of them - still WIP. But I think the new mapping that will
specify which function goes to which pin mux controller address
50% of your concerns (else beat me up).
ChangeLog v4->v5:
- Defined a "position" for each function, so the pin controller now
tracks a function in a certain position, and the pinmux maps define
what position you want the function in. (Feedback from Stephen
Warren and Sascha Hauer).
- Since we now need to request a combined function+position from
the machine mapping table that connect mux settings to drivers,
it was extended with a position field and a name field. The
name field is now used if you e.g. need to switch between two
mux map settings at runtime.
- Switched from a class device to using struct bus_type for this
subsystem. Verified sysfs functionality: seems to work fine.
(Feedback from Arnd Bergmann and Greg Kroah-Hartman)
- Define a per pincontroller list of GPIO ranges from the GPIO
pin space that can be handled by the pin controller. These can
be added one by one at runtime. (Feedback from Barry Song)
- Expanded documentation of regulator_[get|enable|disable|put]
semantics.
- Fixed a number of review comments from Barry Song. (Thanks!)
ChangeLog v5->v6:
- Create an abstract pin group concept that can sort pins into
named and enumerated groups no matter what the use of these
groups may be, one possible usecase is a group of pins being
muxed in or so. The intention is however to also use these
groups for other pin control activities.
- Make it compulsory for pinmux functions to associate with
at least one group, so the abstract pin group concept is used
to define the groups of pins affected by a pinmux function.
The pinmux driver interface has been altered so as to enforce
a function to list applicable groups per function.
- Provide an optional .group entry in the pinmux machine map
so the map can select beteween different available groups
to be used with a certain function.
- Consequent changes all over the place so that e.g. debugfs
present reasonable information about the world.
- Drop the per-pin mux (*config) function in the pinmux_ops
struct - I was afraid that this would start to be used for
things totally unrelated to muxing, we can introduce that to
the generic struct pinctrl_ops if needed. I want to keep
muxing orthogonal to other pin control subjects and not mix
these things up.
ChangeLog v6->v7:
- Make it possible to have several map entries matching the
same device, pin controller and function, but using
a different group, and alter the semantics so that
pinmux_get() will pick all matching map entries, and
store the associated groups in a list. The list will
then be iterated over at pinmux_enable()/pinmux_disable()
and corresponding driver functions called for each
defined group. Notice that you're only allowed to map
multiple *groups* to the same
{ device, pin controller, function } triplet, attempts
to map the same device to multiple pin controllers will
for example fail. This is hopefully the crucial feature
requested by Stephen Warren.
- Add a pinmux hogging field to the pinmux mapping entries,
and enable the pinmux core to hog pinmux map entries.
This currently only works for pinmuxes without assigned
devices as it looks now, but with device trees we can
look up the corresponding struct device * entries when
we register the pinmux driver, and have it hog each
pinmux map in turn, for a simple approach to
non-dynamic pin muxing. This addresses an issue from
Grant Likely that the machine should take care of as
much of the pinmux setup as possible, not the devices.
By supplying a list of hogs, it can now instruct the
core to take care of any static mappings.
- Switch pinmux group retrieveal function to grab an
array of strings representing the groups rather than an
array of unsigned and rewrite accordingly.
- Alter debugfs to show the grouplist handled by each
pinmux. Also add a list of hogs.
- Dynamically allocate a struct pinmux at pinmux_get() and
free it at pinmux_put(), then add these to the global
list of pinmuxes active as we go along.
- Go over the list of pinmux maps at pinmux_get() time
and repeatedly apply matches.
- Retrieve applicable groups per function from the driver
as a string array rather than a unsigned array, then
lookup the enumerators.
- Make the device to pinmux map a singleton - only allow the
mapping table to be registered once and even tag the
registration function with __init so it surely won't be
abused.
- Create a separate debugfs file to view the pinmux map at
runtime.
- Introduce a spin lock to the pin descriptor struct, lock it
when modifying pin status entries. Reported by Stijn Devriendt.
- Fix up the documentation after review from Stephen Warren.
- Let the GPIO ranges give names as const char * instead of some
fixed-length string.
- add a function to unregister GPIO ranges to mirror the
registration function.
- Privatized the struct pinctrl_device and removed it from the
<linux/pinctrl/pinctrl.h> API, the drivers do not need to know
the members of this struct. It is now in the local header
"core.h".
- Rename the concept of "anonymous" mux maps to "system" muxes
and add convenience macros and documentation.
ChangeLog v7->v8:
- Delete the leftover pinmux_config() function from the
<linux/pinctrl/pinmux.h> header.
- Fix a race condition found by Stijn Devriendt in pin_request()
ChangeLog v8->v9:
- Drop the bus_type and the sysfs attributes and all, we're not on
the clear about how this should be used for e.g. userspace
interfaces so let us save this for the future.
- Use the right name in MAINTAINERS, PIN CONTROL rather than
PINMUX
- Don't kfree() the device state holder, let the .remove() callback
handle this.
- Fix up numerous kerneldoc headers to have one line for the function
description and more verbose documentation below the parameters
ChangeLog v9->v10:
- pinctrl: EXPORT_SYMBOL needs export.h, folded in a patch
from Steven Rothwell
- fix pinctrl_register error handling, folded in a patch from
Axel Lin
- Various fixes to documentation text so that it's consistent.
- Removed pointless comment from drivers/Kconfig
- Removed dependency on SYSFS since we removed the bus in
v9.
- Renamed hopelessly abbreviated pctldev_* functions to the
more verbose pinctrl_dev_*
- Drop mutex properly when looking up GPIO ranges
- Return NULL instead of ERR_PTR() errors on registration of
pin controllers, using cast pointers is fragile. We can
live without the detailed error codes for sure.
Cc: Stijn Devriendt <highguy@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-05-02 14:50:54 -04:00
|
|
|
|
2017-10-06 01:08:05 -04:00
|
|
|
if PINCTRL
|
2011-11-05 16:28:46 -04:00
|
|
|
|
2016-12-30 09:04:43 -05:00
|
|
|
config GENERIC_PINCTRL_GROUPS
|
2016-12-27 12:20:00 -05:00
|
|
|
bool
|
|
|
|
|
drivers: create a pin control subsystem
This creates a subsystem for handling of pin control devices.
These are devices that control different aspects of package
pins.
Currently it handles pinmuxing, i.e. assigning electronic
functions to groups of pins on primarily PGA and BGA type of
chip packages which are common in embedded systems.
The plan is to also handle other I/O pin control aspects
such as biasing, driving, input properties such as
schmitt-triggering, load capacitance etc within this
subsystem, to remove a lot of ARM arch code as well as
feature-creepy GPIO drivers which are implementing the same
thing over and over again.
This is being done to depopulate the arch/arm/* directory
of such custom drivers and try to abstract the infrastructure
they all need. See the Documentation/pinctrl.txt file that is
part of this patch for more details.
ChangeLog v1->v2:
- Various minor fixes from Joe's and Stephens review comments
- Added a pinmux_config() that can invoke custom configuration
with arbitrary data passed in or out to/from the pinmux driver
ChangeLog v2->v3:
- Renamed subsystem folder to "pinctrl" since we will likely
want to keep other pin control such as biasing in this
subsystem too, so let us keep to something generic even though
we're mainly doing pinmux now.
- As a consequence, register pins as an abstract entity separate
from the pinmux. The muxing functions will claim pins out of the
pin pool and make sure they do not collide. Pins can now be
named by the pinctrl core.
- Converted the pin lookup from a static array into a radix tree,
I agreed with Grant Likely to try to avoid any static allocation
(which is crap for device tree stuff) so I just rewrote this
to be dynamic, just like irq number descriptors. The
platform-wide definition of number of pins goes away - this is
now just the sum total of the pins registered to the subsystem.
- Make sure mappings with only a function name and no device
works properly.
ChangeLog v3->v4:
- Define a number space per controller instead of globally,
Stephen and Grant requested the same thing so now maps need to
define target controller, and the radix tree of pin descriptors
is a property on each pin controller device.
- Add a compulsory pinctrl device entry to the pinctrl mapping
table. This must match the pinctrl device, like "pinctrl.0"
- Split the file core.c in two: core.c and pinmux.c where the
latter carry all pinmux stuff, the core is for generic pin
control, and use local headers to access functionality between
files. It is now possible to implement a "blank" pin controller
without pinmux capabilities. This split will make new additions
like pindrive.c, pinbias.c etc possible for combined drivers
and chunks of functionality which is a GoodThing(TM).
- Rewrite the interaction with the GPIO subsystem - the pin
controller descriptor now handles this by defining an offset
into the GPIO numberspace for its handled pin range. This is
used to look up the apropriate pin controller for a GPIO pin.
Then that specific GPIO range is matched 1-1 for the target
controller instance.
- Fixed a number of review comments from Joe Perches.
- Broke out a header file pinctrl.h for the core pin handling
stuff that will be reused by other stuff than pinmux.
- Fixed some erroneous EXPORT() stuff.
- Remove mispatched U300 Kconfig and Makefile entries
- Fixed a number of review comments from Stephen Warren, not all
of them - still WIP. But I think the new mapping that will
specify which function goes to which pin mux controller address
50% of your concerns (else beat me up).
ChangeLog v4->v5:
- Defined a "position" for each function, so the pin controller now
tracks a function in a certain position, and the pinmux maps define
what position you want the function in. (Feedback from Stephen
Warren and Sascha Hauer).
- Since we now need to request a combined function+position from
the machine mapping table that connect mux settings to drivers,
it was extended with a position field and a name field. The
name field is now used if you e.g. need to switch between two
mux map settings at runtime.
- Switched from a class device to using struct bus_type for this
subsystem. Verified sysfs functionality: seems to work fine.
(Feedback from Arnd Bergmann and Greg Kroah-Hartman)
- Define a per pincontroller list of GPIO ranges from the GPIO
pin space that can be handled by the pin controller. These can
be added one by one at runtime. (Feedback from Barry Song)
- Expanded documentation of regulator_[get|enable|disable|put]
semantics.
- Fixed a number of review comments from Barry Song. (Thanks!)
ChangeLog v5->v6:
- Create an abstract pin group concept that can sort pins into
named and enumerated groups no matter what the use of these
groups may be, one possible usecase is a group of pins being
muxed in or so. The intention is however to also use these
groups for other pin control activities.
- Make it compulsory for pinmux functions to associate with
at least one group, so the abstract pin group concept is used
to define the groups of pins affected by a pinmux function.
The pinmux driver interface has been altered so as to enforce
a function to list applicable groups per function.
- Provide an optional .group entry in the pinmux machine map
so the map can select beteween different available groups
to be used with a certain function.
- Consequent changes all over the place so that e.g. debugfs
present reasonable information about the world.
- Drop the per-pin mux (*config) function in the pinmux_ops
struct - I was afraid that this would start to be used for
things totally unrelated to muxing, we can introduce that to
the generic struct pinctrl_ops if needed. I want to keep
muxing orthogonal to other pin control subjects and not mix
these things up.
ChangeLog v6->v7:
- Make it possible to have several map entries matching the
same device, pin controller and function, but using
a different group, and alter the semantics so that
pinmux_get() will pick all matching map entries, and
store the associated groups in a list. The list will
then be iterated over at pinmux_enable()/pinmux_disable()
and corresponding driver functions called for each
defined group. Notice that you're only allowed to map
multiple *groups* to the same
{ device, pin controller, function } triplet, attempts
to map the same device to multiple pin controllers will
for example fail. This is hopefully the crucial feature
requested by Stephen Warren.
- Add a pinmux hogging field to the pinmux mapping entries,
and enable the pinmux core to hog pinmux map entries.
This currently only works for pinmuxes without assigned
devices as it looks now, but with device trees we can
look up the corresponding struct device * entries when
we register the pinmux driver, and have it hog each
pinmux map in turn, for a simple approach to
non-dynamic pin muxing. This addresses an issue from
Grant Likely that the machine should take care of as
much of the pinmux setup as possible, not the devices.
By supplying a list of hogs, it can now instruct the
core to take care of any static mappings.
- Switch pinmux group retrieveal function to grab an
array of strings representing the groups rather than an
array of unsigned and rewrite accordingly.
- Alter debugfs to show the grouplist handled by each
pinmux. Also add a list of hogs.
- Dynamically allocate a struct pinmux at pinmux_get() and
free it at pinmux_put(), then add these to the global
list of pinmuxes active as we go along.
- Go over the list of pinmux maps at pinmux_get() time
and repeatedly apply matches.
- Retrieve applicable groups per function from the driver
as a string array rather than a unsigned array, then
lookup the enumerators.
- Make the device to pinmux map a singleton - only allow the
mapping table to be registered once and even tag the
registration function with __init so it surely won't be
abused.
- Create a separate debugfs file to view the pinmux map at
runtime.
- Introduce a spin lock to the pin descriptor struct, lock it
when modifying pin status entries. Reported by Stijn Devriendt.
- Fix up the documentation after review from Stephen Warren.
- Let the GPIO ranges give names as const char * instead of some
fixed-length string.
- add a function to unregister GPIO ranges to mirror the
registration function.
- Privatized the struct pinctrl_device and removed it from the
<linux/pinctrl/pinctrl.h> API, the drivers do not need to know
the members of this struct. It is now in the local header
"core.h".
- Rename the concept of "anonymous" mux maps to "system" muxes
and add convenience macros and documentation.
ChangeLog v7->v8:
- Delete the leftover pinmux_config() function from the
<linux/pinctrl/pinmux.h> header.
- Fix a race condition found by Stijn Devriendt in pin_request()
ChangeLog v8->v9:
- Drop the bus_type and the sysfs attributes and all, we're not on
the clear about how this should be used for e.g. userspace
interfaces so let us save this for the future.
- Use the right name in MAINTAINERS, PIN CONTROL rather than
PINMUX
- Don't kfree() the device state holder, let the .remove() callback
handle this.
- Fix up numerous kerneldoc headers to have one line for the function
description and more verbose documentation below the parameters
ChangeLog v9->v10:
- pinctrl: EXPORT_SYMBOL needs export.h, folded in a patch
from Steven Rothwell
- fix pinctrl_register error handling, folded in a patch from
Axel Lin
- Various fixes to documentation text so that it's consistent.
- Removed pointless comment from drivers/Kconfig
- Removed dependency on SYSFS since we removed the bus in
v9.
- Renamed hopelessly abbreviated pctldev_* functions to the
more verbose pinctrl_dev_*
- Drop mutex properly when looking up GPIO ranges
- Return NULL instead of ERR_PTR() errors on registration of
pin controllers, using cast pointers is fragile. We can
live without the detailed error codes for sure.
Cc: Stijn Devriendt <highguy@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-05-02 14:50:54 -04:00
|
|
|
config PINMUX
|
2014-06-03 04:02:36 -04:00
|
|
|
bool "Support pin multiplexing controllers" if COMPILE_TEST
|
pinctrl: add a pin config interface
This add per-pin and per-group pin config interfaces for biasing,
driving and other such electronic properties. The details of passed
configurations are passed in an opaque unsigned long which may be
dereferences to integer types, structs or lists on either side
of the configuration interface.
ChangeLog v1->v2:
- Clear split of terminology: we now have pin controllers, and
those may support two interfaces using vtables: pin
multiplexing and pin configuration.
- Break out pin configuration to its own C file, controllers may
implement only config without mux, and vice versa, so keep each
sub-functionality of pin controllers separate. Introduce
CONFIG_PINCONF in Kconfig.
- Implement some core logic around pin configuration in the
pinconf.c file.
- Remove UNKNOWN config states, these were just surplus baggage.
- Remove FLOAT config state - HIGH_IMPEDANCE should be enough for
everyone.
- PIN_CONFIG_POWER_SOURCE added to handle switching the power
supply for the pin logic between different sources
- Explicit DISABLE config enums to turn schmitt-trigger,
wakeup etc OFF.
- Update documentation to reflect all the recent reasoning.
ChangeLog v2->v3:
- Twist API around to pass around arrays of config tuples instead
of (param, value) pairs everywhere.
- Explicit drive strength semantics for push/pull and similar
drive modes, this shall be the number of drive stages vs
nominal load impedance, which should match the actual
electronics used in push/pull CMOS or TTY totempoles.
- Drop load capacitance configuration - I probably don't know
what I'm doing here so leave it out.
- Drop PIN_CONFIG_INPUT_SCHMITT_OFF, instead the argument zero to
PIN_CONFIG_INPUT_SCHMITT turns schmitt trigger off.
- Drop PIN_CONFIG_NORMAL_POWER_MODE and have a well defined
argument to PIN_CONFIG_LOW_POWER_MODE to get out of it instead.
- Drop PIN_CONFIG_WAKEUP_ENABLE/DISABLE and just use
PIN_CONFIG_WAKEUP with defined value zero to turn wakeup off.
- Add PIN_CONFIG_INPUT_DEBOUNCE for configuring debounce time
on input lines.
- Fix a bug when we tried to configure pins for pin controllers
without pinconf support.
- Initialized debugfs properly so it works.
- Initialize the mutex properly and lock around config tampering
sections.
- Check the return value from get_initial_config() properly.
ChangeLog v3->v4:
- Export the pin_config_get(), pin_config_set() and
pin_config_group() functions.
- Drop the entire concept of just getting initial config and
keeping track of pin states internally, instead ask the pins
what state they are in. Previous idea was plain wrong, if the
device cannot keep track of its state, the driver should do
it.
- Drop the generic configuration layout, it seems this impose
too much restriction on some pin controllers, so let them do
things the way they want and split off support for generic
config as an optional add-on.
ChangeLog v4->v5:
- Introduce two symmetric driver calls for group configuration,
.pin_config_group_[get|set] and corresponding external calls.
- Remove generic semantic meanings of return values from config
calls, these belong in the generic config patch. Just pass the
return value through instead.
- Add a debugfs entry "pinconf-groups" to read status from group
configuration only, also slam in a per-group debug callback in
the pinconf_ops so custom drivers can display something
meaningful for their pins.
- Fix some dangling newline.
- Drop dangling #else clause.
- Update documentation to match the above.
ChangeLog v5->v6:
- Change to using a pin name as parameter for the
[get|set]_config() functions, as suggested by Stephen Warren.
This is more natural as names will be what a developer has
access to in written documentation etc.
ChangeLog v6->v7:
- Refactor out by-pin and by-name get/set functions, only expose
the by-name functions externally, expose the by-pin functions
internally.
- Show supported pin control functionality in the debugfs
pinctrl-devices file.
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-10-19 12:14:33 -04:00
|
|
|
|
2016-12-27 12:20:01 -05:00
|
|
|
config GENERIC_PINMUX_FUNCTIONS
|
|
|
|
bool
|
|
|
|
select PINMUX
|
|
|
|
|
pinctrl: add a pin config interface
This add per-pin and per-group pin config interfaces for biasing,
driving and other such electronic properties. The details of passed
configurations are passed in an opaque unsigned long which may be
dereferences to integer types, structs or lists on either side
of the configuration interface.
ChangeLog v1->v2:
- Clear split of terminology: we now have pin controllers, and
those may support two interfaces using vtables: pin
multiplexing and pin configuration.
- Break out pin configuration to its own C file, controllers may
implement only config without mux, and vice versa, so keep each
sub-functionality of pin controllers separate. Introduce
CONFIG_PINCONF in Kconfig.
- Implement some core logic around pin configuration in the
pinconf.c file.
- Remove UNKNOWN config states, these were just surplus baggage.
- Remove FLOAT config state - HIGH_IMPEDANCE should be enough for
everyone.
- PIN_CONFIG_POWER_SOURCE added to handle switching the power
supply for the pin logic between different sources
- Explicit DISABLE config enums to turn schmitt-trigger,
wakeup etc OFF.
- Update documentation to reflect all the recent reasoning.
ChangeLog v2->v3:
- Twist API around to pass around arrays of config tuples instead
of (param, value) pairs everywhere.
- Explicit drive strength semantics for push/pull and similar
drive modes, this shall be the number of drive stages vs
nominal load impedance, which should match the actual
electronics used in push/pull CMOS or TTY totempoles.
- Drop load capacitance configuration - I probably don't know
what I'm doing here so leave it out.
- Drop PIN_CONFIG_INPUT_SCHMITT_OFF, instead the argument zero to
PIN_CONFIG_INPUT_SCHMITT turns schmitt trigger off.
- Drop PIN_CONFIG_NORMAL_POWER_MODE and have a well defined
argument to PIN_CONFIG_LOW_POWER_MODE to get out of it instead.
- Drop PIN_CONFIG_WAKEUP_ENABLE/DISABLE and just use
PIN_CONFIG_WAKEUP with defined value zero to turn wakeup off.
- Add PIN_CONFIG_INPUT_DEBOUNCE for configuring debounce time
on input lines.
- Fix a bug when we tried to configure pins for pin controllers
without pinconf support.
- Initialized debugfs properly so it works.
- Initialize the mutex properly and lock around config tampering
sections.
- Check the return value from get_initial_config() properly.
ChangeLog v3->v4:
- Export the pin_config_get(), pin_config_set() and
pin_config_group() functions.
- Drop the entire concept of just getting initial config and
keeping track of pin states internally, instead ask the pins
what state they are in. Previous idea was plain wrong, if the
device cannot keep track of its state, the driver should do
it.
- Drop the generic configuration layout, it seems this impose
too much restriction on some pin controllers, so let them do
things the way they want and split off support for generic
config as an optional add-on.
ChangeLog v4->v5:
- Introduce two symmetric driver calls for group configuration,
.pin_config_group_[get|set] and corresponding external calls.
- Remove generic semantic meanings of return values from config
calls, these belong in the generic config patch. Just pass the
return value through instead.
- Add a debugfs entry "pinconf-groups" to read status from group
configuration only, also slam in a per-group debug callback in
the pinconf_ops so custom drivers can display something
meaningful for their pins.
- Fix some dangling newline.
- Drop dangling #else clause.
- Update documentation to match the above.
ChangeLog v5->v6:
- Change to using a pin name as parameter for the
[get|set]_config() functions, as suggested by Stephen Warren.
This is more natural as names will be what a developer has
access to in written documentation etc.
ChangeLog v6->v7:
- Refactor out by-pin and by-name get/set functions, only expose
the by-name functions externally, expose the by-pin functions
internally.
- Show supported pin control functionality in the debugfs
pinctrl-devices file.
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-10-19 12:14:33 -04:00
|
|
|
config PINCONF
|
2014-06-03 04:02:36 -04:00
|
|
|
bool "Support pin configuration controllers" if COMPILE_TEST
|
drivers: create a pin control subsystem
This creates a subsystem for handling of pin control devices.
These are devices that control different aspects of package
pins.
Currently it handles pinmuxing, i.e. assigning electronic
functions to groups of pins on primarily PGA and BGA type of
chip packages which are common in embedded systems.
The plan is to also handle other I/O pin control aspects
such as biasing, driving, input properties such as
schmitt-triggering, load capacitance etc within this
subsystem, to remove a lot of ARM arch code as well as
feature-creepy GPIO drivers which are implementing the same
thing over and over again.
This is being done to depopulate the arch/arm/* directory
of such custom drivers and try to abstract the infrastructure
they all need. See the Documentation/pinctrl.txt file that is
part of this patch for more details.
ChangeLog v1->v2:
- Various minor fixes from Joe's and Stephens review comments
- Added a pinmux_config() that can invoke custom configuration
with arbitrary data passed in or out to/from the pinmux driver
ChangeLog v2->v3:
- Renamed subsystem folder to "pinctrl" since we will likely
want to keep other pin control such as biasing in this
subsystem too, so let us keep to something generic even though
we're mainly doing pinmux now.
- As a consequence, register pins as an abstract entity separate
from the pinmux. The muxing functions will claim pins out of the
pin pool and make sure they do not collide. Pins can now be
named by the pinctrl core.
- Converted the pin lookup from a static array into a radix tree,
I agreed with Grant Likely to try to avoid any static allocation
(which is crap for device tree stuff) so I just rewrote this
to be dynamic, just like irq number descriptors. The
platform-wide definition of number of pins goes away - this is
now just the sum total of the pins registered to the subsystem.
- Make sure mappings with only a function name and no device
works properly.
ChangeLog v3->v4:
- Define a number space per controller instead of globally,
Stephen and Grant requested the same thing so now maps need to
define target controller, and the radix tree of pin descriptors
is a property on each pin controller device.
- Add a compulsory pinctrl device entry to the pinctrl mapping
table. This must match the pinctrl device, like "pinctrl.0"
- Split the file core.c in two: core.c and pinmux.c where the
latter carry all pinmux stuff, the core is for generic pin
control, and use local headers to access functionality between
files. It is now possible to implement a "blank" pin controller
without pinmux capabilities. This split will make new additions
like pindrive.c, pinbias.c etc possible for combined drivers
and chunks of functionality which is a GoodThing(TM).
- Rewrite the interaction with the GPIO subsystem - the pin
controller descriptor now handles this by defining an offset
into the GPIO numberspace for its handled pin range. This is
used to look up the apropriate pin controller for a GPIO pin.
Then that specific GPIO range is matched 1-1 for the target
controller instance.
- Fixed a number of review comments from Joe Perches.
- Broke out a header file pinctrl.h for the core pin handling
stuff that will be reused by other stuff than pinmux.
- Fixed some erroneous EXPORT() stuff.
- Remove mispatched U300 Kconfig and Makefile entries
- Fixed a number of review comments from Stephen Warren, not all
of them - still WIP. But I think the new mapping that will
specify which function goes to which pin mux controller address
50% of your concerns (else beat me up).
ChangeLog v4->v5:
- Defined a "position" for each function, so the pin controller now
tracks a function in a certain position, and the pinmux maps define
what position you want the function in. (Feedback from Stephen
Warren and Sascha Hauer).
- Since we now need to request a combined function+position from
the machine mapping table that connect mux settings to drivers,
it was extended with a position field and a name field. The
name field is now used if you e.g. need to switch between two
mux map settings at runtime.
- Switched from a class device to using struct bus_type for this
subsystem. Verified sysfs functionality: seems to work fine.
(Feedback from Arnd Bergmann and Greg Kroah-Hartman)
- Define a per pincontroller list of GPIO ranges from the GPIO
pin space that can be handled by the pin controller. These can
be added one by one at runtime. (Feedback from Barry Song)
- Expanded documentation of regulator_[get|enable|disable|put]
semantics.
- Fixed a number of review comments from Barry Song. (Thanks!)
ChangeLog v5->v6:
- Create an abstract pin group concept that can sort pins into
named and enumerated groups no matter what the use of these
groups may be, one possible usecase is a group of pins being
muxed in or so. The intention is however to also use these
groups for other pin control activities.
- Make it compulsory for pinmux functions to associate with
at least one group, so the abstract pin group concept is used
to define the groups of pins affected by a pinmux function.
The pinmux driver interface has been altered so as to enforce
a function to list applicable groups per function.
- Provide an optional .group entry in the pinmux machine map
so the map can select beteween different available groups
to be used with a certain function.
- Consequent changes all over the place so that e.g. debugfs
present reasonable information about the world.
- Drop the per-pin mux (*config) function in the pinmux_ops
struct - I was afraid that this would start to be used for
things totally unrelated to muxing, we can introduce that to
the generic struct pinctrl_ops if needed. I want to keep
muxing orthogonal to other pin control subjects and not mix
these things up.
ChangeLog v6->v7:
- Make it possible to have several map entries matching the
same device, pin controller and function, but using
a different group, and alter the semantics so that
pinmux_get() will pick all matching map entries, and
store the associated groups in a list. The list will
then be iterated over at pinmux_enable()/pinmux_disable()
and corresponding driver functions called for each
defined group. Notice that you're only allowed to map
multiple *groups* to the same
{ device, pin controller, function } triplet, attempts
to map the same device to multiple pin controllers will
for example fail. This is hopefully the crucial feature
requested by Stephen Warren.
- Add a pinmux hogging field to the pinmux mapping entries,
and enable the pinmux core to hog pinmux map entries.
This currently only works for pinmuxes without assigned
devices as it looks now, but with device trees we can
look up the corresponding struct device * entries when
we register the pinmux driver, and have it hog each
pinmux map in turn, for a simple approach to
non-dynamic pin muxing. This addresses an issue from
Grant Likely that the machine should take care of as
much of the pinmux setup as possible, not the devices.
By supplying a list of hogs, it can now instruct the
core to take care of any static mappings.
- Switch pinmux group retrieveal function to grab an
array of strings representing the groups rather than an
array of unsigned and rewrite accordingly.
- Alter debugfs to show the grouplist handled by each
pinmux. Also add a list of hogs.
- Dynamically allocate a struct pinmux at pinmux_get() and
free it at pinmux_put(), then add these to the global
list of pinmuxes active as we go along.
- Go over the list of pinmux maps at pinmux_get() time
and repeatedly apply matches.
- Retrieve applicable groups per function from the driver
as a string array rather than a unsigned array, then
lookup the enumerators.
- Make the device to pinmux map a singleton - only allow the
mapping table to be registered once and even tag the
registration function with __init so it surely won't be
abused.
- Create a separate debugfs file to view the pinmux map at
runtime.
- Introduce a spin lock to the pin descriptor struct, lock it
when modifying pin status entries. Reported by Stijn Devriendt.
- Fix up the documentation after review from Stephen Warren.
- Let the GPIO ranges give names as const char * instead of some
fixed-length string.
- add a function to unregister GPIO ranges to mirror the
registration function.
- Privatized the struct pinctrl_device and removed it from the
<linux/pinctrl/pinctrl.h> API, the drivers do not need to know
the members of this struct. It is now in the local header
"core.h".
- Rename the concept of "anonymous" mux maps to "system" muxes
and add convenience macros and documentation.
ChangeLog v7->v8:
- Delete the leftover pinmux_config() function from the
<linux/pinctrl/pinmux.h> header.
- Fix a race condition found by Stijn Devriendt in pin_request()
ChangeLog v8->v9:
- Drop the bus_type and the sysfs attributes and all, we're not on
the clear about how this should be used for e.g. userspace
interfaces so let us save this for the future.
- Use the right name in MAINTAINERS, PIN CONTROL rather than
PINMUX
- Don't kfree() the device state holder, let the .remove() callback
handle this.
- Fix up numerous kerneldoc headers to have one line for the function
description and more verbose documentation below the parameters
ChangeLog v9->v10:
- pinctrl: EXPORT_SYMBOL needs export.h, folded in a patch
from Steven Rothwell
- fix pinctrl_register error handling, folded in a patch from
Axel Lin
- Various fixes to documentation text so that it's consistent.
- Removed pointless comment from drivers/Kconfig
- Removed dependency on SYSFS since we removed the bus in
v9.
- Renamed hopelessly abbreviated pctldev_* functions to the
more verbose pinctrl_dev_*
- Drop mutex properly when looking up GPIO ranges
- Return NULL instead of ERR_PTR() errors on registration of
pin controllers, using cast pointers is fragile. We can
live without the detailed error codes for sure.
Cc: Stijn Devriendt <highguy@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-05-02 14:50:54 -04:00
|
|
|
|
2011-11-24 12:27:15 -05:00
|
|
|
config GENERIC_PINCONF
|
|
|
|
bool
|
|
|
|
select PINCONF
|
|
|
|
|
drivers: create a pin control subsystem
This creates a subsystem for handling of pin control devices.
These are devices that control different aspects of package
pins.
Currently it handles pinmuxing, i.e. assigning electronic
functions to groups of pins on primarily PGA and BGA type of
chip packages which are common in embedded systems.
The plan is to also handle other I/O pin control aspects
such as biasing, driving, input properties such as
schmitt-triggering, load capacitance etc within this
subsystem, to remove a lot of ARM arch code as well as
feature-creepy GPIO drivers which are implementing the same
thing over and over again.
This is being done to depopulate the arch/arm/* directory
of such custom drivers and try to abstract the infrastructure
they all need. See the Documentation/pinctrl.txt file that is
part of this patch for more details.
ChangeLog v1->v2:
- Various minor fixes from Joe's and Stephens review comments
- Added a pinmux_config() that can invoke custom configuration
with arbitrary data passed in or out to/from the pinmux driver
ChangeLog v2->v3:
- Renamed subsystem folder to "pinctrl" since we will likely
want to keep other pin control such as biasing in this
subsystem too, so let us keep to something generic even though
we're mainly doing pinmux now.
- As a consequence, register pins as an abstract entity separate
from the pinmux. The muxing functions will claim pins out of the
pin pool and make sure they do not collide. Pins can now be
named by the pinctrl core.
- Converted the pin lookup from a static array into a radix tree,
I agreed with Grant Likely to try to avoid any static allocation
(which is crap for device tree stuff) so I just rewrote this
to be dynamic, just like irq number descriptors. The
platform-wide definition of number of pins goes away - this is
now just the sum total of the pins registered to the subsystem.
- Make sure mappings with only a function name and no device
works properly.
ChangeLog v3->v4:
- Define a number space per controller instead of globally,
Stephen and Grant requested the same thing so now maps need to
define target controller, and the radix tree of pin descriptors
is a property on each pin controller device.
- Add a compulsory pinctrl device entry to the pinctrl mapping
table. This must match the pinctrl device, like "pinctrl.0"
- Split the file core.c in two: core.c and pinmux.c where the
latter carry all pinmux stuff, the core is for generic pin
control, and use local headers to access functionality between
files. It is now possible to implement a "blank" pin controller
without pinmux capabilities. This split will make new additions
like pindrive.c, pinbias.c etc possible for combined drivers
and chunks of functionality which is a GoodThing(TM).
- Rewrite the interaction with the GPIO subsystem - the pin
controller descriptor now handles this by defining an offset
into the GPIO numberspace for its handled pin range. This is
used to look up the apropriate pin controller for a GPIO pin.
Then that specific GPIO range is matched 1-1 for the target
controller instance.
- Fixed a number of review comments from Joe Perches.
- Broke out a header file pinctrl.h for the core pin handling
stuff that will be reused by other stuff than pinmux.
- Fixed some erroneous EXPORT() stuff.
- Remove mispatched U300 Kconfig and Makefile entries
- Fixed a number of review comments from Stephen Warren, not all
of them - still WIP. But I think the new mapping that will
specify which function goes to which pin mux controller address
50% of your concerns (else beat me up).
ChangeLog v4->v5:
- Defined a "position" for each function, so the pin controller now
tracks a function in a certain position, and the pinmux maps define
what position you want the function in. (Feedback from Stephen
Warren and Sascha Hauer).
- Since we now need to request a combined function+position from
the machine mapping table that connect mux settings to drivers,
it was extended with a position field and a name field. The
name field is now used if you e.g. need to switch between two
mux map settings at runtime.
- Switched from a class device to using struct bus_type for this
subsystem. Verified sysfs functionality: seems to work fine.
(Feedback from Arnd Bergmann and Greg Kroah-Hartman)
- Define a per pincontroller list of GPIO ranges from the GPIO
pin space that can be handled by the pin controller. These can
be added one by one at runtime. (Feedback from Barry Song)
- Expanded documentation of regulator_[get|enable|disable|put]
semantics.
- Fixed a number of review comments from Barry Song. (Thanks!)
ChangeLog v5->v6:
- Create an abstract pin group concept that can sort pins into
named and enumerated groups no matter what the use of these
groups may be, one possible usecase is a group of pins being
muxed in or so. The intention is however to also use these
groups for other pin control activities.
- Make it compulsory for pinmux functions to associate with
at least one group, so the abstract pin group concept is used
to define the groups of pins affected by a pinmux function.
The pinmux driver interface has been altered so as to enforce
a function to list applicable groups per function.
- Provide an optional .group entry in the pinmux machine map
so the map can select beteween different available groups
to be used with a certain function.
- Consequent changes all over the place so that e.g. debugfs
present reasonable information about the world.
- Drop the per-pin mux (*config) function in the pinmux_ops
struct - I was afraid that this would start to be used for
things totally unrelated to muxing, we can introduce that to
the generic struct pinctrl_ops if needed. I want to keep
muxing orthogonal to other pin control subjects and not mix
these things up.
ChangeLog v6->v7:
- Make it possible to have several map entries matching the
same device, pin controller and function, but using
a different group, and alter the semantics so that
pinmux_get() will pick all matching map entries, and
store the associated groups in a list. The list will
then be iterated over at pinmux_enable()/pinmux_disable()
and corresponding driver functions called for each
defined group. Notice that you're only allowed to map
multiple *groups* to the same
{ device, pin controller, function } triplet, attempts
to map the same device to multiple pin controllers will
for example fail. This is hopefully the crucial feature
requested by Stephen Warren.
- Add a pinmux hogging field to the pinmux mapping entries,
and enable the pinmux core to hog pinmux map entries.
This currently only works for pinmuxes without assigned
devices as it looks now, but with device trees we can
look up the corresponding struct device * entries when
we register the pinmux driver, and have it hog each
pinmux map in turn, for a simple approach to
non-dynamic pin muxing. This addresses an issue from
Grant Likely that the machine should take care of as
much of the pinmux setup as possible, not the devices.
By supplying a list of hogs, it can now instruct the
core to take care of any static mappings.
- Switch pinmux group retrieveal function to grab an
array of strings representing the groups rather than an
array of unsigned and rewrite accordingly.
- Alter debugfs to show the grouplist handled by each
pinmux. Also add a list of hogs.
- Dynamically allocate a struct pinmux at pinmux_get() and
free it at pinmux_put(), then add these to the global
list of pinmuxes active as we go along.
- Go over the list of pinmux maps at pinmux_get() time
and repeatedly apply matches.
- Retrieve applicable groups per function from the driver
as a string array rather than a unsigned array, then
lookup the enumerators.
- Make the device to pinmux map a singleton - only allow the
mapping table to be registered once and even tag the
registration function with __init so it surely won't be
abused.
- Create a separate debugfs file to view the pinmux map at
runtime.
- Introduce a spin lock to the pin descriptor struct, lock it
when modifying pin status entries. Reported by Stijn Devriendt.
- Fix up the documentation after review from Stephen Warren.
- Let the GPIO ranges give names as const char * instead of some
fixed-length string.
- add a function to unregister GPIO ranges to mirror the
registration function.
- Privatized the struct pinctrl_device and removed it from the
<linux/pinctrl/pinctrl.h> API, the drivers do not need to know
the members of this struct. It is now in the local header
"core.h".
- Rename the concept of "anonymous" mux maps to "system" muxes
and add convenience macros and documentation.
ChangeLog v7->v8:
- Delete the leftover pinmux_config() function from the
<linux/pinctrl/pinmux.h> header.
- Fix a race condition found by Stijn Devriendt in pin_request()
ChangeLog v8->v9:
- Drop the bus_type and the sysfs attributes and all, we're not on
the clear about how this should be used for e.g. userspace
interfaces so let us save this for the future.
- Use the right name in MAINTAINERS, PIN CONTROL rather than
PINMUX
- Don't kfree() the device state holder, let the .remove() callback
handle this.
- Fix up numerous kerneldoc headers to have one line for the function
description and more verbose documentation below the parameters
ChangeLog v9->v10:
- pinctrl: EXPORT_SYMBOL needs export.h, folded in a patch
from Steven Rothwell
- fix pinctrl_register error handling, folded in a patch from
Axel Lin
- Various fixes to documentation text so that it's consistent.
- Removed pointless comment from drivers/Kconfig
- Removed dependency on SYSFS since we removed the bus in
v9.
- Renamed hopelessly abbreviated pctldev_* functions to the
more verbose pinctrl_dev_*
- Drop mutex properly when looking up GPIO ranges
- Return NULL instead of ERR_PTR() errors on registration of
pin controllers, using cast pointers is fragile. We can
live without the detailed error codes for sure.
Cc: Stijn Devriendt <highguy@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Russell King <linux@arm.linux.org.uk>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Barry Song <21cnbao@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-05-02 14:50:54 -04:00
|
|
|
config DEBUG_PINCTRL
|
|
|
|
bool "Debug PINCTRL calls"
|
|
|
|
depends on DEBUG_KERNEL
|
|
|
|
help
|
|
|
|
Say Y here to add some extra checks and diagnostics to PINCTRL calls.
|
|
|
|
|
2017-04-03 08:47:04 -04:00
|
|
|
config PINCTRL_ARTPEC6
|
|
|
|
bool "Axis ARTPEC-6 pin controller driver"
|
|
|
|
depends on MACH_ARTPEC6
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
This is the driver for the Axis ARTPEC-6 pin controller. This driver
|
|
|
|
supports pin function multiplexing as well as pin bias and drive
|
|
|
|
strength configuration. Device tree integration instructions can be
|
|
|
|
found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
|
|
|
|
|
2013-10-02 11:50:29 -04:00
|
|
|
config PINCTRL_AS3722
|
2016-06-13 17:10:22 -04:00
|
|
|
tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
|
2013-10-02 11:50:29 -04:00
|
|
|
depends on MFD_AS3722 && GPIOLIB
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
AS3722 device supports the configuration of GPIO pins for different
|
|
|
|
functionality. This driver supports the pinmux, push-pull and
|
|
|
|
open drain configuration for the GPIO pins of AS3722 devices. It also
|
|
|
|
supports the GPIO functionality through gpiolib.
|
|
|
|
|
2017-12-05 09:46:40 -05:00
|
|
|
config PINCTRL_AXP209
|
|
|
|
tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
|
|
|
|
depends on MFD_AXP20X
|
2017-12-14 04:43:35 -05:00
|
|
|
depends on OF
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GPIOLIB
|
2017-12-05 09:46:40 -05:00
|
|
|
help
|
|
|
|
AXP PMICs provides multiple GPIOs that can be muxed for different
|
|
|
|
functions. This driver bundles a pinctrl driver to select the function
|
|
|
|
muxing and a GPIO driver to handle the GPIO when the GPIO function is
|
|
|
|
selected.
|
|
|
|
Say yes to enable pinctrl and GPIO support for the AXP209 PMIC
|
|
|
|
|
2012-07-12 11:35:02 -04:00
|
|
|
config PINCTRL_AT91
|
|
|
|
bool "AT91 pinctrl driver"
|
|
|
|
depends on OF
|
|
|
|
depends on ARCH_AT91
|
|
|
|
select PINMUX
|
|
|
|
select PINCONF
|
2014-04-15 16:09:41 -04:00
|
|
|
select GPIOLIB
|
|
|
|
select OF_GPIO
|
|
|
|
select GPIOLIB_IRQCHIP
|
2012-07-12 11:35:02 -04:00
|
|
|
help
|
|
|
|
Say Y here to enable the at91 pinctrl driver
|
|
|
|
|
2015-09-16 11:36:57 -04:00
|
|
|
config PINCTRL_AT91PIO4
|
|
|
|
bool "AT91 PIO4 pinctrl driver"
|
|
|
|
depends on OF
|
|
|
|
depends on ARCH_AT91
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GPIOLIB
|
|
|
|
select GPIOLIB_IRQCHIP
|
|
|
|
select OF_GPIO
|
|
|
|
help
|
|
|
|
Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
|
|
|
|
controller available on sama5d2 SoC.
|
|
|
|
|
2015-03-10 03:02:19 -04:00
|
|
|
config PINCTRL_AMD
|
2016-02-11 06:06:37 -05:00
|
|
|
tristate "AMD GPIO pin control"
|
2017-11-13 05:04:27 -05:00
|
|
|
depends on HAS_IOMEM
|
2017-10-11 06:04:35 -04:00
|
|
|
select GPIOLIB
|
2015-03-10 03:02:19 -04:00
|
|
|
select GPIOLIB_IRQCHIP
|
2017-09-26 09:51:28 -04:00
|
|
|
select PINMUX
|
2015-03-10 03:02:19 -04:00
|
|
|
select PINCONF
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
driver for memory mapped GPIO functionality on AMD platforms
|
|
|
|
(x86 or arm).Most pins are usually muxed to some other
|
|
|
|
functionality by firmware,so only a small amount is available
|
|
|
|
for gpio use.
|
|
|
|
|
|
|
|
Requires ACPI/FDT device enumeration code to set up a platform
|
|
|
|
device.
|
|
|
|
|
2019-04-24 08:02:23 -04:00
|
|
|
config PINCTRL_BM1880
|
|
|
|
bool "Bitmain BM1880 Pinctrl driver"
|
2019-04-25 04:32:24 -04:00
|
|
|
depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
|
|
|
|
default ARCH_BITMAIN
|
2019-04-24 08:02:23 -04:00
|
|
|
select PINMUX
|
|
|
|
help
|
|
|
|
Pinctrl driver for Bitmain BM1880 SoC.
|
|
|
|
|
2016-11-28 11:40:25 -05:00
|
|
|
config PINCTRL_DA850_PUPD
|
|
|
|
tristate "TI DA850/OMAP-L138/AM18XX pullup/pulldown groups"
|
|
|
|
depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
|
|
|
|
select PINCONF
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
|
|
|
|
pullup/pulldown pin groups.
|
|
|
|
|
2015-05-05 06:55:10 -04:00
|
|
|
config PINCTRL_DIGICOLOR
|
|
|
|
bool
|
|
|
|
depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
|
2012-08-28 06:44:59 -04:00
|
|
|
config PINCTRL_LANTIQ
|
|
|
|
bool
|
|
|
|
depends on LANTIQ
|
|
|
|
select PINMUX
|
|
|
|
select PINCONF
|
|
|
|
|
2015-04-27 18:14:08 -04:00
|
|
|
config PINCTRL_LPC18XX
|
|
|
|
bool "NXP LPC18XX/43XX SCU pinctrl driver"
|
|
|
|
depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
|
|
|
|
default ARCH_LPC18XX
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
|
|
|
|
|
2012-05-19 18:33:56 -04:00
|
|
|
config PINCTRL_FALCON
|
|
|
|
bool
|
|
|
|
depends on SOC_FALCON
|
|
|
|
depends on PINCTRL_LANTIQ
|
|
|
|
|
2017-08-05 17:04:08 -04:00
|
|
|
config PINCTRL_GEMINI
|
|
|
|
bool
|
|
|
|
depends on ARCH_GEMINI
|
|
|
|
default ARCH_GEMINI
|
|
|
|
select PINMUX
|
2017-10-28 09:37:18 -04:00
|
|
|
select GENERIC_PINCONF
|
2017-08-05 17:04:08 -04:00
|
|
|
select MFD_SYSCON
|
|
|
|
|
2017-05-15 05:24:25 -04:00
|
|
|
config PINCTRL_MCP23S08
|
|
|
|
tristate "Microchip MCP23xxx I/O expander"
|
|
|
|
depends on SPI_MASTER || I2C
|
2017-05-30 05:11:28 -04:00
|
|
|
depends on I2C || I2C=n
|
2017-10-11 06:04:35 -04:00
|
|
|
select GPIOLIB
|
2017-05-15 05:24:25 -04:00
|
|
|
select GPIOLIB_IRQCHIP
|
|
|
|
select REGMAP_I2C if I2C
|
|
|
|
select REGMAP_SPI if SPI_MASTER
|
2017-05-15 05:24:26 -04:00
|
|
|
select GENERIC_PINCONF
|
2017-05-15 05:24:25 -04:00
|
|
|
help
|
2018-02-15 09:56:03 -05:00
|
|
|
SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
|
|
|
|
MCP23008 / MCP23017 / MCP23018 I/O expanders.
|
|
|
|
This provides a GPIO interface supporting inputs and outputs and a
|
|
|
|
corresponding interrupt-controller.
|
2017-05-15 05:24:25 -04:00
|
|
|
|
2016-05-11 03:34:21 -04:00
|
|
|
config PINCTRL_OXNAS
|
|
|
|
bool
|
|
|
|
depends on OF
|
|
|
|
select PINMUX
|
|
|
|
select PINCONF
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GPIOLIB
|
|
|
|
select OF_GPIO
|
|
|
|
select GPIOLIB_IRQCHIP
|
|
|
|
select MFD_SYSCON
|
|
|
|
|
2013-06-10 16:16:22 -04:00
|
|
|
config PINCTRL_ROCKCHIP
|
|
|
|
bool
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GENERIC_IRQ_CHIP
|
2014-05-05 07:58:20 -04:00
|
|
|
select MFD_SYSCON
|
2013-06-10 16:16:22 -04:00
|
|
|
|
2017-06-22 10:54:29 -04:00
|
|
|
config PINCTRL_RZA1
|
|
|
|
bool "Renesas RZ/A1 gpio and pinctrl driver"
|
|
|
|
depends on OF
|
|
|
|
depends on ARCH_R7S72100 || COMPILE_TEST
|
|
|
|
select GPIOLIB
|
|
|
|
select GENERIC_PINCTRL_GROUPS
|
|
|
|
select GENERIC_PINMUX_FUNCTIONS
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
This selects pinctrl driver for Renesas RZ/A1 platforms.
|
|
|
|
|
2018-11-15 11:15:27 -05:00
|
|
|
config PINCTRL_RZA2
|
|
|
|
bool "Renesas RZ/A2 gpio and pinctrl driver"
|
|
|
|
depends on OF
|
|
|
|
depends on ARCH_R7S9210 || COMPILE_TEST
|
|
|
|
select GPIOLIB
|
|
|
|
select GENERIC_PINCTRL_GROUPS
|
|
|
|
select GENERIC_PINMUX_FUNCTIONS
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
This selects GPIO and pinctrl driver for Renesas RZ/A2 platforms.
|
|
|
|
|
2018-09-26 05:10:52 -04:00
|
|
|
config PINCTRL_RZN1
|
|
|
|
bool "Renesas RZ/N1 pinctrl driver"
|
|
|
|
depends on OF
|
|
|
|
depends on ARCH_RZN1 || COMPILE_TEST
|
|
|
|
select GENERIC_PINCTRL_GROUPS
|
|
|
|
select GENERIC_PINMUX_FUNCTIONS
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
This selects pinctrl driver for Renesas RZ/N1 devices.
|
|
|
|
|
2012-07-10 05:05:46 -04:00
|
|
|
config PINCTRL_SINGLE
|
|
|
|
tristate "One-register-per-pin type device tree based pinctrl driver"
|
|
|
|
depends on OF
|
2017-11-13 05:04:27 -05:00
|
|
|
depends on HAS_IOMEM
|
2016-12-27 12:20:02 -05:00
|
|
|
select GENERIC_PINCTRL_GROUPS
|
2016-12-27 12:20:03 -05:00
|
|
|
select GENERIC_PINMUX_FUNCTIONS
|
2013-02-17 06:42:55 -05:00
|
|
|
select GENERIC_PINCONF
|
2012-07-10 05:05:46 -04:00
|
|
|
help
|
|
|
|
This selects the device tree based generic pinctrl driver.
|
|
|
|
|
2011-12-18 17:44:26 -05:00
|
|
|
config PINCTRL_SIRF
|
2015-01-11 08:56:41 -05:00
|
|
|
bool "CSR SiRFprimaII pin controller driver"
|
2012-09-27 05:56:30 -04:00
|
|
|
depends on ARCH_SIRF
|
2011-10-09 06:11:13 -04:00
|
|
|
select PINMUX
|
pinctrl: sirf: add sirf atlas7 pinctrl and gpio support
The Pinctrl module (ioc) controls the Pad's function select
(each pad can have 8 functions), Pad's Drive Strength, Pad's
Pull Select and Pad's Input Disable status.
The ioc has two modules, ioc_top & ioc_rtc. Both of these two
modules have function select/clear, Pull select and Drive
Strength registers. But only ioc_rtc has input-disable
registers. The Pads on ioc_top have to access ioc_rtc to set
their input-disable status and intpu-disable-value.
So have to use one ioc driver instance to drive these two
ioc modules at the same time, and each ioc module will be
treat as one bank on the "IOC Device".
The GPIO Controller controls the GPIO status if the Pad has
been config as GPIO by Pinctrl already. Includes the GPIO
Input/output, Interrupt type, Interrupt Status, and Set/Get
Values.
The GPIO pull up/down are controlled by Pinctrl.
There are 7 GPIO Groups and splited into 3 MACROs in atlas7.
The GPIO Groups in one MACRO share one GPIO controllers, each
GPIO Group are treated as one GPIO bank.
For example:
In VDIFM macro, there is one GPIO Controller, it has 3 banks
to control 3 gpio groups. Its gpio name space is from 0 to 95.
The Device Tree can be written as following:
gpio-ranges = <&pinctrl 0 0 0>,
<&pinctrl 32 0 0>,
<&pinctrl 64 0 0>;
gpio-ranges-group-names = "gnss_gpio_grp",
"lcd_vip_gpio_grp",
"sdio_i2s_gpio_grp";
bank#0 is from 0~31, the pins are from pinctrl's "gnss_gpio_grp".
bank#2 is from 32~63, the pins are from pinctrl's "lcd_vip_gpio_grp".
bank#3 is from 64~95, the pins are from pinctrl's "sdio_i2s_gpio_grp".
Signed-off-by: Wei Chen <Wei.Chen@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2015-05-18 03:28:32 -04:00
|
|
|
select PINCONF
|
|
|
|
select GENERIC_PINCONF
|
2014-04-15 02:43:47 -04:00
|
|
|
select GPIOLIB_IRQCHIP
|
2011-10-09 06:11:13 -04:00
|
|
|
|
2016-10-21 05:09:58 -04:00
|
|
|
config PINCTRL_SX150X
|
|
|
|
bool "Semtech SX150x I2C GPIO expander pinctrl driver"
|
2017-10-11 06:04:35 -04:00
|
|
|
depends on I2C=y
|
2016-10-21 05:09:58 -04:00
|
|
|
select PINMUX
|
|
|
|
select PINCONF
|
|
|
|
select GENERIC_PINCONF
|
2017-10-11 06:04:35 -04:00
|
|
|
select GPIOLIB
|
2016-10-21 05:09:58 -04:00
|
|
|
select GPIOLIB_IRQCHIP
|
2016-11-07 11:53:16 -05:00
|
|
|
select REGMAP
|
2016-10-21 05:09:58 -04:00
|
|
|
help
|
|
|
|
Say yes here to provide support for Semtech SX150x-series I2C
|
|
|
|
GPIO expanders as pinctrl module.
|
|
|
|
Compatible models include:
|
|
|
|
- 8 bits: sx1508q, sx1502q
|
|
|
|
- 16 bits: sx1509q, sx1506q
|
|
|
|
|
2015-05-06 15:59:03 -04:00
|
|
|
config PINCTRL_PISTACHIO
|
|
|
|
def_bool y if MACH_PISTACHIO
|
|
|
|
depends on GPIOLIB
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GPIOLIB_IRQCHIP
|
|
|
|
select OF_GPIO
|
|
|
|
|
2013-06-20 10:05:38 -04:00
|
|
|
config PINCTRL_ST
|
|
|
|
bool
|
|
|
|
depends on OF
|
|
|
|
select PINMUX
|
|
|
|
select PINCONF
|
2014-04-08 08:45:47 -04:00
|
|
|
select GPIOLIB_IRQCHIP
|
2013-06-20 10:05:38 -04:00
|
|
|
|
2019-05-09 04:58:51 -04:00
|
|
|
config PINCTRL_STMFX
|
|
|
|
tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
|
2019-05-10 09:39:18 -04:00
|
|
|
depends on I2C
|
Merge remote-tracking branch 'remotes/origin/tmp-f686d9f' into msm-lahaina
* remotes/origin/tmp-f686d9f:
ANDROID: update abi_gki_aarch64.xml for 5.2-rc6
Linux 5.2-rc6
Revert "iommu/vt-d: Fix lock inversion between iommu->lock and device_domain_lock"
Bluetooth: Fix regression with minimum encryption key size alignment
tcp: refine memory limit test in tcp_fragment()
x86/vdso: Prevent segfaults due to hoisted vclock reads
SUNRPC: Fix a credential refcount leak
Revert "SUNRPC: Declare RPC timers as TIMER_DEFERRABLE"
net :sunrpc :clnt :Fix xps refcount imbalance on the error path
NFS4: Only set creation opendata if O_CREAT
ANDROID: gki_defconfig: workaround to enable configs
ANDROID: gki_defconfig: more configs for partners
ARM: 8867/1: vdso: pass --be8 to linker if necessary
KVM: nVMX: reorganize initial steps of vmx_set_nested_state
KVM: PPC: Book3S HV: Invalidate ERAT when flushing guest TLB entries
habanalabs: use u64_to_user_ptr() for reading user pointers
nfsd: replace Jeff by Chuck as nfsd co-maintainer
inet: clear num_timeout reqsk_alloc()
PCI/P2PDMA: Ignore root complex whitelist when an IOMMU is present
net: mvpp2: debugfs: Add pmap to fs dump
ipv6: Default fib6_type to RTN_UNICAST when not set
net: hns3: Fix inconsistent indenting
net/af_iucv: always register net_device notifier
net/af_iucv: build proper skbs for HiperTransport
net/af_iucv: remove GFP_DMA restriction for HiperTransport
doc: fix documentation about UIO_MEM_LOGICAL using
MAINTAINERS / Documentation: Thorsten Scherer is the successor of Gavin Schenk
docs: fb: Add TER16x32 to the available font names
MAINTAINERS: fpga: hand off maintainership to Moritz
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 507
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 506
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 505
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 504
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 503
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 502
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 501
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 499
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 498
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 497
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 496
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 495
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 491
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 490
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 489
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 488
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 487
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 486
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 485
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 484
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 482
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 481
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 480
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 479
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 477
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 475
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 474
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 473
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 472
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 471
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 469
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 468
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 467
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 466
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 465
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 464
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 463
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 462
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 461
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 460
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 459
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 457
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 456
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 455
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 454
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 452
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 451
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 250
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 248
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 247
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 246
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 245
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 244
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 243
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 239
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 238
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 237
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 235
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 233
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 232
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 231
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 230
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 226
KVM: arm/arm64: Fix emulated ptimer irq injection
net: dsa: mv88e6xxx: fix shift of FID bits in mv88e6185_g1_vtu_loadpurge()
tests: kvm: Check for a kernel warning
kvm: tests: Sort tests in the Makefile alphabetically
KVM: x86/mmu: Allocate PAE root array when using SVM's 32-bit NPT
KVM: x86: Modify struct kvm_nested_state to have explicit fields for data
fanotify: update connector fsid cache on add mark
quota: fix a problem about transfer quota
drm/i915: Don't clobber M/N values during fastset check
powerpc: enable a 30-bit ZONE_DMA for 32-bit pmac
ovl: make i_ino consistent with st_ino in more cases
scsi: qla2xxx: Fix hardlockup in abort command during driver remove
scsi: ufs: Avoid runtime suspend possibly being blocked forever
scsi: qedi: update driver version to 8.37.0.20
scsi: qedi: Check targetname while finding boot target information
hvsock: fix epollout hang from race condition
net/udp_gso: Allow TX timestamp with UDP GSO
net: netem: fix use after free and double free with packet corruption
net: netem: fix backlog accounting for corrupted GSO frames
net: lio_core: fix potential sign-extension overflow on large shift
tipc: pass tunnel dev as NULL to udp_tunnel(6)_xmit_skb
ip6_tunnel: allow not to count pkts on tstats by passing dev as NULL
ip_tunnel: allow not to count pkts on tstats by setting skb's dev to NULL
apparmor: reset pos on failure to unpack for various functions
apparmor: enforce nullbyte at end of tag string
apparmor: fix PROFILE_MEDIATES for untrusted input
RDMA/efa: Handle mmap insertions overflow
tun: wake up waitqueues after IFF_UP is set
drm: return -EFAULT if copy_to_user() fails
net: remove duplicate fetch in sock_getsockopt
tipc: fix issues with early FAILOVER_MSG from peer
bnx2x: Check if transceiver implements DDM before access
xhci: detect USB 3.2 capable host controllers correctly
usb: xhci: Don't try to recover an endpoint if port is in error state.
KVM: fix typo in documentation
drm/panfrost: Make sure a BO is only unmapped when appropriate
md: fix for divide error in status_resync
soc: ixp4xx: npe: Fix an IS_ERR() vs NULL check in probe
arm64/mm: don't initialize pgd_cache twice
MAINTAINERS: Update my email address
arm64/sve: <uapi/asm/ptrace.h> should not depend on <uapi/linux/prctl.h>
ovl: fix typo in MODULE_PARM_DESC
ovl: fix bogus -Wmaybe-unitialized warning
ovl: don't fail with disconnected lower NFS
mmc: core: Prevent processing SDIO IRQs when the card is suspended
mmc: sdhci: sdhci-pci-o2micro: Correctly set bus width when tuning
brcmfmac: sdio: Don't tune while the card is off
mmc: core: Add sdio_retune_hold_now() and sdio_retune_release()
brcmfmac: sdio: Disable auto-tuning around commands expected to fail
mmc: core: API to temporarily disable retuning for SDIO CRC errors
Revert "brcmfmac: disable command decode in sdio_aos"
ARM: ixp4xx: include irqs.h where needed
ARM: ixp4xx: mark ixp4xx_irq_setup as __init
ARM: ixp4xx: don't select SERIAL_OF_PLATFORM
firmware: trusted_foundations: add ARMv7 dependency
usb: dwc2: Use generic PHY width in params setup
RDMA/efa: Fix success return value in case of error
IB/hfi1: Handle port down properly in pio
IB/hfi1: Handle wakeup of orphaned QPs for pio
IB/hfi1: Wakeup QPs orphaned on wait list after flush
IB/hfi1: Use aborts to trigger RC throttling
IB/hfi1: Create inline to get extended headers
IB/hfi1: Silence txreq allocation warnings
IB/hfi1: Avoid hardlockup with flushlist_lock
KVM: PPC: Book3S HV: Only write DAWR[X] when handling h_set_dawr in real mode
KVM: PPC: Book3S HV: Fix r3 corruption in h_set_dabr()
fs/namespace: fix unprivileged mount propagation
vfs: fsmount: add missing mntget()
cifs: fix GlobalMid_Lock bug in cifs_reconnect
SMB3: retry on STATUS_INSUFFICIENT_RESOURCES instead of failing write
staging: erofs: add requirements field in superblock
arm64: ssbd: explicitly depend on <linux/prctl.h>
block: fix page leak when merging to same page
block: return from __bio_try_merge_page if merging occured in the same page
Btrfs: fix failure to persist compression property xattr deletion on fsync
riscv: remove unused barrier defines
usb: chipidea: udc: workaround for endpoint conflict issue
MAINTAINERS: Change QCOM repo location
mmc: mediatek: fix SDIO IRQ detection issue
mmc: mediatek: fix SDIO IRQ interrupt handle flow
mmc: core: complete HS400 before checking status
riscv: mm: synchronize MMU after pte change
MAINTAINERS: Update my email address to use @kernel.org
ANDROID: update abi_gki_aarch64.xml for 5.2-rc5
riscv: dts: add initial board data for the SiFive HiFive Unleashed
riscv: dts: add initial support for the SiFive FU540-C000 SoC
dt-bindings: riscv: convert cpu binding to json-schema
dt-bindings: riscv: sifive: add YAML documentation for the SiFive FU540
arch: riscv: add support for building DTB files from DT source data
drm/i915/gvt: ignore unexpected pvinfo write
lapb: fixed leak of control-blocks.
tipc: purge deferredq list for each grp member in tipc_group_delete
ax25: fix inconsistent lock state in ax25_destroy_timer
neigh: fix use-after-free read in pneigh_get_next
tcp: fix compile error if !CONFIG_SYSCTL
hv_sock: Suppress bogus "may be used uninitialized" warnings
be2net: Fix number of Rx queues used for flow hashing
net: handle 802.1P vlan 0 packets properly
Linux 5.2-rc5
tcp: enforce tcp_min_snd_mss in tcp_mtu_probing()
tcp: add tcp_min_snd_mss sysctl
tcp: tcp_fragment() should apply sane memory limits
tcp: limit payload size of sacked skbs
Revert "net: phylink: set the autoneg state in phylink_phy_change"
bpf: fix nested bpf tracepoints with per-cpu data
bpf: Fix out of bounds memory access in bpf_sk_storage
vsock/virtio: set SOCK_DONE on peer shutdown
net: dsa: rtl8366: Fix up VLAN filtering
net: phylink: set the autoneg state in phylink_phy_change
powerpc/32: fix build failure on book3e with KVM
powerpc/booke: fix fast syscall entry on SMP
powerpc/32s: fix initial setup of segment registers on secondary CPU
x86/microcode, cpuhotplug: Add a microcode loader CPU hotplug callback
net: add high_order_alloc_disable sysctl/static key
tcp: add tcp_tx_skb_cache sysctl
tcp: add tcp_rx_skb_cache sysctl
sysctl: define proc_do_static_key()
hv_netvsc: Set probe mode to sync
net: sched: flower: don't call synchronize_rcu() on mask creation
net: dsa: fix warning same module names
sctp: Free cookie before we memdup a new one
net: dsa: microchip: Don't try to read stats for unused ports
qmi_wwan: extend permitted QMAP mux_id value range
qmi_wwan: avoid RCU stalls on device disconnect when in QMAP mode
qmi_wwan: add network device usage statistics for qmimux devices
qmi_wwan: add support for QMAP padding in the RX path
bpf, x64: fix stack layout of JITed bpf code
Smack: Restore the smackfsdef mount option and add missing prefixes
bpf, devmap: Add missing RCU read lock on flush
bpf, devmap: Add missing bulk queue free
bpf, devmap: Fix premature entry free on destroying map
ftrace: Fix NULL pointer dereference in free_ftrace_func_mapper()
module: Fix livepatch/ftrace module text permissions race
tracing/uprobe: Fix obsolete comment on trace_uprobe_create()
tracing/uprobe: Fix NULL pointer dereference in trace_uprobe_create()
tracing: Make two symbols static
tracing: avoid build warning with HAVE_NOP_MCOUNT
tracing: Fix out-of-range read in trace_stack_print()
gfs2: Fix rounding error in gfs2_iomap_page_prepare
net: phylink: further mac_config documentation improvements
nfc: Ensure presence of required attributes in the deactivate_target handler
btrfs: start readahead also in seed devices
x86/kasan: Fix boot with 5-level paging and KASAN
cfg80211: report measurement start TSF correctly
cfg80211: fix memory leak of wiphy device name
cfg80211: util: fix bit count off by one
mac80211: do not start any work during reconfigure flow
cfg80211: use BIT_ULL in cfg80211_parse_mbssid_data()
mac80211: only warn once on chanctx_conf being NULL
mac80211: drop robust management frames from unknown TA
gpu: ipu-v3: image-convert: Fix image downsize coefficients
gpu: ipu-v3: image-convert: Fix input bytesperline for packed formats
gpu: ipu-v3: image-convert: Fix input bytesperline width/height align
thunderbolt: Implement CIO reset correctly for Titan Ridge
ARM: davinci: da8xx: specify dma_coherent_mask for lcdc
ARM: davinci: da850-evm: call regulator_has_full_constraints()
timekeeping: Repair ktime_get_coarse*() granularity
Revert "ALSA: hda/realtek - Improve the headset mic for Acer Aspire laptops"
ANDROID: update abi_gki_aarch64.xml
mm/devm_memremap_pages: fix final page put race
PCI/P2PDMA: track pgmap references per resource, not globally
lib/genalloc: introduce chunk owners
PCI/P2PDMA: fix the gen_pool_add_virt() failure path
mm/devm_memremap_pages: introduce devm_memunmap_pages
drivers/base/devres: introduce devm_release_action()
mm/vmscan.c: fix trying to reclaim unevictable LRU page
coredump: fix race condition between collapse_huge_page() and core dumping
mm/mlock.c: change count_mm_mlocked_page_nr return type
mm: mmu_gather: remove __tlb_reset_range() for force flush
fs/ocfs2: fix race in ocfs2_dentry_attach_lock()
mm/vmscan.c: fix recent_rotated history
mm/mlock.c: mlockall error for flag MCL_ONFAULT
scripts/decode_stacktrace.sh: prefix addr2line with $CROSS_COMPILE
mm/list_lru.c: fix memory leak in __memcg_init_list_lru_node
mm: memcontrol: don't batch updates of local VM stats and events
PCI: PM: Skip devices in D0 for suspend-to-idle
ANDROID: Removed extraneous configs from gki
powerpc/bpf: use unsigned division instruction for 64-bit operations
bpf: fix div64 overflow tests to properly detect errors
bpf: sync BPF_FIB_LOOKUP flag changes with BPF uapi
bpf: simplify definition of BPF_FIB_LOOKUP related flags
cifs: add spinlock for the openFileList to cifsInodeInfo
cifs: fix panic in smb2_reconnect
x86/fpu: Don't use current->mm to check for a kthread
KVM: nVMX: use correct clean fields when copying from eVMCS
vfio-ccw: Destroy kmem cache region on module exit
block/ps3vram: Use %llu to format sector_t after LBDAF removal
libata: Extend quirks for the ST1000LM024 drives with NOLPM quirk
bcache: only set BCACHE_DEV_WB_RUNNING when cached device attached
bcache: fix stack corruption by PRECEDING_KEY()
arm64/sve: Fix missing SVE/FPSIMD endianness conversions
blk-mq: remove WARN_ON(!q->elevator) from blk_mq_sched_free_requests
blkio-controller.txt: Remove references to CFQ
block/switching-sched.txt: Update to blk-mq schedulers
null_blk: remove duplicate check for report zone
blk-mq: no need to check return value of debugfs_create functions
io_uring: fix memory leak of UNIX domain socket inode
block: force select mq-deadline for zoned block devices
binder: fix possible UAF when freeing buffer
drm/amdgpu: return 0 by default in amdgpu_pm_load_smu_firmware
drm/amdgpu: Fix bounds checking in amdgpu_ras_is_supported()
ANDROID: x86 gki_defconfig: enable DMA_CMA
ANDROID: Fixed x86 regression
ANDROID: gki_defconfig: enable DMA_CMA
Input: synaptics - enable SMBus on ThinkPad E480 and E580
net: mvpp2: prs: Use the correct helpers when removing all VID filters
net: mvpp2: prs: Fix parser range for VID filtering
mlxsw: spectrum: Disallow prio-tagged packets when PVID is removed
mlxsw: spectrum_buffers: Reduce pool size on Spectrum-2
selftests: tc_flower: Add TOS matching test
mlxsw: spectrum_flower: Fix TOS matching
selftests: mlxsw: Test nexthop offload indication
mlxsw: spectrum_router: Refresh nexthop neighbour when it becomes dead
mlxsw: spectrum: Use different seeds for ECMP and LAG hash
net: tls, correctly account for copied bytes with multiple sk_msgs
vrf: Increment Icmp6InMsgs on the original netdev
cpuset: restore sanity to cpuset_cpus_allowed_fallback()
net: ethtool: Allow matching on vlan DEI bit
linux-next: DOC: RDS: Fix a typo in rds.txt
x86/kgdb: Return 0 from kgdb_arch_set_breakpoint()
mpls: fix af_mpls dependencies for real
selinux: fix a missing-check bug in selinux_sb_eat_lsm_opts()
selinux: fix a missing-check bug in selinux_add_mnt_opt( )
arm64: tlbflush: Ensure start/end of address range are aligned to stride
usb: typec: Make sure an alt mode exist before getting its partner
KVM: arm/arm64: vgic: Fix kvm_device leak in vgic_its_destroy
KVM: arm64: Filter out invalid core register IDs in KVM_GET_REG_LIST
KVM: arm64: Implement vq_present() as a macro
xdp: check device pointer before clearing
bpf: net: Set sk_bpf_storage back to NULL for cloned sk
Btrfs: fix race between block group removal and block group allocation
clocksource/drivers/arm_arch_timer: Don't trace count reader functions
i2c: pca-platform: Fix GPIO lookup code
thunderbolt: Make sure device runtime resume completes before taking domain lock
drm: add fallback override/firmware EDID modes workaround
i2c: acorn: fix i2c warning
arm64: Don't unconditionally add -Wno-psabi to KBUILD_CFLAGS
drm/edid: abstract override/firmware EDID retrieval
platform/mellanox: mlxreg-hotplug: Add devm_free_irq call to remove flow
platform/x86: mlx-platform: Fix parent device in i2c-mux-reg device registration
platform/x86: intel-vbtn: Report switch events when event wakes device
platform/x86: asus-wmi: Only Tell EC the OS will handle display hotkeys from asus_nb_wmi
ARM: mvebu_v7_defconfig: fix Ethernet on Clearfog
x86/resctrl: Prevent NULL pointer dereference when local MBM is disabled
x86/resctrl: Don't stop walking closids when a locksetup group is found
iommu/arm-smmu: Avoid constant zero in TLBI writes
drm/i915/perf: fix whitelist on Gen10+
drm/i915/sdvo: Implement proper HDMI audio support for SDVO
drm/i915: Fix per-pixel alpha with CCS
drm/i915/dmc: protect against reading random memory
drm/i915/dsi: Use a fuzzy check for burst mode clock check
Input: imx_keypad - make sure keyboard can always wake up system
selinux: log raw contexts as untrusted strings
ptrace: restore smp_rmb() in __ptrace_may_access()
IB/hfi1: Correct tid qp rcd to match verbs context
IB/hfi1: Close PSM sdma_progress sleep window
IB/hfi1: Validate fault injection opcode user input
geneve: Don't assume linear buffers in error handler
vxlan: Don't assume linear buffers in error handler
net: openvswitch: do not free vport if register_netdevice() is failed.
net: correct udp zerocopy refcnt also when zerocopy only on append
drm/amdgpu/{uvd,vcn}: fetch ring's read_ptr after alloc
ovl: fix wrong flags check in FS_IOC_FS[SG]ETXATTR ioctls
riscv: Fix udelay in RV32.
drm/vmwgfx: fix a warning due to missing dma_parms
riscv: export pm_power_off again
drm/vmwgfx: Honor the sg list segment size limitation
RISC-V: defconfig: enable clocks, serial console
drm/vmwgfx: Use the backdoor port if the HB port is not available
bpf: lpm_trie: check left child of last leftmost node for NULL
Revert "fuse: require /dev/fuse reads to have enough buffer capacity"
ALSA: ice1712: Check correct return value to snd_i2c_sendbytes (EWS/DMX 6Fire)
ALSA: oxfw: allow PCM capture for Stanton SCS.1m
ALSA: firewire-motu: fix destruction of data for isochronous resources
s390/ctl_reg: mark __ctl_set_bit and __ctl_clear_bit as __always_inline
s390/boot: disable address-of-packed-member warning
ANDROID: update gki aarch64 ABI representation
cgroup: Fix css_task_iter_advance_css_set() cset skip condition
drm/panfrost: Require the simple_ondemand governor
drm/panfrost: make devfreq optional again
drm/gem_shmem: Use a writecombine mapping for ->vaddr
mmc: sdhi: disallow HS400 for M3-W ES1.2, RZ/G2M, and V3H
ASoC: Intel: sst: fix kmalloc call with wrong flags
ASoC: core: Fix deadlock in snd_soc_instantiate_card()
cgroup/bfq: revert bfq.weight symlink change
ARM: dts: am335x phytec boards: Fix cd-gpios active level
ARM: dts: dra72x: Disable usb4_tm target module
nfp: ensure skb network header is set for packet redirect
tcp: fix undo spurious SYNACK in passive Fast Open
mpls: fix af_mpls dependencies
ibmvnic: Fix unchecked return codes of memory allocations
ibmvnic: Refresh device multicast list after reset
ibmvnic: Do not close unopened driver during reset
mpls: fix warning with multi-label encap
net: phy: rename Asix Electronics PHY driver
ipv6: flowlabel: fl6_sock_lookup() must use atomic_inc_not_zero
net: ipv4: fib_semantics: fix uninitialized variable
Input: iqs5xx - get axis info before calling input_mt_init_slots()
Linux 5.2-rc4
drm: panel-orientation-quirks: Add quirk for GPD MicroPC
drm: panel-orientation-quirks: Add quirk for GPD pocket2
counter/ftm-quaddec: Add missing dependencies in Kconfig
staging: iio: adt7316: Fix build errors when GPIOLIB is not set
x86/fpu: Update kernel's FPU state before using for the fsave header
MAINTAINERS: Karthikeyan Ramasubramanian is MIA
i2c: xiic: Add max_read_len quirk
ANDROID: update ABI representation
gpio: pca953x: hack to fix 24 bit gpio expanders
net/mlx5e: Support tagged tunnel over bond
net/mlx5e: Avoid detaching non-existing netdev under switchdev mode
net/mlx5e: Fix source port matching in fdb peer flow rule
net/mlx5e: Replace reciprocal_scale in TX select queue function
net/mlx5e: Add ndo_set_feature for uplink representor
net/mlx5: Avoid reloading already removed devices
net/mlx5: Update pci error handler entries and command translation
RAS/CEC: Convert the timer callback to a workqueue
RAS/CEC: Fix binary search function
x86/mm/KASLR: Compute the size of the vmemmap section properly
can: purge socket error queue on sock destruct
can: flexcan: Remove unneeded registration message
can: af_can: Fix error path of can_init()
can: m_can: implement errata "Needless activation of MRAF irq"
can: mcp251x: add support for mcp25625
dt-bindings: can: mcp251x: add mcp25625 support
can: xilinx_can: use correct bittiming_const for CAN FD core
can: flexcan: fix timeout when set small bitrate
can: usb: Kconfig: Remove duplicate menu entry
lockref: Limit number of cmpxchg loop retries
uaccess: add noop untagged_addr definition
x86/insn-eval: Fix use-after-free access to LDT entry
kbuild: use more portable 'command -v' for cc-cross-prefix
s390/unwind: correct stack switching during unwind
scsi: hpsa: correct ioaccel2 chaining
btrfs: Always trim all unallocated space in btrfs_trim_free_extents
netfilter: ipv6: nf_defrag: accept duplicate fragments again
powerpc/32s: fix booting with CONFIG_PPC_EARLY_DEBUG_BOOTX
drm/meson: fix G12A primary plane disabling
drm/meson: fix primary plane disabling
drm/meson: fix G12A HDMI PLL settings for 4K60 1000/1001 variations
block, bfq: add weight symlink to the bfq.weight cgroup parameter
cgroup: let a symlink too be created with a cftype file
powerpc/64s: __find_linux_pte() synchronization vs pmdp_invalidate()
powerpc/64s: Fix THP PMD collapse serialisation
powerpc: Fix kexec failure on book3s/32
drm/nouveau/secboot/gp10[2467]: support newer FW to fix SEC2 failures on some boards
drm/nouveau/secboot: enable loading of versioned LS PMU/SEC2 ACR msgqueue FW
drm/nouveau/secboot: split out FW version-specific LS function pointers
drm/nouveau/secboot: pass max supported FW version to LS load funcs
drm/nouveau/core: support versioned firmware loading
drm/nouveau/core: pass subdev into nvkm_firmware_get, rather than device
block: free sched's request pool in blk_cleanup_queue
bpf: expand section tests for test_section_names
bpf: more msg_name rewrite tests to test_sock_addr
bpf, bpftool: enable recvmsg attach types
bpf, libbpf: enable recvmsg attach types
bpf: sync tooling uapi header
bpf: fix unconnected udp hooks
vfio/mdev: Synchronize device create/remove with parent removal
vfio/mdev: Avoid creating sysfs remove file on stale device removal
pktgen: do not sleep with the thread lock held.
net: mvpp2: Use strscpy to handle stat strings
net: rds: fix memory leak in rds_ib_flush_mr_pool
ipv6: fix EFAULT on sendto with icmpv6 and hdrincl
ipv6: use READ_ONCE() for inet->hdrincl as in ipv4
soundwire: intel: set dai min and max channels correctly
soundwire: stream: fix bad unlock balance
x86/fpu: Use fault_in_pages_writeable() for pre-faulting
nvme-rdma: use dynamic dma mapping per command
nvme: Fix u32 overflow in the number of namespace list calculation
vfio/mdev: Improve the create/remove sequence
SoC: rt274: Fix internal jack assignment in set_jack callback
ALSA: hdac: fix memory release for SST and SOF drivers
ASoC: SOF: Intel: hda: use the defined ppcap functions
ASoC: core: move DAI pre-links initiation to snd_soc_instantiate_card
ASoC: Intel: cht_bsw_rt5672: fix kernel oops with platform_name override
ASoC: Intel: cht_bsw_nau8824: fix kernel oops with platform_name override
ASoC: Intel: bytcht_es8316: fix kernel oops with platform_name override
ASoC: Intel: cht_bsw_max98090: fix kernel oops with platform_name override
Revert "gfs2: Replace gl_revokes with a GLF flag"
arm64: Silence gcc warnings about arch ABI drift
parisc: Fix crash due alternative coding for NP iopdir_fdc bit
parisc: Use lpa instruction to load physical addresses in driver code
parisc: configs: Remove useless UEVENT_HELPER_PATH
parisc: Use implicit space register selection for loading the coherence index of I/O pdirs
usb: gadget: udc: lpc32xx: fix return value check in lpc32xx_udc_probe()
usb: gadget: dwc2: fix zlp handling
usb: dwc2: Set actual frame number for completed ISOC transfer for none DDMA
usb: gadget: udc: lpc32xx: allocate descriptor with GFP_ATOMIC
usb: gadget: fusb300_udc: Fix memory leak of fusb300->ep[i]
usb: phy: mxs: Disable external charger detect in mxs_phy_hw_init()
usb: dwc2: Fix DMA cache alignment issues
usb: dwc2: host: Fix wMaxPacketSize handling (fix webcam regression)
ARM64: trivial: s/TIF_SECOMP/TIF_SECCOMP/ comment typo fix
drm/komeda: Potential error pointer dereference
drm/komeda: remove set but not used variable 'kcrtc'
x86/CPU: Add more Icelake model numbers
hwmon: (pmbus/core) Treat parameters as paged if on multiple pages
hwmon: (pmbus/core) mutex_lock write in pmbus_set_samples
hwmon: (core) add thermal sensors only if dev->of_node is present
Revert "fib_rules: return 0 directly if an exactly same rule exists when NLM_F_EXCL not supplied"
net: aquantia: fix wol configuration not applied sometimes
ethtool: fix potential userspace buffer overflow
Fix memory leak in sctp_process_init
net: rds: fix memory leak when unload rds_rdma
ipv6: fix the check before getting the cookie in rt6_get_cookie
ipv4: not do cache for local delivery if bc_forwarding is enabled
selftests: vm: Fix test build failure when built by itself
tools: bpftool: Fix JSON output when lookup fails
mmc: also set max_segment_size in the device
mtip32xx: also set max_segment_size in the device
rsxx: don't call dma_set_max_seg_size
nvme-pci: don't limit DMA segement size
s390/qeth: handle error when updating TX queue count
s390/qeth: fix VLAN attribute in bridge_hostnotify udev event
s390/qeth: check dst entry before use
s390/qeth: handle limited IPv4 broadcast in L3 TX path
ceph: fix error handling in ceph_get_caps()
ceph: avoid iput_final() while holding mutex or in dispatch thread
ceph: single workqueue for inode related works
cgroup: css_task_iter_skip()'d iterators must be advanced before accessed
drm/amd/amdgpu: add RLC firmware to support raven1 refresh
drm/amd/powerplay: add set_power_profile_mode for raven1_refresh
drm/amdgpu: fix ring test failure issue during s3 in vce 3.0 (V2)
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 450
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 449
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 448
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 446
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 445
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 444
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 443
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 442
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 440
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 438
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 437
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 436
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 435
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 434
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 433
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 432
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 431
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 430
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 429
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 426
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 424
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 423
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 421
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 420
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 419
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 418
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 417
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 416
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 414
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 412
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 411
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 410
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 409
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 408
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 407
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 406
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 405
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 404
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 403
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 402
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 401
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 400
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 399
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 397
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 396
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 395
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 394
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 393
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 392
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 391
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 390
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 389
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 388
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 387
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 380
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 378
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 377
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 376
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 375
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 373
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 371
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 370
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 367
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 365
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 364
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 363
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 362
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 354
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 353
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 352
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 351
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 350
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 349
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 348
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 347
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 346
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 345
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 344
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 343
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 342
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 341
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 339
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 338
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 335
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 334
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 332
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 330
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 328
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 326
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 325
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 324
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 323
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 322
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 321
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 320
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 316
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 315
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 314
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 313
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 312
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 311
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 310
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 309
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 308
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 307
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 305
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 301
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 300
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 299
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 297
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 296
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 295
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 294
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 292
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 291
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 290
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 289
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 287
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 286
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 285
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 284
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 283
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 281
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 280
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 278
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 277
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 276
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 275
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 274
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 273
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 272
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 271
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 270
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 269
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 268
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 267
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 266
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 265
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 264
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 263
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 262
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 260
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 258
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 257
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 256
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 254
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 253
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 252
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 251
lib/test_stackinit: Handle Clang auto-initialization pattern
block: Drop unlikely before IS_ERR(_OR_NULL)
xen/swiotlb: don't initialize swiotlb twice on arm64
s390/mm: fix address space detection in exception handling
HID: logitech-dj: Fix 064d:c52f receiver support
Revert "HID: core: Call request_module before doing device_add"
Revert "HID: core: Do not call request_module() in async context"
Revert "HID: Increase maximum report size allowed by hid_field_extract()"
tests: fix pidfd-test compilation
signal: improve comments
samples: fix pidfd-metadata compilation
arm64: arch_timer: mark functions as __always_inline
arm64: smp: Moved cpu_logical_map[] to smp.h
arm64: cpufeature: Fix missing ZFR0 in __read_sysreg_by_encoding()
selftests/bpf: move test_lirc_mode2_user to TEST_GEN_PROGS_EXTENDED
USB: Fix chipmunk-like voice when using Logitech C270 for recording audio.
USB: usb-storage: Add new ID to ums-realtek
udmabuf: actually unmap the scatterlist
net: fix indirect calls helpers for ptype list hooks.
net: ipvlan: Fix ipvlan device tso disabled while NETIF_F_IP_CSUM is set
scsi: smartpqi: unlock on error in pqi_submit_raid_request_synchronous()
scsi: ufs: Check that space was properly alloced in copy_query_response
udp: only choose unbound UDP socket for multicast when not in a VRF
net/tls: replace the sleeping lock around RX resync with a bit lock
Revert "net/tls: avoid NULL-deref on resync during device removal"
block: aoe: no need to check return value of debugfs_create functions
net: dsa: sja1105: Fix link speed not working at 100 Mbps and below
net: phylink: avoid reducing support mask
scripts/checkstack.pl: Fix arm64 wrong or unknown architecture
kbuild: tar-pkg: enable communication with jobserver
kconfig: tests: fix recursive inclusion unit test
kbuild: teach kselftest-merge to find nested config files
nvmet: fix data_len to 0 for bdev-backed write_zeroes
MAINTAINERS: Hand over skd maintainership
ASoC: sun4i-i2s: Add offset to RX channel select
ASoC: sun4i-i2s: Fix sun8i tx channel offset mask
ASoC: max98090: remove 24-bit format support if RJ is 0
ASoC: da7219: Fix build error without CONFIG_I2C
ASoC: SOF: Intel: hda: Fix COMPILE_TEST build error
drm/arm/hdlcd: Allow a bit of clock tolerance
drm/arm/hdlcd: Actually validate CRTC modes
drm/arm/mali-dp: Add a loop around the second set CVAL and try 5 times
drm/komeda: fixing of DMA mapping sg segment warning
netfilter: ipv6: nf_defrag: fix leakage of unqueued fragments
habanalabs: Read upper bits of trace buffer from RWPHI
arm64: arch_k3: Fix kconfig dependency warning
drm: don't block fb changes for async plane updates
drm/vc4: fix fb references in async update
drm/msm: fix fb references in async update
drm/amd: fix fb references in async update
drm/rockchip: fix fb references in async update
xen-blkfront: switch kcalloc to kvcalloc for large array allocation
drm/mediatek: call mtk_dsi_stop() after mtk_drm_crtc_atomic_disable()
drm/mediatek: clear num_pipes when unbind driver
drm/mediatek: call drm_atomic_helper_shutdown() when unbinding driver
drm/mediatek: unbind components in mtk_drm_unbind()
drm/mediatek: fix unbind functions
net: sfp: read eeprom in maximum 16 byte increments
selftests: set sysctl bc_forwarding properly in router_broadcast.sh
ANDROID: update gki aarch64 ABI representation
net: ethernet: mediatek: Use NET_IP_ALIGN to judge if HW RX_2BYTE_OFFSET is enabled
net: ethernet: mediatek: Use hw_feature to judge if HWLRO is supported
net: ethernet: ti: cpsw_ethtool: fix ethtool ring param set
ANDROID: gki_defconfig: Enable CMA, SLAB_FREELIST (RANDOM and HARDENED) on x86
bpf: udp: Avoid calling reuseport's bpf_prog from udp_gro
bpf: udp: ipv6: Avoid running reuseport's bpf_prog from __udp6_lib_err
rcu: locking and unlocking need to always be at least barriers
ANDROID: gki_defconfig: enable SLAB_FREELIST_RANDOM, SLAB_FREELIST_HARDENED
ANDROID: gki_defconfig: enable CMA and increase CMA_AREAS
ASoC: SOF: fix DSP oops definitions in FW ABI
ASoC: hda: fix unbalanced codec dev refcount for HDA_DEV_ASOC
ASoC: SOF: ipc: replace fw ready bitfield with explicit bit ordering
ASoC: SOF: bump to ABI 3.6
ASoC: SOF: soundwire: add initial soundwire support
ASoC: SOF: uapi: mirror firmware changes
ASoC: Intel: Baytrail: add quirk for Aegex 10 (RU2) tablet
xfs: inode btree scrubber should calculate im_boffset correctly
mmc: sdhci_am654: Fix SLOTTYPE write
usb: typec: ucsi: ccg: fix memory leak in do_flash
ANDROID: update gki aarch64 ABI representation
habanalabs: Fix virtual address access via debugfs for 2MB pages
drm/komeda: Constify the usage of komeda_component/pipeline/dev_funcs
x86/power: Fix 'nosmt' vs hibernation triple fault during resume
mm/vmalloc: Avoid rare case of flushing TLB with weird arguments
mm/vmalloc: Fix calculation of direct map addr range
PM: sleep: Add kerneldoc comments to some functions
drm/i915/gvt: save RING_HEAD into vreg when vgpu switched out
sparc: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD
mdesc: fix a missing-check bug in get_vdev_port_node_info()
drm/i915/gvt: add F_CMD_ACCESS flag for wa regs
sparc64: Fix regression in non-hypervisor TLB flush xcall
packet: unconditionally free po->rollover
Update my email address
net: hns: Fix loopback test failed at copper ports
Linux 5.2-rc3
net: dsa: mv88e6xxx: avoid error message on remove from VLAN 0
mm, compaction: make sure we isolate a valid PFN
include/linux/generic-radix-tree.h: fix kerneldoc comment
kernel/signal.c: trace_signal_deliver when signal_group_exit
drivers/iommu/intel-iommu.c: fix variable 'iommu' set but not used
spdxcheck.py: fix directory structures
kasan: initialize tag to 0xff in __kasan_kmalloc
z3fold: fix sheduling while atomic
scripts/gdb: fix invocation when CONFIG_COMMON_CLK is not set
mm/gup: continue VM_FAULT_RETRY processing even for pre-faults
ocfs2: fix error path kobject memory leak
memcg: make it work on sparse non-0-node systems
mm, memcg: consider subtrees in memory.events
prctl_set_mm: downgrade mmap_sem to read lock
prctl_set_mm: refactor checks from validate_prctl_map
kernel/fork.c: make max_threads symbol static
arch/arm/boot/compressed/decompress.c: fix build error due to lz4 changes
arch/parisc/configs/c8000_defconfig: remove obsoleted CONFIG_DEBUG_SLAB_LEAK
mm/vmalloc.c: fix typo in comment
lib/sort.c: fix kernel-doc notation warnings
mm: fix Documentation/vm/hmm.rst Sphinx warnings
treewide: fix typos of SPDX-License-Identifier
crypto: ux500 - fix license comment syntax error
MAINTAINERS: add I2C DT bindings to ARM platforms
MAINTAINERS: add DT bindings to i2c drivers
mwifiex: Fix heap overflow in mwifiex_uap_parse_tail_ies()
iwlwifi: mvm: change TLC config cmd sent by rs to be async
iwlwifi: Fix double-free problems in iwl_req_fw_callback()
iwlwifi: fix AX201 killer sku loading firmware issue
iwlwifi: print fseq info upon fw assert
iwlwifi: clear persistence bit according to device family
iwlwifi: fix load in rfkill flow for unified firmware
iwlwifi: mvm: remove d3_sram debugfs file
bpf, riscv: clear high 32 bits for ALU32 add/sub/neg/lsh/rsh/arsh
libbpf: Return btf_fd for load_sk_storage_btf
HID: a4tech: fix horizontal scrolling
HID: hyperv: Add a module description line
net: dsa: sja1105: Don't store frame type in skb->cb
block: print offending values when cloned rq limits are exceeded
blk-mq: Document the blk_mq_hw_queue_to_node() arguments
blk-mq: Fix spelling in a source code comment
block: Fix bsg_setup_queue() kernel-doc header
block: Fix rq_qos_wait() kernel-doc header
block: Fix blk_mq_*_map_queues() kernel-doc headers
block: Fix throtl_pending_timer_fn() kernel-doc header
block: Convert blk_invalidate_devt() header into a non-kernel-doc header
block/partitions/ldm: Convert a kernel-doc header into a non-kernel-doc header
leds: avoid flush_work in atomic context
cgroup: Include dying leaders with live threads in PROCS iterations
cgroup: Implement css_task_iter_skip()
cgroup: Call cgroup_release() before __exit_signal()
netfilter: nf_tables: fix module autoload with inet family
Revert "lockd: Show pid of lockd for remote locks"
ALSA: hda/realtek - Update headset mode for ALC256
fs/adfs: fix filename fixup handling for "/" and "//" names
fs/adfs: move append_filetype_suffix() into adfs_object_fixup()
fs/adfs: remove truncated filename hashing
fs/adfs: factor out filename fixup
fs/adfs: factor out object fixups
fs/adfs: factor out filename case lowering
fs/adfs: factor out filename comparison
ovl: doc: add non-standard corner cases
pstore/ram: Run without kernel crash dump region
MAINTAINERS: add Vasily Gorbik and Christian Borntraeger for s390
MAINTAINERS: Farewell Martin Schwidefsky
pstore: Set tfm to NULL on free_buf_for_compression
nds32: add new emulations for floating point instruction
nds32: Avoid IEX status being incorrectly modified
math-emu: Use statement expressions to fix Wshift-count-overflow warning
net: correct zerocopy refcnt with udp MSG_MORE
ethtool: Check for vlan etype or vlan tci when parsing flow_rule
net: don't clear sock->sk early to avoid trouble in strparser
net-gro: fix use-after-free read in napi_gro_frags()
net: dsa: tag_8021q: Create a stable binary format
net: dsa: tag_8021q: Change order of rx_vid setup
net: mvpp2: fix bad MVPP2_TXQ_SCHED_TOKEN_CNTR_REG queue value
docs cgroups: add another example size for hugetlb
NFSv4.1: Fix bug only first CB_NOTIFY_LOCK is handled
NFSv4.1: Again fix a race where CB_NOTIFY_LOCK fails to wake a waiter
ipv4: tcp_input: fix stack out of bounds when parsing TCP options.
mlxsw: spectrum: Prevent force of 56G
mlxsw: spectrum_acl: Avoid warning after identical rules insertion
SUNRPC: Fix a use after free when a server rejects the RPCSEC_GSS credential
net: dsa: mv88e6xxx: fix handling of upper half of STATS_TYPE_PORT
SUNRPC fix regression in umount of a secure mount
r8169: fix MAC address being lost in PCI D3
treewide: Add SPDX license identifier - Kbuild
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 225
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 224
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 223
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 222
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 221
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 220
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 218
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 217
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 216
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 215
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 214
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 213
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 211
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 210
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 209
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 207
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 203
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 200
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 199
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 198
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 197
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 195
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 193
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 191
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 190
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 188
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 185
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 183
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 182
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 180
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 179
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 178
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 176
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 175
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 173
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 172
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 171
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 170
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 166
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 165
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 164
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 162
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 161
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 160
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 159
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 158
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 155
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 154
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 153
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 151
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 150
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 148
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 147
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 145
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 144
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 143
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 142
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 140
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 139
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 138
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 137
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 136
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 135
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 133
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 132
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 131
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 130
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 129
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 128
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 127
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 126
net: core: support XDP generic on stacked devices.
netvsc: unshare skb in VF rx handler
udp: Avoid post-GRO UDP checksum recalculation
nvme-tcp: fix queue mapping when queue count is limited
nvme-rdma: fix queue mapping when queue count is limited
fpga: zynqmp-fpga: Correctly handle error pointer
selftests: vm: install test_vmalloc.sh for run_vmtests
userfaultfd: selftest: fix compiler warning
kselftest/cgroup: fix incorrect test_core skip
kselftest/cgroup: fix unexpected testing failure on test_core
kselftest/cgroup: fix unexpected testing failure on test_memcontrol
xtensa: Fix section mismatch between memblock_reserve and mem_reserve
signal/ptrace: Don't leak unitialized kernel memory with PTRACE_PEEK_SIGINFO
mwifiex: Abort at too short BSS descriptor element
mwifiex: Fix possible buffer overflows at parsing bss descriptor
drm/i915/gvt: Assign NULL to the pointer after memory free.
drm/i915/gvt: Check if cur_pt_type is valid
x86: intel_epb: Do not build when CONFIG_PM is unset
crypto: hmac - fix memory leak in hmac_init_tfm()
crypto: jitterentropy - change back to module_init()
ARM: dts: Drop bogus CLKSEL for timer12 on dra7
KVM: PPC: Book3S HV: Restore SPRG3 in kvmhv_p9_guest_entry()
KVM: PPC: Book3S HV: Fix lockdep warning when entering guest on POWER9
KVM: PPC: Book3S HV: XIVE: Fix page offset when clearing ESB pages
KVM: PPC: Book3S HV: XIVE: Take the srcu read lock when accessing memslots
KVM: PPC: Book3S HV: XIVE: Do not clear IRQ data of passthrough interrupts
KVM: PPC: Book3S HV: XIVE: Introduce a new mutex for the XIVE device
drm/i915/gvt: Fix cmd length of VEB_DI_IECP
drm/i915/gvt: refine ggtt range validation
drm/i915/gvt: Fix vGPU CSFE_CHICKEN1_REG mmio handler
drm/i915/gvt: Fix GFX_MODE handling
drm/i915/gvt: Update force-to-nonpriv register whitelist
drm/i915/gvt: Initialize intel_gvt_gtt_entry in stack
ima: show rules with IMA_INMASK correctly
evm: check hash algorithm passed to init_desc()
scsi: libsas: delete sas port if expander discover failed
scsi: libsas: only clear phy->in_shutdown after shutdown event done
scsi: scsi_dh_alua: Fix possible null-ptr-deref
scsi: smartpqi: properly set both the DMA mask and the coherent DMA mask
scsi: zfcp: fix to prevent port_remove with pure auto scan LUNs (only sdevs)
scsi: zfcp: fix missing zfcp_port reference put on -EBUSY from port_remove
scsi: libcxgbi: add a check for NULL pointer in cxgbi_check_route()
net: phy: dp83867: Set up RGMII TX delay
net: phy: dp83867: do not call config_init twice
net: phy: dp83867: increase SGMII autoneg timer duration
net: phy: dp83867: fix speed 10 in sgmii mode
net: phy: marvell10g: report if the PHY fails to boot firmware
net: phylink: ensure consistent phy interface mode
cgroup: Use css_tryget() instead of css_tryget_online() in task_get_css()
blk-mq: Fix memory leak in error handling
usbip: usbip_host: fix stub_dev lock context imbalance regression
net: sh_eth: fix mdio access in sh_eth_close() for R-Car Gen2 and RZ/A1 SoCs
MIPS: uprobes: remove set but not used variable 'epc'
s390/crypto: fix possible sleep during spinlock aquired
MIPS: pistachio: Build uImage.gz by default
MIPS: Make virt_addr_valid() return bool
MIPS: Bounds check virt_addr_valid
CIFS: cifs_read_allocate_pages: don't iterate through whole page array on ENOMEM
RDMA/efa: Remove MAYEXEC flag check from mmap flow
mlx5: avoid 64-bit division
IB/hfi1: Validate page aligned for a given virtual address
IB/{qib, hfi1, rdmavt}: Correct ibv_devinfo max_mr value
IB/hfi1: Insure freeze_work work_struct is canceled on shutdown
IB/rdmavt: Fix alloc_qpn() WARN_ON()
ASoC: sun4i-codec: fix first delay on Speaker
drm/amdgpu: reserve stollen vram for raven series
media: venus: hfi_parser: fix a regression in parser
selftests: bpf: fix compiler warning in flow_dissector test
arm64: use the correct function type for __arm64_sys_ni_syscall
arm64: use the correct function type in SYSCALL_DEFINE0
arm64: fix syscall_fn_t type
block: don't protect generic_make_request_checks with blk_queue_enter
block: move blk_exit_queue into __blk_release_queue
selftests: bpf: complete sub-register zero extension checks
selftests: bpf: move sub-register zero extension checks into subreg.c
ovl: detect overlapping layers
drm/i915/icl: Add WaDisableBankHangMode
ALSA: fireface: Use ULL suffixes for 64-bit constants
signal/arm64: Use force_sig not force_sig_fault for SIGKILL
nl80211: fill all policy .type entries
mac80211: free peer keys before vif down in mesh
ANDROID: ABI out: Use the extension .xml rather then .out
drm/mediatek: respect page offset for PRIME mmap calls
drm/mediatek: adjust ddp clock control flow
ALSA: hda/realtek - Improve the headset mic for Acer Aspire laptops
KVM: PPC: Book3S HV: XIVE: Fix the enforced limit on the vCPU identifier
KVM: PPC: Book3S HV: XIVE: Do not test the EQ flag validity when resetting
KVM: PPC: Book3S HV: XIVE: Clear file mapping when device is released
KVM: PPC: Book3S HV: Don't take kvm->lock around kvm_for_each_vcpu
KVM: PPC: Book3S: Use new mutex to synchronize access to rtas token list
KVM: PPC: Book3S HV: Use new mutex to synchronize MMU setup
KVM: PPC: Book3S HV: Avoid touching arch.mmu_ready in XIVE release functions
Revert "drivers: thermal: tsens: Add new operation to check if a sensor is enabled"
net/mlx5e: Disable rxhash when CQE compress is enabled
net/mlx5e: restrict the real_dev of vlan device is the same as uplink device
net/mlx5: Allocate root ns memory using kzalloc to match kfree
net/mlx5: Avoid double free in fs init error unwinding path
net/mlx5: Avoid double free of root ns in the error flow path
net/mlx5: Fix error handling in mlx5_load()
Documentation: net-sysfs: Remove duplicate PHY device documentation
llc: fix skb leak in llc_build_and_send_ui_pkt()
selftests: pmtu: Fix encapsulating device in pmtu_vti6_link_change_mtu
dfs_cache: fix a wrong use of kfree in flush_cache_ent()
fs/cifs/smb2pdu.c: fix buffer free in SMB2_ioctl_free
cifs: fix memory leak of pneg_inbuf on -EOPNOTSUPP ioctl case
xenbus: Avoid deadlock during suspend due to open transactions
xen/pvcalls: Remove set but not used variable
tracing: Avoid memory leak in predicate_parse()
habanalabs: fix bug in checking huge page optimization
mmc: sdhci: Fix SDIO IRQ thread deadlock
dpaa_eth: use only online CPU portals
net: mvneta: Fix err code path of probe
net: stmmac: Do not output error on deferred probe
Btrfs: fix race updating log root item during fsync
Btrfs: fix wrong ctime and mtime of a directory after log replay
ARC: [plat-hsdk] Get rid of inappropriate PHY settings
ARC: [plat-hsdk]: Add support of Vivante GPU
ARC: [plat-hsdk]: enable creg-gpio controller
Btrfs: fix fsync not persisting changed attributes of a directory
btrfs: qgroup: Check bg while resuming relocation to avoid NULL pointer dereference
btrfs: reloc: Also queue orphan reloc tree for cleanup to avoid BUG_ON()
Btrfs: incremental send, fix emission of invalid clone operations
Btrfs: incremental send, fix file corruption when no-holes feature is enabled
btrfs: correct zstd workspace manager lock to use spin_lock_bh()
btrfs: Ensure replaced device doesn't have pending chunk allocation
ia64: fix build errors by exporting paddr_to_nid()
ASoC: SOF: Intel: hda: fix the hda init chip
ASoC: SOF: ipc: fix a race, leading to IPC timeouts
ASoC: SOF: control: correct the copy size for bytes kcontrol put
ASoC: SOF: pcm: remove warning - initialize workqueue on open
ASoC: SOF: pcm: clear hw_params_upon_resume flag correctly
ASoC: SOF: core: fix error handling with the probe workqueue
ASoC: SOF: core: remove snd_soc_unregister_component in case of error
ASoC: SOF: core: remove DSP after unregistering machine driver
ASoC: soc-core: fixup references at soc_cleanup_card_resources()
arm64/module: revert to unsigned interpretation of ABS16/32 relocations
KVM: s390: Do not report unusabled IDs via KVM_CAP_MAX_VCPU_ID
kvm: fix compile on s390 part 2
xprtrdma: Use struct_size() in kzalloc()
tools headers UAPI: Sync kvm.h headers with the kernel sources
perf record: Fix s390 missing module symbol and warning for non-root users
perf machine: Read also the end of the kernel
perf test vmlinux-kallsyms: Ignore aliases to _etext when searching on kallsyms
perf session: Add missing swap ops for namespace events
perf namespace: Protect reading thread's namespace
tools headers UAPI: Sync drm/drm.h with the kernel
s390/crypto: fix gcm-aes-s390 selftest failures
s390/zcrypt: Fix wrong dispatching for control domain CPRBs
s390/pci: fix assignment of bus resources
s390/pci: fix struct definition for set PCI function
s390: mark __cpacf_check_opcode() and cpacf_query_func() as __always_inline
s390: add unreachable() to dump_fault_info() to fix -Wmaybe-uninitialized
tools headers UAPI: Sync drm/i915_drm.h with the kernel
tools headers UAPI: Sync linux/fs.h with the kernel
tools headers UAPI: Sync linux/sched.h with the kernel
tools arch x86: Sync asm/cpufeatures.h with the with the kernel
tools include UAPI: Update copy of files related to new fspick, fsmount, fsconfig, fsopen, move_mount and open_tree syscalls
perf arm64: Fix mksyscalltbl when system kernel headers are ahead of the kernel
perf data: Fix 'strncat may truncate' build failure with recent gcc
arm64: Fix the arm64_personality() syscall wrapper redirection
rtw88: Make some symbols static
rtw88: avoid circular locking between local->iflist_mtx and rtwdev->mutex
rsi: Properly initialize data in rsi_sdio_ta_reset
rtw88: fix unassigned rssi_level in rtw_sta_info
rtw88: fix subscript above array bounds compiler warning
fuse: extract helper for range writeback
fuse: fix copy_file_range() in the writeback case
mmc: meson-gx: fix irq ack
mmc: tmio: fix SCC error handling to avoid false positive CRC error
mmc: tegra: Fix a warning message
memstick: mspro_block: Fix an error code in mspro_block_issue_req()
mac80211: mesh: fix RCU warning
nl80211: fix station_info pertid memory leak
mac80211: Do not use stack memory with scatterlist for GMAC
ALSA: line6: Assure canceling delayed work at disconnection
configfs: Fix use-after-free when accessing sd->s_dentry
ALSA: hda - Force polling mode on CNL for fixing codec communication
i2c: synquacer: fix synquacer_i2c_doxfer() return value
i2c: mlxcpld: Fix wrong initialization order in probe
i2c: dev: fix potential memory leak in i2cdev_ioctl_rdwr
RDMA/core: Fix panic when port_data isn't initialized
RDMA/uverbs: Pass udata on uverbs error unwind
RDMA/core: Clear out the udata before error unwind
net: aquantia: tcp checksum 0xffff being handled incorrectly
net: aquantia: fix LRO with FCS error
net: aquantia: check rx csum for all packets in LRO session
net: aquantia: tx clean budget logic error
vhost: scsi: add weight support
vhost: vsock: add weight support
vhost_net: fix possible infinite loop
vhost: introduce vhost_exceeds_weight()
virtio: Fix indentation of VIRTIO_MMIO
virtio: add unlikely() to WARN_ON_ONCE()
iommu/vt-d: Set the right field for Page Walk Snoop
iommu/vt-d: Fix lock inversion between iommu->lock and device_domain_lock
iommu: Add missing new line for dma type
drm/etnaviv: lock MMU while dumping core
block: Don't revalidate bdev of hidden gendisk
loop: Don't change loop device under exclusive opener
drm/imx: ipuv3-plane: fix atomic update status query for non-plus i.MX6Q
drm/qxl: drop WARN_ONCE()
iio: temperature: mlx90632 Relax the compatibility check
iio: imu: st_lsm6dsx: fix PM support for st_lsm6dsx i2c controller
staging:iio:ad7150: fix threshold mode config bit
fuse: add FUSE_WRITE_KILL_PRIV
fuse: fallocate: fix return with locked inode
PCI: PM: Avoid possible suspend-to-idle issue
ACPI: PM: Call pm_set_suspend_via_firmware() during hibernation
ACPI/PCI: PM: Add missing wakeup.flags.valid checks
ovl: support the FS_IOC_FS[SG]ETXATTR ioctls
soundwire: stream: fix out of boundary access on port properties
net: tulip: de4x5: Drop redundant MODULE_DEVICE_TABLE()
selftests/tls: add test for sleeping even though there is data
net/tls: fix no wakeup on partial reads
selftests/tls: test for lowat overshoot with multiple records
net/tls: fix lowat calculation if some data came from previous record
dpaa2-eth: Make constant 64-bit long
dpaa2-eth: Use PTR_ERR_OR_ZERO where appropriate
dpaa2-eth: Fix potential spectre issue
bonding/802.3ad: fix slave link initialization transition states
io_uring: Fix __io_uring_register() false success
net: ethtool: Document get_rxfh_context and set_rxfh_context ethtool ops
net: stmmac: dwmac-mediatek: modify csr_clk value to fix mdio read/write fail
net: stmmac: fix csr_clk can't be zero issue
net: stmmac: update rx tail pointer register to fix rx dma hang issue.
ip_sockglue: Fix missing-check bug in ip_ra_control()
ipv6_sockglue: Fix a missing-check bug in ip6_ra_control()
efi: Allow the number of EFI configuration tables entries to be zero
efi/x86/Add missing error handling to old_memmap 1:1 mapping code
parisc: Fix compiler warnings in float emulation code
parisc/slab: cleanup after /proc/slab_allocators removal
bpf: sockmap, fix use after free from sleep in psock backlog workqueue
net: sched: don't use tc_action->order during action dump
cxgb4: Revert "cxgb4: Remove SGE_HOST_PAGE_SIZE dependency on page size"
net: fec: fix the clk mismatch in failed_reset path
habanalabs: Avoid using a non-initialized MMU cache mutex
habanalabs: fix debugfs code
uapi/habanalabs: add opcode for enable/disable device debug mode
habanalabs: halt debug engines on user process close
selftests: rtc: rtctest: specify timeouts
selftests/harness: Allow test to configure timeout
selftests/ftrace: Add checkbashisms meta-testcase
selftests/ftrace: Make a script checkbashisms clean
media: smsusb: better handle optional alignment
test_firmware: Use correct snprintf() limit
genwqe: Prevent an integer overflow in the ioctl
parport: Fix mem leak in parport_register_dev_model
fpga: dfl: expand minor range when registering chrdev region
fpga: dfl: Add lockdep classes for pdata->lock
fpga: dfl: afu: Pass the correct device to dma_mapping_error()
fpga: stratix10-soc: fix use-after-free on s10_init()
w1: ds2408: Fix typo after 49695ac46861 (reset on output_write retry with readback)
kheaders: Do not regenerate archive if config is not changed
kheaders: Move from proc to sysfs
drm/amd/display: Don't load DMCU for Raven 1 (v2)
drm/i915: Maintain consistent documentation subsection ordering
scripts/sphinx-pre-install: make it handle Sphinx versions
docs: Fix conf.py for Sphinx 2.0
vt/fbcon: deinitialize resources in visual_init() after failed memory allocation
xfs: fix broken log reservation debugging
clocksource/drivers/timer-ti-dm: Change to new style declaration
ASoC: core: lock client_mutex while removing link components
ASoC: simple-card: Restore original configuration of DAI format
{nl,mac}80211: allow 4addr AP operation on crypto controlled devices
mac80211_hwsim: mark expected switch fall-through
mac80211: fix rate reporting inside cfg80211_calculate_bitrate_he()
mac80211: remove set but not used variable 'old'
mac80211: handle deauthentication/disassociation from TDLS peer
gpio: fix gpio-adp5588 build errors
pinctrl: stmfx: Fix compile issue when CONFIG_OF_GPIO is not defined
staging: kpc2000: Add dependency on MFD_CORE to kconfig symbol 'KPC2000'
perf/ring-buffer: Use regular variables for nesting
perf/ring-buffer: Always use {READ,WRITE}_ONCE() for rb->user_page data
perf/ring_buffer: Add ordering to rb->nest increment
perf/ring_buffer: Fix exposing a temporarily decreased data_head
x86/CPU/AMD: Don't force the CPB cap when running under a hypervisor
x86/boot: Provide KASAN compatible aliases for string routines
ALSA: hda/realtek - Enable micmute LED for Huawei laptops
Input: uinput - add compat ioctl number translation for UI_*_FF_UPLOAD
Input: silead - add MSSL0017 to acpi_device_id
cxgb4: offload VLAN flows regardless of VLAN ethtype
hsr: fix don't prune the master node from the node_db
net: mvpp2: cls: Fix leaked ethtool_rx_flow_rule
docs: fix multiple doc build warnings in enumeration.rst
lib/list_sort: fix kerneldoc build error
docs: fix numaperf.rst and add it to the doc tree
doc: Cope with the deprecation of AutoReporter
doc: Cope with Sphinx logging deprecations
bpf: sockmap, restore sk_write_space when psock gets dropped
selftests: bpf: add zero extend checks for ALU32 and/or/xor
bpf, riscv: clear target register high 32-bits for and/or/xor on ALU32
spi: abort spi_sync if failed to prepare_transfer_hardware
ALSA: hda/realtek - Set default power save node to 0
ipv4/igmp: fix build error if !CONFIG_IP_MULTICAST
powerpc/kexec: Fix loading of kernel + initramfs with kexec_file_load()
MIPS: TXx9: Fix boot crash in free_initmem()
MIPS: remove a space after -I to cope with header search paths for VDSO
MIPS: mark ginvt() as __always_inline
ipv4/igmp: fix another memory leak in igmpv3_del_delrec()
bnxt_en: Device serial number is supported only for PFs.
bnxt_en: Reduce memory usage when running in kdump kernel.
bnxt_en: Fix possible BUG() condition when calling pci_disable_msix().
bnxt_en: Fix aggregation buffer leak under OOM condition.
ipv6: Fix redirect with VRF
net: stmmac: fix reset gpio free missing
mISDN: make sure device name is NUL terminated
net: macb: save/restore the remaining registers and features
media: dvb: warning about dvb frequency limits produces too much noise
net/tls: don't ignore netdev notifications if no TLS features
net/tls: fix state removal with feature flags off
net/tls: avoid NULL-deref on resync during device removal
Documentation: add TLS offload documentation
Documentation: tls: RSTify the ktls documentation
Documentation: net: move device drivers docs to a submenu
mISDN: Fix indenting in dsp_cmx.c
ocelot: Dont allocate another multicast list, use __dev_mc_sync
Validate required parameters in inet6_validate_link_af
xhci: Use %zu for printing size_t type
xhci: Convert xhci_handshake() to use readl_poll_timeout_atomic()
xhci: Fix immediate data transfer if buffer is already DMA mapped
usb: xhci: avoid null pointer deref when bos field is NULL
usb: xhci: Fix a potential null pointer dereference in xhci_debugfs_create_endpoint()
xhci: update bounce buffer with correct sg num
media: usb: siano: Fix false-positive "uninitialized variable" warning
spi: spi-fsl-spi: call spi_finalize_current_message() at the end
ALSA: hda/realtek - Check headset type by unplug and resume
powerpc/perf: Fix MMCRA corruption by bhrb_filter
powerpc/powernv: Return for invalid IMC domain
HID: logitech-hidpp: Add support for the S510 remote control
HID: multitouch: handle faulty Elo touch device
selftests: netfilter: add flowtable test script
netfilter: nft_flow_offload: IPCB is only valid for ipv4 family
netfilter: nft_flow_offload: don't offload when sequence numbers need adjustment
netfilter: nft_flow_offload: set liberal tracking mode for tcp
netfilter: nf_flow_table: ignore DF bit setting
ASoC: Intel: sof-rt5682: fix AMP quirk support
ASoC: Intel: sof-rt5682: fix for codec button mapping
clk: ti: clkctrl: Fix clkdm_clk handling
clk: imx: imx8mm: fix int pll clk gate
clk: sifive: restrict Kconfig scope for the FU540 PRCI driver
RDMA/hns: Fix PD memory leak for internal allocation
netfilter: nat: fix udp checksum corruption
selftests: netfilter: missing error check when setting up veth interface
RDMA/srp: Rename SRP sysfs name after IB device rename trigger
ipvs: Fix use-after-free in ip_vs_in
ARC: [plat-hsdk]: Add missing FIFO size entry in GMAC node
ARC: [plat-hsdk]: Add missing multicast filter bins number to GMAC node
samples, bpf: suppress compiler warning
samples, bpf: fix to change the buffer size for read()
bpf: Check sk_fullsock() before returning from bpf_sk_lookup()
bpf: fix out-of-bounds read in __bpf_skc_lookup
Documentation/networking: fix af_xdp.rst Sphinx warnings
netfilter: nft_fib: Fix existence check support
netfilter: nf_queue: fix reinject verdict handling
dmaengine: sprd: Add interrupt support for 2-stage transfer
dmaengine: sprd: Fix the right place to configure 2-stage transfer
dmaengine: sprd: Fix block length overflow
dmaengine: sprd: Fix the incorrect start for 2-stage destination channels
dmaengine: sprd: Add validation of current descriptor in irq handler
dmaengine: sprd: Fix the possible crash when getting descriptor status
tty: max310x: Fix external crystal register setup
serial: sh-sci: disable DMA for uart_console
serial: imx: remove log spamming error message
tty: serial: msm_serial: Fix XON/XOFF
USB: serial: option: add Telit 0x1260 and 0x1261 compositions
USB: serial: pl2303: add Allied Telesis VT-Kit3
USB: serial: option: add support for Simcom SIM7500/SIM7600 RNDIS mode
dmaengine: tegra210-adma: Fix spelling
dmaengine: tegra210-adma: Fix channel FIFO configuration
dmaengine: tegra210-adma: Fix crash during probe
dmaengine: mediatek-cqdma: sleeping in atomic context
dmaengine: dw-axi-dmac: fix null dereference when pointer first is null
perf/x86/intel/ds: Fix EVENT vs. UEVENT PEBS constraints
USB: rio500: update Documentation
USB: rio500: simplify locking
USB: rio500: fix memory leak in close after disconnect
USB: rio500: refuse more than one device at a time
usbip: usbip_host: fix BUG: sleeping function called from invalid context
USB: sisusbvga: fix oops in error path of sisusb_probe
USB: Add LPM quirk for Surface Dock GigE adapter
media: usb: siano: Fix general protection fault in smsusb
usb: mtu3: fix up undefined reference to usb_debug_root
USB: Fix slab-out-of-bounds write in usb_get_bos_descriptor
Input: elantech - enable middle button support on 2 ThinkPads
dmaengine: fsl-qdma: Add improvement
dmaengine: jz4780: Fix transfers being ACKed too soon
gcc-plugins: Fix build failures under Darwin host
MAINTAINERS: Update Stefan Wahren email address
netfilter: nf_tables: fix oops during rule dump
ARC: mm: SIGSEGV userspace trying to access kernel virtual memory
ARC: fix build warnings
ARM: dts: bcm: Add missing device_type = "memory" property
soc: bcm: brcmstb: biuctrl: Register writes require a barrier
soc: brcmstb: Fix error path for unsupported CPUs
ARM: dts: dra71x: Disable usb4_tm target module
ARM: dts: dra71x: Disable rtc target module
ARM: dts: dra76x: Disable usb4_tm target module
ARM: dts: dra76x: Disable rtc target module
ASoC: simple-card: Fix configuration of DAI format
ASoC: Intel: soc-acpi: Fix machine selection order
ASoC: rt5677-spi: Handle over reading when flipping bytes
ASoC: soc-dpm: fixup DAI active unbalance
pinctrl: intel: Clear interrupt status in mask/unmask callback
pinctrl: intel: Use GENMASK() consistently
parisc: Allow building 64-bit kernel without -mlong-calls compiler option
parisc: Kconfig: remove ARCH_DISCARD_MEMBLOCK
staging: wilc1000: Fix some double unlock bugs in wilc_wlan_cleanup()
staging: vc04_services: prevent integer overflow in create_pagelist()
Staging: vc04_services: Fix a couple error codes
staging: wlan-ng: fix adapter initialization failure
staging: kpc2000: double unlock in error handling in kpc_dma_transfer()
staging: kpc2000: Fix build error without CONFIG_UIO
staging: kpc2000: fix build error on xtensa
staging: erofs: set sb->s_root to NULL when failing from __getname()
ARM: imx: cpuidle-imx6sx: Restrict the SW2ISO increase to i.MX6SX
firmware: imx: SCU irq should ONLY be enabled after SCU IPC is ready
arm64: imx: Fix build error without CONFIG_SOC_BUS
ima: fix wrong signed policy requirement when not appraising
x86/ima: Check EFI_RUNTIME_SERVICES before using
stacktrace: Unbreak stack_trace_save_tsk_reliable()
HID: wacom: Sync INTUOSP2_BT touch state after each frame if necessary
HID: wacom: Correct button numbering 2nd-gen Intuos Pro over Bluetooth
HID: wacom: Send BTN_TOUCH in response to INTUOSP2_BT eraser contact
HID: wacom: Don't report anything prior to the tool entering range
HID: wacom: Don't set tool type until we're in range
ASoC: cs42xx8: Add regcache mask dirty
regulator: tps6507x: Fix boot regression due to testing wrong init_data pointer
ASoC: fsl_asrc: Fix the issue about unsupported rate
spi: bitbang: Fix NULL pointer dereference in spi_unregister_master
Input: elan_i2c - increment wakeup count if wake source
wireless: Skip directory when generating certificates
ASoC: ak4458: rstn_control - return a non-zero on error only
ASoC: soc-pcm: BE dai needs prepare when pause release after resume
ASoC: ak4458: add return value for ak4458_probe
ASoC : cs4265 : readable register too low
ASoC: SOF: fix error in verbose ipc command parsing
ASoC: SOF: fix race in FW boot timeout handling
ASoC: SOF: nocodec: fix undefined reference
iio: adc: ti-ads8688: fix timestamp is not updated in buffer
iio: dac: ds4422/ds4424 fix chip verification
HID: rmi: Use SET_REPORT request on control endpoint for Acer Switch 3 and 5
HID: logitech-hidpp: add support for the MX5500 keyboard
HID: logitech-dj: add support for the Logitech MX5500's Bluetooth Mini-Receiver
HID: i2c-hid: add iBall Aer3 to descriptor override
spi: Fix Raspberry Pi breakage
ARM: dts: dra76x: Update MMC2_HS200_MANUAL1 iodelay values
ARM: dts: am57xx-idk: Remove support for voltage switching for SD card
bus: ti-sysc: Handle devices with no control registers
ARM: dts: Configure osc clock for d_can on am335x
iio: imu: mpu6050: Fix FIFO layout for ICM20602
lkdtm/bugs: Adjust recursion test to avoid elision
lkdtm/usercopy: Moves the KERNEL_DS test to non-canonical
iio: adc: ads124: avoid buffer overflow
iio: adc: modify NPCM ADC read reference voltage
Change-Id: I98c823993370027391cc21dfb239c3049f025136
Signed-off-by: Raghavendra Rao Ananta <rananta@codeaurora.org>
2019-06-24 20:30:20 -04:00
|
|
|
depends on OF_GPIO
|
2019-05-09 04:58:51 -04:00
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GPIOLIB_IRQCHIP
|
|
|
|
select MFD_STMFX
|
|
|
|
help
|
|
|
|
Driver for STMicroelectronics Multi-Function eXpander (STMFX)
|
|
|
|
GPIO expander.
|
|
|
|
This provides a GPIO interface supporting inputs and outputs,
|
|
|
|
and configuring push-pull, open-drain, and can also be used as
|
|
|
|
interrupt-controller.
|
|
|
|
|
2011-12-18 17:44:26 -05:00
|
|
|
config PINCTRL_U300
|
|
|
|
bool "U300 pin controller driver"
|
2011-05-02 14:54:38 -04:00
|
|
|
depends on ARCH_U300
|
|
|
|
select PINMUX
|
2011-11-16 15:58:10 -05:00
|
|
|
select GENERIC_PINCONF
|
2011-11-05 16:28:46 -04:00
|
|
|
|
2011-11-16 03:22:59 -05:00
|
|
|
config PINCTRL_COH901
|
|
|
|
bool "ST-Ericsson U300 COH 901 335/571 GPIO"
|
2012-06-18 14:07:50 -04:00
|
|
|
depends on GPIOLIB && ARCH_U300 && PINCTRL_U300
|
2014-03-25 08:37:17 -04:00
|
|
|
select GPIOLIB_IRQCHIP
|
2011-11-16 03:22:59 -05:00
|
|
|
help
|
|
|
|
Say yes here to support GPIO interface on ST-Ericsson U300.
|
|
|
|
The names of the two IP block variants supported are
|
|
|
|
COH 901 335 and COH 901 571/3. They contain 3, 5 or 7
|
|
|
|
ports of 8 GPIO pins each.
|
|
|
|
|
2016-05-13 01:19:15 -04:00
|
|
|
config PINCTRL_MAX77620
|
|
|
|
tristate "MAX77620/MAX20024 Pincontrol support"
|
2016-10-28 04:19:05 -04:00
|
|
|
depends on MFD_MAX77620 && OF
|
2016-06-13 11:18:35 -04:00
|
|
|
select PINMUX
|
2016-05-13 01:19:15 -04:00
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
Say Yes here to enable Pin control support for Maxim PMIC MAX77620.
|
|
|
|
This PMIC has 8 GPIO pins that work as GPIO as well as special
|
|
|
|
function in alternate mode. This driver also configure push-pull,
|
|
|
|
open drain, FPS slots etc.
|
|
|
|
|
2013-08-06 09:12:35 -04:00
|
|
|
config PINCTRL_PALMAS
|
2016-06-13 17:10:21 -04:00
|
|
|
tristate "Pinctrl driver for the PALMAS Series MFD devices"
|
2013-08-06 09:12:35 -04:00
|
|
|
depends on OF && MFD_PALMAS
|
2013-08-22 02:30:08 -04:00
|
|
|
select PINMUX
|
2013-08-06 09:12:35 -04:00
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
Palmas device supports the configuration of pins for different
|
|
|
|
functionality. This driver supports the pinmux, push-pull and
|
|
|
|
open drain configuration for the Palmas series devices like
|
|
|
|
TPS65913, TPS80036 etc.
|
|
|
|
|
2016-02-01 17:48:30 -05:00
|
|
|
config PINCTRL_PIC32
|
|
|
|
bool "Microchip PIC32 pin controller driver"
|
|
|
|
depends on OF
|
|
|
|
depends on MACH_PIC32
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GPIOLIB_IRQCHIP
|
|
|
|
select OF_GPIO
|
|
|
|
help
|
|
|
|
This is the pin controller and gpio driver for Microchip PIC32
|
|
|
|
microcontrollers. This option is selected automatically when specific
|
|
|
|
machine and arch are selected to build.
|
|
|
|
|
|
|
|
config PINCTRL_PIC32MZDA
|
|
|
|
def_bool y if PIC32MZDA
|
|
|
|
select PINCTRL_PIC32
|
|
|
|
|
2015-01-09 10:43:48 -05:00
|
|
|
config PINCTRL_ZYNQ
|
|
|
|
bool "Pinctrl driver for Xilinx Zynq"
|
|
|
|
depends on ARCH_ZYNQ
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
2015-11-30 02:57:35 -05:00
|
|
|
This selects the pinctrl driver for Xilinx Zynq.
|
2015-01-09 10:43:48 -05:00
|
|
|
|
2017-05-12 12:52:56 -04:00
|
|
|
config PINCTRL_INGENIC
|
|
|
|
bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
|
2018-08-21 12:42:35 -04:00
|
|
|
default MACH_INGENIC
|
2017-05-29 07:40:45 -04:00
|
|
|
depends on OF
|
2018-08-21 12:42:35 -04:00
|
|
|
depends on MIPS || COMPILE_TEST
|
2017-05-12 12:52:56 -04:00
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GENERIC_PINCTRL_GROUPS
|
|
|
|
select GENERIC_PINMUX_FUNCTIONS
|
2018-08-21 12:42:32 -04:00
|
|
|
select GPIOLIB
|
|
|
|
select GPIOLIB_IRQCHIP
|
2017-05-12 12:52:56 -04:00
|
|
|
select REGMAP_MMIO
|
|
|
|
|
2017-08-20 21:28:40 -04:00
|
|
|
config PINCTRL_RK805
|
|
|
|
tristate "Pinctrl and GPIO driver for RK805 PMIC"
|
|
|
|
depends on MFD_RK808
|
|
|
|
select GPIOLIB
|
|
|
|
select PINMUX
|
|
|
|
select GENERIC_PINCONF
|
|
|
|
help
|
|
|
|
This selects the pinctrl driver for RK805.
|
|
|
|
|
2018-01-05 19:09:26 -05:00
|
|
|
config PINCTRL_OCELOT
|
2018-12-20 09:44:31 -05:00
|
|
|
bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
|
2018-01-05 19:09:26 -05:00
|
|
|
depends on OF
|
2018-12-22 05:15:04 -05:00
|
|
|
depends on HAS_IOMEM
|
2018-01-05 19:09:26 -05:00
|
|
|
select GPIOLIB
|
2018-07-25 08:26:21 -04:00
|
|
|
select GPIOLIB_IRQCHIP
|
2018-01-05 19:09:26 -05:00
|
|
|
select GENERIC_PINCONF
|
|
|
|
select GENERIC_PINCTRL_GROUPS
|
|
|
|
select GENERIC_PINMUX_FUNCTIONS
|
2018-12-20 09:44:31 -05:00
|
|
|
select OF_GPIO
|
2018-01-05 19:09:26 -05:00
|
|
|
select REGMAP_MMIO
|
|
|
|
|
2018-04-04 13:22:52 -04:00
|
|
|
source "drivers/pinctrl/actions/Kconfig"
|
2016-08-30 03:54:24 -04:00
|
|
|
source "drivers/pinctrl/aspeed/Kconfig"
|
2015-03-04 19:35:49 -05:00
|
|
|
source "drivers/pinctrl/bcm/Kconfig"
|
2014-05-19 13:36:29 -04:00
|
|
|
source "drivers/pinctrl/berlin/Kconfig"
|
2014-09-03 07:37:38 -04:00
|
|
|
source "drivers/pinctrl/freescale/Kconfig"
|
2014-10-24 08:16:52 -04:00
|
|
|
source "drivers/pinctrl/intel/Kconfig"
|
2012-10-24 17:38:58 -04:00
|
|
|
source "drivers/pinctrl/mvebu/Kconfig"
|
2014-07-11 08:57:06 -04:00
|
|
|
source "drivers/pinctrl/nomadik/Kconfig"
|
2018-08-08 05:25:26 -04:00
|
|
|
source "drivers/pinctrl/nuvoton/Kconfig"
|
2015-11-21 13:04:53 -05:00
|
|
|
source "drivers/pinctrl/pxa/Kconfig"
|
2014-07-09 07:55:12 -04:00
|
|
|
source "drivers/pinctrl/qcom/Kconfig"
|
2014-07-10 08:03:27 -04:00
|
|
|
source "drivers/pinctrl/samsung/Kconfig"
|
2012-12-15 17:51:19 -05:00
|
|
|
source "drivers/pinctrl/sh-pfc/Kconfig"
|
2012-03-28 12:57:07 -04:00
|
|
|
source "drivers/pinctrl/spear/Kconfig"
|
2017-08-17 02:50:38 -04:00
|
|
|
source "drivers/pinctrl/sprd/Kconfig"
|
2016-01-14 07:16:30 -05:00
|
|
|
source "drivers/pinctrl/stm32/Kconfig"
|
2014-04-18 12:53:02 -04:00
|
|
|
source "drivers/pinctrl/sunxi/Kconfig"
|
2016-01-23 10:30:08 -05:00
|
|
|
source "drivers/pinctrl/tegra/Kconfig"
|
pinctrl: Introduce TI IOdelay configuration driver
SoC family such as DRA7 family of processors have, in addition
to the regular muxing of pins (as done by pinctrl-single), a separate
hardware module called IODelay which is also expected to be configured.
The "IODelay" module has it's own register space that is independent
of the control module and the padconf register area.
With recent changes to the pinctrl framework, we can now support
this hardware with a reasonably minimal driver by using #pinctrl-cells,
GENERIC_PINCTRL_GROUPS and GENERIC_PINMUX_FUNCTIONS.
It is advocated strongly in TI's official documentation considering
the existing design of the DRA7 family of processors during mux or
IODelay reconfiguration, there is a potential for a significant glitch
which may cause functional impairment to certain hardware. It is
hence recommended to do as little of muxing as absolutely necessary
without I/O isolation (which can only be done in initial stages of
bootloader).
NOTE: with the system wide I/O isolation scheme present in DRA7 SoC
family, it is not reasonable to do stop all I/O operations for every
such pad configuration scheme. So, we will let it glitch when used in
this mode.
Even with the above limitation, certain functionality such as MMC has
mandatory need for IODelay reconfiguration requirements, depending on
speed of transfer. In these cases, with careful examination of usecase
involved, the expected glitch can be controlled such that it does not
impact functionality.
In short, IODelay module support as a padconf driver being introduced
here is not expected to do SoC wide I/O Isolation and is meant for
a limited subset of IODelay configuration requirements that need to
be dynamic and whose glitchy behavior will not cause functionality
failure for that interface.
IMPORTANT NOTE: we take the approach of keeping LOCK_BITs cleared
to 0x0 at all times, even when configuring Manual IO Timing Modes.
This is done by eliminating the LOCK_BIT=1 setting from Step
of the Manual IO timing Mode configuration procedure. This option
leaves the CFG_* registers unprotected from unintended writes to the
CTRL_CORE_PAD_* registers while Manual IO Timing Modes are configured.
This approach is taken to allow for a generic driver to exist in kernel
world that has to be used carefully in required usecases.
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
[tony@atomide.com: updated to use generic pinctrl functions, added
binding documentation, updated comments]
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-01-05 13:54:14 -05:00
|
|
|
source "drivers/pinctrl/ti/Kconfig"
|
2015-07-13 22:40:01 -04:00
|
|
|
source "drivers/pinctrl/uniphier/Kconfig"
|
2013-02-19 15:32:19 -05:00
|
|
|
source "drivers/pinctrl/vt8500/Kconfig"
|
2015-01-21 00:28:15 -05:00
|
|
|
source "drivers/pinctrl/mediatek/Kconfig"
|
2017-04-24 09:01:13 -04:00
|
|
|
source "drivers/pinctrl/zte/Kconfig"
|
2017-10-12 08:40:25 -04:00
|
|
|
source "drivers/pinctrl/meson/Kconfig"
|
2018-05-21 06:00:01 -04:00
|
|
|
source "drivers/pinctrl/cirrus/Kconfig"
|
2012-03-28 12:57:07 -04:00
|
|
|
|
2012-08-28 06:44:59 -04:00
|
|
|
config PINCTRL_XWAY
|
|
|
|
bool
|
|
|
|
depends on SOC_TYPE_XWAY
|
|
|
|
depends on PINCTRL_LANTIQ
|
|
|
|
|
2013-10-15 09:39:38 -04:00
|
|
|
config PINCTRL_TB10X
|
|
|
|
bool
|
2015-04-15 04:00:35 -04:00
|
|
|
depends on OF && ARC_PLAT_TB10X
|
|
|
|
select GPIOLIB
|
2013-10-15 09:39:38 -04:00
|
|
|
|
2017-10-06 01:08:05 -04:00
|
|
|
endif
|