Introduce the for_each_set_clump8 macro
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v18 Latest14 patches 5 repliesIn review
- v17 posting 2/20 of 14 patches 0 repliesSuperseded
- v17 posting 1/214 patches 14 repliesSuperseded
Earlier versions · 17
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v16 | 14 patches | 5 replies | Superseded | |
| v15 | 14 patches | 2 replies | Superseded | |
| v14 | 11 patches | 3 replies | Superseded | |
| v13 | 11 patches | 7 replies | Superseded | |
| v12 | 11 patches | 14 replies | Superseded | |
| v11 | 11 patches | 0 replies | Superseded | |
| v10 | 10 patches | 11 replies | Superseded | |
| v9 | 9 patches | 16 replies | Superseded | |
| v8 | 8 patches | 5 replies | Superseded | |
| v7 | 8 patches | 1 reply | Superseded | |
| v6 | 8 patches | 2 replies | Superseded | |
| v5 | 8 patches | 0 replies | Superseded | |
| v4 posting 2/2 | 8 patches | 11 replies | Superseded | |
| v4 posting 1/2 | 8 patches | 6 replies | Superseded | |
| v3 | 8 patches | 0 replies | Superseded | |
| v2 | 7 patches | 5 replies | Superseded | |
| v1 | 7 patches | 0 replies | Superseded |
Changes in v18 from the cover letter
- Apply style change on gpio-uniphier as suggested by Masahiro Yamada
Patches in v18 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/14 | bitops: Introduce the for_each_set_clump8 macroinclude/ include/ include/ +1 more | +71 | 2 replies | |
| 2/14 | lib/test_bitmap.c: Add for_each_set_clump8 test caseslib/ | +65 | 0 replies | |
| 3/14 | gpio: 104-dio-48e: Utilize for_each_set_clump8 macrodrivers/ | +21 | 0 replies | |
| 4/14 | gpio: 104-idi-48: Utilize for_each_set_clump8 macrodrivers/ | +7 | 0 replies | |
| 5/14 | gpio: gpio-mm: Utilize for_each_set_clump8 macrodrivers/ | +21 | 0 replies | |
| 6/14 | gpio: ws16c48: Utilize for_each_set_clump8 macrodrivers/ | +20 | 0 replies | |
| 7/14 | gpio: pci-idio-16: Utilize for_each_set_clump8 macrodrivers/ | +27 | 0 replies | |
| 8/14 | gpio: pcie-idio-24: Utilize for_each_set_clump8 macrodrivers/ | +40 | 0 replies | |
| 9/14 | gpio: uniphier: Utilize for_each_set_clump8 macrodrivers/ | +3 | 0 replies | |
| 10/14 | gpio: 74x164: Utilize the for_each_set_clump8 macrodrivers/ | +9 | 1 reply | |
| 11/14 | thermal: intel: intel_soc_dts_iosf: Utilize for_each_set_clump8 macrodrivers/ drivers/ | +18 | 0 replies | |
| 12/14 | gpio: pisosr: Utilize the for_each_set_clump8 macrodrivers/ | +6 | 0 replies | |
| 13/14 | gpio: max3191x: Utilize the for_each_set_clump8 macrodrivers/ | +10 | 0 replies | |
| 14/14 | gpio: pca953x: Utilize the for_each_set_clump8 macrodrivers/ | +7 | 1 reply |
Reviews trailers per patch
7 of 14 patches have a Reviewed-by or Acked-by.
| Patch | Andrew Morton | Andy Shevchenko | Linus Walleij |
|---|---|---|---|
| 1/14 | T-b | ||
| 2/14 | A-b | R-b | R-b |
| 3/14 | R-b | ||
| 4/14 | R-b | ||
| 5/14 | R-b | ||
| 6/14 | R-b | ||
| 7/14 | R-b | ||
| 8/14 | R-b | ||
| 9/14 | |||
| 10/14 | T-b | ||
| 11/14 | |||
| 12/14 | |||
| 13/14 | |||
| 14/14 | T-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.
Cover letter [PATCH v18 00/14] Introduce the for_each_set_clump8 macro
Changes in v18:
- Apply style change on gpio-uniphier as suggested by Masahiro Yamada
While adding GPIO get_multiple/set_multiple callback support for various drivers, I noticed a pattern of looping manifesting that would be useful standardized as a macro.
This patchset introduces the for_each_set_clump8 macro and utilizes it in several GPIO drivers. The for_each_set_clump macro8 facilitates a for-loop syntax that iterates over a memory region entire groups of set bits at a time.
For example, suppose you would like to iterate over a 32-bit integer 8 bits at a time, skipping over 8-bit groups with no set bit, where XXXXXXXX represents the current 8-bit group:
Example: 10111110 00000000 11111111 00110011
First loop: 10111110 00000000 11111111 XXXXXXXX
Second loop: 10111110 00000000 XXXXXXXX 00110011
Third loop: XXXXXXXX 00000000 11111111 00110011Each iteration of the loop returns the next 8-bit group that has at least one set bit.
The for_each_set_clump8 macro has four parameters:
* start: set to the bit offset of the current clump
* clump: set to the current clump value
* bits: bitmap to search within
* size: bitmap size in number of bits
In this version of the patchset, the for_each_set_clump macro has been reimplemented and simplified based on the suggestions provided by Rasmus Villemoes and Andy Shevchenko in the version 4 submission.
In particular, the function of the for_each_set_clump macro has been restricted to handle only 8-bit clumps; the drivers that use the for_each_set_clump macro only handle 8-bit ports so a generic for_each_set_clump implementation is not necessary. Thus, a solution for large clumps (i.e. those larger than the width of a bitmap word) can be postponed until a driver appears that actually requires such a generic for_each_set_clump implementation.
For what it's worth, a semi-generic for_each_set_clump (i.e. for clumps smaller than the width of a bitmap word) can be implemented by simply replacing the hardcoded '8' and '0xFF' instances with respective variables. I have not yet had a need for such an implementation, and since it falls short of a true generic for_each_set_clump function, I have decided to forgo such an implementation for now.
In addition, the bitmap_get_value8 and bitmap_set_value8 functions are introduced to get and set 8-bit values respectively. Their use is based on the behavior suggested in the patchset version 4 review.
William Breathitt Gray (14):
bitops: Introduce the for_each_set_clump8 macro lib/test_bitmap.c: Add for_each_set_clump8 test cases
gpio: 104-dio-48e: Utilize for_each_set_clump8 macro
gpio: 104-idi-48: Utilize for_each_set_clump8 macro
gpio: gpio-mm: Utilize for_each_set_clump8 macro
gpio: ws16c48: Utilize for_each_set_clump8 macro
gpio: pci-idio-16: Utilize for_each_set_clump8 macro
gpio: pcie-idio-24: Utilize for_each_set_clump8 macro
gpio: uniphier: Utilize for_each_set_clump8 macro
gpio: 74x164: Utilize the for_each_set_clump8 macro
thermal: intel: intel_soc_dts_iosf: Utilize for_each_set_clump8 macro
gpio: pisosr: Utilize the for_each_set_clump8 macro
gpio: max3191x: Utilize the for_each_set_clump8 macro
gpio: pca953x: Utilize the for_each_set_clump8 macro
drivers/gpio/gpio-104-dio-48e.c | 73 ++++---------- drivers/gpio/gpio-104-idi-48.c | 36 ++----- drivers/gpio/gpio-74x164.c | 19 ++-- drivers/gpio/gpio-gpio-mm.c | 73 ++++---------- drivers/gpio/gpio-max3191x.c | 19 ++-- drivers/gpio/gpio-pca953x.c | 17 ++-- drivers/gpio/gpio-pci-idio-16.c | 75 +++++--------- drivers/gpio/gpio-pcie-idio-24.c | 109 ++++++++------------- drivers/gpio/gpio-pisosr.c | 12 +-- drivers/gpio/gpio-uniphier.c | 13 +-- drivers/gpio/gpio-ws16c48.c | 73 ++++---------- drivers/thermal/intel/intel_soc_dts_iosf.c | 31 +++--- drivers/thermal/intel/intel_soc_dts_iosf.h | 2 - include/asm-generic/bitops/find.h | 17 ++++ include/linux/bitmap.h | 35 +++++++ include/linux/bitops.h | 5 + lib/find_bit.c | 14 +++ lib/test_bitmap.c | 65 ++++++++++++ 18 files changed, 325 insertions(+), 363 deletions(-)
base-commit: 8c550e94b8835170593169a45b5ba30d3fc72a70
Signature · 1 line
2.23.0