Linux kernel source tree
Go to file
Greg Kroah-Hartman 47b56cc367 IIO: New device support, features and cleanup for the 7.2 cycle.
Like many areas of the kernel IIO has seen a lot of new contributors
 though in this case that is not all AI driven, but also reflects and annual
 surge of student contributions from usp.br. We also have several new
 regular reviewers who are helping with the surge (thanks to all our
 active reviewers!)
 
 Given there was a lot of cases of similar improvements applied to
 different drivers, I have grouped those into a special section (various
 drivers) to avoid mass duplication.
 
 New device support
 ------------------
 
 adi,ad4130
 - Add support for AD4129-4, AD4129-8, AD4130-4, AD4131-4 and AD4131-8
   after reworking the driver to be suitable for multiple device support.
 adi,ad4080
 - Support the AD4880 and AD4884 dual-channel parts. Interesting parts
   as have two separate data pipelines (including SPI buses interfaces),
   but the only current backend IP combines the two so they cannot be
   treated as independent devices.
 adi,ad5706r
 - New driver for this 4 channel current output DAC.
 adi,ad4691
 - New driver supporting this family of ADCs. Support for AD4691, AD4692,
   AD4693 and AD4694 which support either 8 or 16 channels with different
   max sampling rates. Feature rich driver including SPI offload support.
 adi,ltc2983
 - Add support for the ADT7604 in which the same sensor die as the
   LTC2984 is used for leak detection (liquid coverage of a sense area).
 allwinner,adc
 - Support for A523 SoCs. Similar to existing parts but with an additional
   clock.  Includes adding support for non contiguous channel lookup
   for in kernel use (fwnode_xlate callback).
 broadcomm,apds9999
 - New driver for the APDS9999 Ambient Light, RGB and proximity sensor.
 memsic,mmc5983
 - New driver for this 3-axis magnetometer.
 taos,tsl2772
 - Add support for the AVAGO APDS9900 and APDS9901 Ambient Light and
   Proximity sensors. which are very similar to existing part with slightly
   different integration time choices.  Includes removal of driver for these
   parts from drivers/misc.
 vishay,veml3328
 - New driver for this RGB+IR light sensor.
 
 Features
 --------
 
 IIO Core
 - Support for IEEE 754 floating point values in buffer scan elements.
 - Support quaternion axis representation (missing the scaler part)
 microchip,mcp4821
 - Add configurable gain control
 qcom,pm8xxx-xoadc
 - Add per channel labels.
 st,lsm6dsx
 - Support for rotation sensing on the LSM6DSV and LSM6DSV16X using
   both floating point and new quaterionaxis rotation modifier.
 
 MAINTAINERS update
 ------------------
 
 IIO top level entry
 - Include Documentation/driver-api/iio/
 adi,*
 - Top level ADI entry maintainer switch from Lars-Peter Clausen to Nuno Sá
   reflecting what has been the reality for some time. Thanks to Lars-Peter
   who was very active for many years, but has moved on to other things.
   Also add the linux@analog.com email list to ensure we don't get a gap
   in future.
 - Maintainer updates to reflect Cosmin Tanislav having moved on - thanks
   to Marcelo Schmitt for taking these over.
 sensiron,scd30
 - Replace maintainer (Tomasz Duszynski) with Maxwell Doose.
 
 Cleanups, minor fixes and hardening.
 ------------------------------------
 
 Documentation
 - Add missing powerdown modes to ABI docs.
 - Use modern helpers for buffer definition in the examples.
 core
 - Rework of the handling of timestamps so that the offset is cached at
   buffer resize time (during enabling) rather than based on assumption
   that relied in the timestamp being last and the largest element and
   so always 8 bytes before end of the scan. Underlying problem was
   triggered by scans with repeated type elements such as quaternions
   with each element more than 2 bytes - Giving a 16 byte+ aligned channel
   with result that a following timestamp may be 16 bytes from end of scan,
   rather than 8. Note that for the bosch,bno55 a compatibility hack means
   that it will duplicate the timestamp putting  a second copy at previously
   incorrect location.
 - Tidy up use of kernel types in buffer code to not use int64_t given all
   calls use s64.
 various drivers
 - Drop unused driver_data in device id tables - includes cleanup of various
   drivers that had only one choice where it can be hard coded elsewhere.
 - Move to named initializers for many i2c_device_id and platform_device_id
   tables (I have no idea how we go into habit of using named initializers
   for only a subset of the table types - e.g. of_device_id).
 - Make IIO_CHAN_SOFT_TIMESTAMP() macro a compound literal allowing simple
   use in various drivers that do dynamic channel definitions. Use it in
   all such cases.
 - Use dev_err_probe() and local dev variables to tidy up older drivers.
 - Switch more drivers to devm_mutex_init() to provide minor debug benefits.
 - Reorder code to put MODULE_DEVICE_TABLE() next to the tables.
 - Lots of use of cleanup.h magic to improve code flow, often including
   related refactors such as introducing helpers.
 - Replacement of usleep_range() with fsleep()
 - Reduce logging noise where functions either provide their own extensive
   reports on error, or where a clear error code is returned to userspace.
 - Minor spelling and style fixes (improving bracket usage, not using
   __packed etc)
 hid-sensors-*
 - Drop helpers for setting channel bit masks in favor of a compound
   literal at the call site.  Also general cleanup of surrounding code.
 hid-sensors-magn
 - Use u32 rather than bare unsigned for types.
 hid-sensors-rotation
 - Make sue of ext_scan_type handling for static case rather than duplicate
   chan_info structures.
 adi,ad3552r
 - Use field_get() to replace open coded equivalent.
 adi,ad4170
 - Switch from switch to table lookup for GPIO modes.
 adi,ad5686
 - Apply IWYU principal to included a consistent set of headers.
 - Deduplicate regmaps for AD5684 and AD5693 as identical.
 - Switch from an enum value in driver data and array look up to pointers
   to separate structures, improving readabilty and avoiding issues with
   0 value when using helpers to deal with different firmware types.
 - Add of_match_id table to SPI driver rather than relying on fallback to
   spi_device_id table.
 - Introduce some helpers for powerdown mask control.
 - Add helpers for control sync simplifying a couple of corner cases.
 - Docs fixes.
 - Add an ops structure to simplify future addition of operations beyond
   read and write.
 adi,ad7191
 - Switch to best practice of using device_property_present() to detect
   if an optional property is there rather than error values on querying
   the property.
 adi,ad7280a
 - Use local variables to improve readability of breaking up chan-address.
 adi,ad7825
 - Cleanup a type mismatch in clamp() call.
 adi,ad799x
 - Include improvements
 - Local dev variable to shorten code lines.
 - Cache regulator voltage at probe (these never change in practice)
 - Convert to devm for all unwind handling.
 adi,ad9832
 - Improve include relevance including replacing kernel.h with more specific
   headers.
 - Simplify some maths.
 adi,ad9834
 - Improve include relevance including replacing kernel.h with more specific
   headers.
 adi,adt7316
 - Add a comment to avoid future 'fixes' for error handling during the
   odd sequence used to flip from I2C mode to SPI mode.
 adi,adxl*
 - Documentation consistency improvements.
 asahi-kasei,ak8975
 - Fix missing runtime pm calls for buffered capture.
 - Fix missing pm_runtime_put_autosuspend() in an error path that would leave
   the device stuck on.
 - Close a potential uninitialized kernel stack leak.
 - Extensive driver modernization including: header relevance, fsleep()
   various minor bugs, dropping duplicate error messages and avoiding
   magic lengths for buffers.
 - Replace opencoded polling with iopoll().
 - Add error checking to gpio reads.
 avia,hx711
 - Move scale computation from global data to per device avoiding problems
   if multiple devices present.
 - General binding text cleanup.
 bosch,bmg160
 - Add missing mount-matrix entry to binding.
 bosch,bno55
 - Terminate error strings with newlines.
 devantech,srf08
 - Replace sprintf() with sysfs_emit() and sysfs_emit_at() to make intent
   clearer.
 freescale,mma8452
 - Add missing return value check.
 - Fix potential probe ordering issue by switching to non devm irq request.
 linear,ltc2309
 - Add chip specific read delays.
 - Improve chip_info structure, adding __counted_by_ptr marking and
   reorganizing to improve packing.
 linear,ltc2983
 - Fix a firmware combination where default n_wires of 2 bypasses exclusion
   of adi,current-rotate whereas explicitly setting it to 2 does not.
 - Fix potential race with completion reinit.
 - Improve error message wording consistency.
 - Use fwnode_property_present() to detect optional properties rather
   than fragile return value checking.
 microchip,mcp3422
 - Use of GENMASK(), FIELD_GET(), FIELD_PREP() to improve readability and
   generally modernize driver.
 microchip,mcp47feb02
 - Fix binding example to use a possible I2C address.
 - Fix binding bounds on channel number.
 - Standardize binding example indentation
 nxp,saradc
 - Increase chances of recovering from a failure in the interrupt handler
   by notifying the trigger that it can reenable even when the read failed.
 - Use field_get() to replace opencoded equivalent.
 qualcomm,*
 - Standardize on Qualcomm company naming in Kconfig.
 richtek,rtq6056
 - Add i2c_device_id table for legacy instantiation.
 samsung,ssp
 - Replace custom timestamp channel macro with main one.
 sciosense,ens210
 - Now scoped_guard() has been reworked, no need for a return
   that can never be reached.
 sensiron,scd30
 - Constify command lookup table.
 - Sanity check for NULL buffer of non zero size being provided to
   sc30_i2c_command()
 sensortek,stk3310
 - Include  more appropriate headers.
 - Ensure interrupt in appropriate mode after resume.
 - Structure definition improvements.
 - Use size_of() to replace opencoded sizes.
 siliconimage,si1133
 - Resolve counter related issues on timeout error paths.
 - Unused macro removal, improved macro definitions,.
 - Include relevance improvements.
 st,lsm6dsx
 - Fix an issue with applying invalid data check to wrong type of sample.
 taos,tcs3472
 - Try to powerdown chip on probe failure.
 - Devm usage and dropping of remove() callback.
 - Various other minor cleanup.
 taos,tsl2591
 - Dead code removal.
 - Simplify tsl2591_persist functions using a look up table.
 ti,ads1298
 - Fix wrong comment on timeout (and minor code improvement)
 - Drop unnecessary CONFIG2 write during init.
 ti,ads7950
 - Check ret rather that ret < 0 for spi_setup() call.
 - Use fully devm managed resources including moving to
   devm_regulator_get_enable_read_voltage() at probe time rather than
   querying evey time.
 - Using spi_optimize_message() to reduce CPU usage.
 ti,ads8688
 - User read_avail() callback rather than open coding handling of
   available attributes.
 ti,opt3001
 - Header relevance improvements
 - Use GENMASK for field definitions to improve readability.
 vishay,vcnl4000
 - Switch from enum in device_data to individual names structures
   impmroving code readabililty.
 - Move to devm handling for remainder of probe.
 vishay,veml6030
 - Drop pointless read of current Iteration Time index as it is not used.
 xilinx,ams
 - Fix potential out of bound channel lookup.
 - Replace some large switch statements with table lookups.
 yamaha,yas530
 - Put label in chip info structure to avoid look up in i2c_device_id table.
 
 Drop
 ----
 
 iio-trig-interrupt.
 - Not used for some time and no support for modern firmware bindings or
   in kernel users. So drop it.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCgAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAmolp9kRHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0FoieAxAArpdsc3rjgjeFxymnbXPWqjohz/XCg3Ps
 XXxbyaLCvphsJ7P7vsp7acX0vIdi+mqPLU+6Vl67OolFVKM3+84PMoHY3s0wbbMj
 xDgcI6zR4kwGUpGry9FKr3/UQaSNLo7ahYq7UZKJA8vCoHd11AUzh8TCz/myrdnK
 Ju6I+FScj6L8lkftaGgYqzHEOoKXQtXaUrYbUFQR/vm9/FlgEkF5qP4pcVxBfAox
 OtO9jjQOpOAZnTEEbjy6mmEVyuIzOAjLQFxPBzaUuWtZv51P5OZGOS0WNYvt4zvK
 ziaRPgTIShjUVGkQmhmZ3AjmrYmRjWMhyR58BAyYgqbN/OAwtaJEou8UCDeVQxst
 B3Tj10VrxuHCEmXvy7ex5SqsKBQ1BHuz3bS8u2znEFp7RcxIorXllRLckpdIFyIa
 LDyO6krus1mBhLVQ1LVhQNlpi6KKvVD3fcV/14fUoG/ZAP6ta3cdA7jybp1k4aNs
 PYdlTuJn9jLhRrjHEFaM9hT3St/MRSJ3/rFj4rEHufs3w7iATKWwR9YqcNG8VNFN
 rGz0aB72J1FxevP3/n5MfXkYUZTmw776Oy/IfB2swXMpH23L2+3b8+ZJUy2HJbBJ
 69sjgvEiFkhsJBI8eLe6pEWoD6wkq6KDamcYcgnUNPu8AaC45DLPuGHEPyjzk/AX
 vuc+ysTUb70=
 =AW+z
 -----END PGP SIGNATURE-----

Merge tag 'iio-for-7.2a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into work-testing

IIO: New device support, features and cleanup for the 7.2 cycle.

Like many areas of the kernel IIO has seen a lot of new contributors
though in this case that is not all AI driven, but also reflects and annual
surge of student contributions from usp.br. We also have several new
regular reviewers who are helping with the surge (thanks to all our
active reviewers!)

Given there was a lot of cases of similar improvements applied to
different drivers, I have grouped those into a special section (various
drivers) to avoid mass duplication.

New device support
------------------

adi,ad4130
- Add support for AD4129-4, AD4129-8, AD4130-4, AD4131-4 and AD4131-8
  after reworking the driver to be suitable for multiple device support.
adi,ad4080
- Support the AD4880 and AD4884 dual-channel parts. Interesting parts
  as have two separate data pipelines (including SPI buses interfaces),
  but the only current backend IP combines the two so they cannot be
  treated as independent devices.
adi,ad5706r
- New driver for this 4 channel current output DAC.
adi,ad4691
- New driver supporting this family of ADCs. Support for AD4691, AD4692,
  AD4693 and AD4694 which support either 8 or 16 channels with different
  max sampling rates. Feature rich driver including SPI offload support.
adi,ltc2983
- Add support for the ADT7604 in which the same sensor die as the
  LTC2984 is used for leak detection (liquid coverage of a sense area).
allwinner,adc
- Support for A523 SoCs. Similar to existing parts but with an additional
  clock.  Includes adding support for non contiguous channel lookup
  for in kernel use (fwnode_xlate callback).
broadcomm,apds9999
- New driver for the APDS9999 Ambient Light, RGB and proximity sensor.
memsic,mmc5983
- New driver for this 3-axis magnetometer.
taos,tsl2772
- Add support for the AVAGO APDS9900 and APDS9901 Ambient Light and
  Proximity sensors. which are very similar to existing part with slightly
  different integration time choices.  Includes removal of driver for these
  parts from drivers/misc.
vishay,veml3328
- New driver for this RGB+IR light sensor.

Features
--------

IIO Core
- Support for IEEE 754 floating point values in buffer scan elements.
- Support quaternion axis representation (missing the scaler part)
microchip,mcp4821
- Add configurable gain control
qcom,pm8xxx-xoadc
- Add per channel labels.
st,lsm6dsx
- Support for rotation sensing on the LSM6DSV and LSM6DSV16X using
  both floating point and new quaterionaxis rotation modifier.

MAINTAINERS update
------------------

IIO top level entry
- Include Documentation/driver-api/iio/
adi,*
- Top level ADI entry maintainer switch from Lars-Peter Clausen to Nuno Sá
  reflecting what has been the reality for some time. Thanks to Lars-Peter
  who was very active for many years, but has moved on to other things.
  Also add the linux@analog.com email list to ensure we don't get a gap
  in future.
- Maintainer updates to reflect Cosmin Tanislav having moved on - thanks
  to Marcelo Schmitt for taking these over.
sensiron,scd30
- Replace maintainer (Tomasz Duszynski) with Maxwell Doose.

Cleanups, minor fixes and hardening.
------------------------------------

Documentation
- Add missing powerdown modes to ABI docs.
- Use modern helpers for buffer definition in the examples.
core
- Rework of the handling of timestamps so that the offset is cached at
  buffer resize time (during enabling) rather than based on assumption
  that relied in the timestamp being last and the largest element and
  so always 8 bytes before end of the scan. Underlying problem was
  triggered by scans with repeated type elements such as quaternions
  with each element more than 2 bytes - Giving a 16 byte+ aligned channel
  with result that a following timestamp may be 16 bytes from end of scan,
  rather than 8. Note that for the bosch,bno55 a compatibility hack means
  that it will duplicate the timestamp putting  a second copy at previously
  incorrect location.
- Tidy up use of kernel types in buffer code to not use int64_t given all
  calls use s64.
various drivers
- Drop unused driver_data in device id tables - includes cleanup of various
  drivers that had only one choice where it can be hard coded elsewhere.
- Move to named initializers for many i2c_device_id and platform_device_id
  tables (I have no idea how we go into habit of using named initializers
  for only a subset of the table types - e.g. of_device_id).
- Make IIO_CHAN_SOFT_TIMESTAMP() macro a compound literal allowing simple
  use in various drivers that do dynamic channel definitions. Use it in
  all such cases.
- Use dev_err_probe() and local dev variables to tidy up older drivers.
- Switch more drivers to devm_mutex_init() to provide minor debug benefits.
- Reorder code to put MODULE_DEVICE_TABLE() next to the tables.
- Lots of use of cleanup.h magic to improve code flow, often including
  related refactors such as introducing helpers.
- Replacement of usleep_range() with fsleep()
- Reduce logging noise where functions either provide their own extensive
  reports on error, or where a clear error code is returned to userspace.
- Minor spelling and style fixes (improving bracket usage, not using
  __packed etc)
hid-sensors-*
- Drop helpers for setting channel bit masks in favor of a compound
  literal at the call site.  Also general cleanup of surrounding code.
hid-sensors-magn
- Use u32 rather than bare unsigned for types.
hid-sensors-rotation
- Make sue of ext_scan_type handling for static case rather than duplicate
  chan_info structures.
adi,ad3552r
- Use field_get() to replace open coded equivalent.
adi,ad4170
- Switch from switch to table lookup for GPIO modes.
adi,ad5686
- Apply IWYU principal to included a consistent set of headers.
- Deduplicate regmaps for AD5684 and AD5693 as identical.
- Switch from an enum value in driver data and array look up to pointers
  to separate structures, improving readabilty and avoiding issues with
  0 value when using helpers to deal with different firmware types.
- Add of_match_id table to SPI driver rather than relying on fallback to
  spi_device_id table.
- Introduce some helpers for powerdown mask control.
- Add helpers for control sync simplifying a couple of corner cases.
- Docs fixes.
- Add an ops structure to simplify future addition of operations beyond
  read and write.
adi,ad7191
- Switch to best practice of using device_property_present() to detect
  if an optional property is there rather than error values on querying
  the property.
adi,ad7280a
- Use local variables to improve readability of breaking up chan-address.
adi,ad7825
- Cleanup a type mismatch in clamp() call.
adi,ad799x
- Include improvements
- Local dev variable to shorten code lines.
- Cache regulator voltage at probe (these never change in practice)
- Convert to devm for all unwind handling.
adi,ad9832
- Improve include relevance including replacing kernel.h with more specific
  headers.
- Simplify some maths.
adi,ad9834
- Improve include relevance including replacing kernel.h with more specific
  headers.
adi,adt7316
- Add a comment to avoid future 'fixes' for error handling during the
  odd sequence used to flip from I2C mode to SPI mode.
adi,adxl*
- Documentation consistency improvements.
asahi-kasei,ak8975
- Fix missing runtime pm calls for buffered capture.
- Fix missing pm_runtime_put_autosuspend() in an error path that would leave
  the device stuck on.
- Close a potential uninitialized kernel stack leak.
- Extensive driver modernization including: header relevance, fsleep()
  various minor bugs, dropping duplicate error messages and avoiding
  magic lengths for buffers.
- Replace opencoded polling with iopoll().
- Add error checking to gpio reads.
avia,hx711
- Move scale computation from global data to per device avoiding problems
  if multiple devices present.
- General binding text cleanup.
bosch,bmg160
- Add missing mount-matrix entry to binding.
bosch,bno55
- Terminate error strings with newlines.
devantech,srf08
- Replace sprintf() with sysfs_emit() and sysfs_emit_at() to make intent
  clearer.
freescale,mma8452
- Add missing return value check.
- Fix potential probe ordering issue by switching to non devm irq request.
linear,ltc2309
- Add chip specific read delays.
- Improve chip_info structure, adding __counted_by_ptr marking and
  reorganizing to improve packing.
linear,ltc2983
- Fix a firmware combination where default n_wires of 2 bypasses exclusion
  of adi,current-rotate whereas explicitly setting it to 2 does not.
- Fix potential race with completion reinit.
- Improve error message wording consistency.
- Use fwnode_property_present() to detect optional properties rather
  than fragile return value checking.
microchip,mcp3422
- Use of GENMASK(), FIELD_GET(), FIELD_PREP() to improve readability and
  generally modernize driver.
microchip,mcp47feb02
- Fix binding example to use a possible I2C address.
- Fix binding bounds on channel number.
- Standardize binding example indentation
nxp,saradc
- Increase chances of recovering from a failure in the interrupt handler
  by notifying the trigger that it can reenable even when the read failed.
- Use field_get() to replace opencoded equivalent.
qualcomm,*
- Standardize on Qualcomm company naming in Kconfig.
richtek,rtq6056
- Add i2c_device_id table for legacy instantiation.
samsung,ssp
- Replace custom timestamp channel macro with main one.
sciosense,ens210
- Now scoped_guard() has been reworked, no need for a return
  that can never be reached.
sensiron,scd30
- Constify command lookup table.
- Sanity check for NULL buffer of non zero size being provided to
  sc30_i2c_command()
sensortek,stk3310
- Include  more appropriate headers.
- Ensure interrupt in appropriate mode after resume.
- Structure definition improvements.
- Use size_of() to replace opencoded sizes.
siliconimage,si1133
- Resolve counter related issues on timeout error paths.
- Unused macro removal, improved macro definitions,.
- Include relevance improvements.
st,lsm6dsx
- Fix an issue with applying invalid data check to wrong type of sample.
taos,tcs3472
- Try to powerdown chip on probe failure.
- Devm usage and dropping of remove() callback.
- Various other minor cleanup.
taos,tsl2591
- Dead code removal.
- Simplify tsl2591_persist functions using a look up table.
ti,ads1298
- Fix wrong comment on timeout (and minor code improvement)
- Drop unnecessary CONFIG2 write during init.
ti,ads7950
- Check ret rather that ret < 0 for spi_setup() call.
- Use fully devm managed resources including moving to
  devm_regulator_get_enable_read_voltage() at probe time rather than
  querying evey time.
- Using spi_optimize_message() to reduce CPU usage.
ti,ads8688
- User read_avail() callback rather than open coding handling of
  available attributes.
ti,opt3001
- Header relevance improvements
- Use GENMASK for field definitions to improve readability.
vishay,vcnl4000
- Switch from enum in device_data to individual names structures
  impmroving code readabililty.
- Move to devm handling for remainder of probe.
vishay,veml6030
- Drop pointless read of current Iteration Time index as it is not used.
xilinx,ams
- Fix potential out of bound channel lookup.
- Replace some large switch statements with table lookups.
yamaha,yas530
- Put label in chip info structure to avoid look up in i2c_device_id table.

Drop
----

iio-trig-interrupt.
- Not used for some time and no support for modern firmware bindings or
  in kernel users. So drop it.

* tag 'iio-for-7.2a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (266 commits)
  iio: adc: nxp-sar-adc: harden buffer ISR against per-channel read failure
  iio: chemical: scd30: Replace manual locking with RAII locking
  iio: light: tsl2591: remove unneeded tsl2591_compatible_als_persist_cycle()
  iio: dac: ad5686: create bus ops struct
  iio: dac: ad5686: cleanup doc header of local structs
  iio: dac: ad5686: add control_sync() for single-channel devices
  iio: dac: ad5686: add helpers to handle powerdown masks
  iio: dac: ad5686: add of_match table to the spi driver
  iio: dac: ad5686: drop enum id
  iio: dac: ad5686: remove redundant register definition
  iio: dac: ad5686: refactor include headers
  iio: adc: ad4080: fix AD4880 chip ID
  iio: light: veml3328: add support for new device
  dt-bindings: iio: light: veml6030: add veml3328
  docs: iio: adc: ad4691: add driver documentation
  iio: adc: ad4691: add oversampling support
  iio: adc: ad4691: add SPI offload support
  iio: adc: ad4691: add triggered buffer support
  iio: adc: ad4691: add initial driver for AD4691 family
  dt-bindings: iio: adc: add AD4691 family
  ...
2026-06-08 21:32:52 +02:00
arch Linux 7.1-rc6 2026-06-01 18:10:34 +02:00
block block-7.1-20260529 2026-05-29 10:41:07 -07:00
certs Clang build fixes for 7.1 2026-04-24 09:29:51 -07:00
crypto crypto/krb5, rxrpc: Fix lack of pre-decrypt/pre-verify length checks 2026-05-20 16:36:45 -07:00
Documentation IIO: New device support, features and cleanup for the 7.2 cycle. 2026-06-08 21:32:52 +02:00
drivers IIO: New device support, features and cleanup for the 7.2 cycle. 2026-06-08 21:32:52 +02:00
fs two client fixes 2026-05-30 17:05:58 -07:00
include IIO: New device support, features and cleanup for the 7.2 cycle. 2026-06-08 21:32:52 +02:00
init memblock: updates for 7.0-rc1 2026-04-18 11:29:14 -07:00
io_uring io_uring-7.1-20260529 2026-05-29 10:36:57 -07:00
ipc ipc: limit next_id allocation to the valid ID range 2026-05-21 19:06:11 -07:00
kernel liveupdate: kho: two regression fixes 2026-05-30 15:39:47 -07:00
lib IOMMU Fixes for Linux v7.1-rc5 2026-05-29 09:25:58 -07:00
LICENSES LICENSES: Add modern form of the LGPL-2.1 tags to the usage guide section 2025-10-22 07:58:19 +02:00
mm memblock: fix regression from memblock_free_late() refactoring 2026-05-30 15:37:05 -07:00
net Revert "ipv6: preserve insertion order for same-scope addresses" 2026-05-29 13:00:54 -07:00
rust rust: miscdevice: remove redundant imports 2026-05-23 13:47:32 +02:00
samples samples: rust_misc_device: use vertical import style 2026-05-23 13:47:32 +02:00
scripts Second round of Kbuild fixes for 7.1 2026-05-19 09:43:24 -07:00
security security/keys: fix missed RCU read section on lookup 2026-05-28 11:45:41 -07:00
sound ASoC: Fixes for v7.1 2026-05-28 13:48:04 +02:00
tools Linux 7.1-rc6 2026-06-02 15:24:19 +01:00
usr kbuild: uapi: also test UAPI headers against C++ compilers 2026-03-25 13:24:42 +01:00
virt KVM: Reject wrapped offset in kvm_reset_dirty_gfn() 2026-05-12 22:16:16 +02:00
.clang-format Devicetree updates for v7.0: 2026-02-11 18:27:08 -08:00
.clippy.toml rust: bump Clippy's MSRV and clean incompatible_msrv allows 2026-04-07 09:51:39 +02:00
.cocciconfig
.editorconfig editorconfig: add rst extension 2026-01-26 19:07:09 -08:00
.get_maintainer.ignore .get_maintainer.ignore: add myself 2026-04-02 16:48:25 +02:00
.gitattributes .gitattributes: set diff driver for Rust source code files 2023-05-31 17:48:25 +02:00
.gitignore kbuild: rust: provide an option to inline C helpers into Rust 2026-03-30 02:03:52 +02:00
.mailmap 13 hotfixes. 9 are for MM. 9 are cc:stable and the remaining 4 address 2026-05-26 08:23:19 -07:00
.pylintrc docs: Move the python libraries to tools/lib/python 2025-11-18 09:22:40 -07:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS Delete some obsolete networking code 2026-04-24 09:41:58 -07:00
Kbuild checksyscalls: move instance functionality into generic code 2026-04-05 09:21:32 +02:00
Kconfig io_uring: Rename KConfig to Kconfig 2025-02-19 14:53:27 -07:00
MAINTAINERS IIO: New device support, features and cleanup for the 7.2 cycle. 2026-06-08 21:32:52 +02:00
Makefile Linux 7.1-rc6 2026-05-31 15:14:24 -07:00
README docs: add AI Coding Assistants documentation 2026-01-06 14:55:06 -07:00

Linux kernel
============

The Linux kernel is the core of any Linux operating system. It manages hardware,
system resources, and provides the fundamental services for all other software.

Quick Start
-----------

* Report a bug: See Documentation/admin-guide/reporting-issues.rst
* Get the latest kernel: https://kernel.org
* Build the kernel: See Documentation/admin-guide/quickly-build-trimmed-linux.rst
* Join the community: https://lore.kernel.org/

Essential Documentation
-----------------------

All users should be familiar with:

* Building requirements: Documentation/process/changes.rst
* Code of Conduct: Documentation/process/code-of-conduct.rst
* License: See COPYING

Documentation can be built with make htmldocs or viewed online at:
https://www.kernel.org/doc/html/latest/


Who Are You?
============

Find your role below:

* New Kernel Developer - Getting started with kernel development
* Academic Researcher - Studying kernel internals and architecture
* Security Expert - Hardening and vulnerability analysis
* Backport/Maintenance Engineer - Maintaining stable kernels
* System Administrator - Configuring and troubleshooting
* Maintainer - Leading subsystems and reviewing patches
* Hardware Vendor - Writing drivers for new hardware
* Distribution Maintainer - Packaging kernels for distros
* AI Coding Assistant - LLMs and AI-powered development tools


For Specific Users
==================

New Kernel Developer
--------------------

Welcome! Start your kernel development journey here:

* Getting Started: Documentation/process/development-process.rst
* Your First Patch: Documentation/process/submitting-patches.rst
* Coding Style: Documentation/process/coding-style.rst
* Build System: Documentation/kbuild/index.rst
* Development Tools: Documentation/dev-tools/index.rst
* Kernel Hacking Guide: Documentation/kernel-hacking/hacking.rst
* Core APIs: Documentation/core-api/index.rst

Academic Researcher
-------------------

Explore the kernel's architecture and internals:

* Researcher Guidelines: Documentation/process/researcher-guidelines.rst
* Memory Management: Documentation/mm/index.rst
* Scheduler: Documentation/scheduler/index.rst
* Networking Stack: Documentation/networking/index.rst
* Filesystems: Documentation/filesystems/index.rst
* RCU (Read-Copy Update): Documentation/RCU/index.rst
* Locking Primitives: Documentation/locking/index.rst
* Power Management: Documentation/power/index.rst

Security Expert
---------------

Security documentation and hardening guides:

* Security Documentation: Documentation/security/index.rst
* LSM Development: Documentation/security/lsm-development.rst
* Self Protection: Documentation/security/self-protection.rst
* Reporting Vulnerabilities: Documentation/process/security-bugs.rst
* CVE Procedures: Documentation/process/cve.rst
* Embargoed Hardware Issues: Documentation/process/embargoed-hardware-issues.rst
* Security Features: Documentation/userspace-api/seccomp_filter.rst

Backport/Maintenance Engineer
-----------------------------

Maintain and stabilize kernel versions:

* Stable Kernel Rules: Documentation/process/stable-kernel-rules.rst
* Backporting Guide: Documentation/process/backporting.rst
* Applying Patches: Documentation/process/applying-patches.rst
* Subsystem Profile: Documentation/maintainer/maintainer-entry-profile.rst
* Git for Maintainers: Documentation/maintainer/configure-git.rst

System Administrator
--------------------

Configure, tune, and troubleshoot Linux systems:

* Admin Guide: Documentation/admin-guide/index.rst
* Kernel Parameters: Documentation/admin-guide/kernel-parameters.rst
* Sysctl Tuning: Documentation/admin-guide/sysctl/index.rst
* Tracing/Debugging: Documentation/trace/index.rst
* Performance Security: Documentation/admin-guide/perf-security.rst
* Hardware Monitoring: Documentation/hwmon/index.rst

Maintainer
----------

Lead kernel subsystems and manage contributions:

* Maintainer Handbook: Documentation/maintainer/index.rst
* Pull Requests: Documentation/maintainer/pull-requests.rst
* Managing Patches: Documentation/maintainer/modifying-patches.rst
* Rebasing and Merging: Documentation/maintainer/rebasing-and-merging.rst
* Development Process: Documentation/process/maintainer-handbooks.rst
* Maintainer Entry Profile: Documentation/maintainer/maintainer-entry-profile.rst
* Git Configuration: Documentation/maintainer/configure-git.rst

Hardware Vendor
---------------

Write drivers and support new hardware:

* Driver API Guide: Documentation/driver-api/index.rst
* Driver Model: Documentation/driver-api/driver-model/driver.rst
* Device Drivers: Documentation/driver-api/infrastructure.rst
* Bus Types: Documentation/driver-api/driver-model/bus.rst
* Device Tree Bindings: Documentation/devicetree/bindings/
* Power Management: Documentation/driver-api/pm/index.rst
* DMA API: Documentation/core-api/dma-api.rst

Distribution Maintainer
-----------------------

Package and distribute the kernel:

* Stable Kernel Rules: Documentation/process/stable-kernel-rules.rst
* ABI Documentation: Documentation/ABI/README
* Kernel Configuration: Documentation/kbuild/kconfig.rst
* Module Signing: Documentation/admin-guide/module-signing.rst
* Kernel Parameters: Documentation/admin-guide/kernel-parameters.rst
* Tainted Kernels: Documentation/admin-guide/tainted-kernels.rst

AI Coding Assistant
-------------------

CRITICAL: If you are an LLM or AI-powered coding assistant, you MUST read and
follow the AI coding assistants documentation before contributing to the Linux
kernel:

* Documentation/process/coding-assistants.rst

This documentation contains essential requirements about licensing, attribution,
and the Developer Certificate of Origin that all AI tools must comply with.


Communication and Support
=========================

* Mailing Lists: https://lore.kernel.org/
* IRC: #kernelnewbies on irc.oftc.net
* Bugzilla: https://bugzilla.kernel.org/
* MAINTAINERS file: Lists subsystem maintainers and mailing lists
* Email Clients: Documentation/process/email-clients.rst