Skip to content

Commit cb730da

Browse files
author
Linus Walleij
committed
Merge tag 'samsung-pinctrl-6.18' of https://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung into devel
Samsung pinctrl drivers changes for v6.18 1. Add pin controller drivers for new Axis ARTPEC-8 SoC. The SoC shares all main blocks, including the pin controller, with Samsung SoC, so same drivers and bindings are used. 2. Drop remaining support for Samsung S3C2410 SoC pin controllers. The actual SoC support was removed in January 2023, so this is just remaining cleanup. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2 parents 5e30210 + d37db94 commit cb730da

6 files changed

Lines changed: 65 additions & 26 deletions

File tree

Documentation/devicetree/bindings/pinctrl/samsung,pinctrl-wakeup-interrupt.yaml

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ properties:
3030
compatible:
3131
oneOf:
3232
- enum:
33-
- samsung,s3c2410-wakeup-eint
34-
- samsung,s3c2412-wakeup-eint
3533
- samsung,s3c64xx-wakeup-eint
3634
- samsung,s5pv210-wakeup-eint
3735
- samsung,exynos4210-wakeup-eint
@@ -59,27 +57,12 @@ properties:
5957
description:
6058
Interrupt used by multiplexed external wake-up interrupts.
6159
minItems: 1
62-
maxItems: 6
60+
maxItems: 4
6361

6462
required:
6563
- compatible
6664

6765
allOf:
68-
- if:
69-
properties:
70-
compatible:
71-
contains:
72-
enum:
73-
- samsung,s3c2410-wakeup-eint
74-
- samsung,s3c2412-wakeup-eint
75-
then:
76-
properties:
77-
interrupts:
78-
minItems: 6
79-
maxItems: 6
80-
required:
81-
- interrupts
82-
8366
- if:
8467
properties:
8568
compatible:

Documentation/devicetree/bindings/pinctrl/samsung,pinctrl.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,8 @@ properties:
3535

3636
compatible:
3737
enum:
38+
- axis,artpec8-pinctrl
3839
- google,gs101-pinctrl
39-
- samsung,s3c2412-pinctrl
40-
- samsung,s3c2416-pinctrl
41-
- samsung,s3c2440-pinctrl
42-
- samsung,s3c2450-pinctrl
4340
- samsung,s3c64xx-pinctrl
4441
- samsung,s5pv210-pinctrl
4542
- samsung,exynos2200-pinctrl

drivers/pinctrl/samsung/pinctrl-exynos-arm64.c

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,15 @@ static const struct samsung_pin_bank_type exynos8895_bank_type_off = {
7676
.reg_offset = { 0x00, 0x04, 0x08, 0x0c, 0x10, 0x14, },
7777
};
7878

79+
/*
80+
* Bank type for non-alive type. Bit fields:
81+
* CON: 4, DAT: 1, PUD: 4, DRV: 4
82+
*/
83+
static const struct samsung_pin_bank_type artpec_bank_type_off = {
84+
.fld_width = { 4, 1, 4, 4, },
85+
.reg_offset = { 0x00, 0x04, 0x08, 0x0c, },
86+
};
87+
7988
/* Pad retention control code for accessing PMU regmap */
8089
static atomic_t exynos_shared_retention_refcnt;
8190

@@ -1816,3 +1825,44 @@ const struct samsung_pinctrl_of_match_data gs101_of_data __initconst = {
18161825
.ctrl = gs101_pin_ctrl,
18171826
.num_ctrl = ARRAY_SIZE(gs101_pin_ctrl),
18181827
};
1828+
1829+
/* pin banks of artpec8 pin-controller (FSYS0) */
1830+
static const struct samsung_pin_bank_data artpec8_pin_banks0[] __initconst = {
1831+
ARTPEC_PIN_BANK_EINTG(5, 0x000, "gpf0", 0x00),
1832+
ARTPEC_PIN_BANK_EINTG(4, 0x020, "gpf1", 0x04),
1833+
ARTPEC_PIN_BANK_EINTG(8, 0x040, "gpf2", 0x08),
1834+
ARTPEC_PIN_BANK_EINTG(4, 0x060, "gpf3", 0x0c),
1835+
ARTPEC_PIN_BANK_EINTG(7, 0x080, "gpf4", 0x10),
1836+
ARTPEC_PIN_BANK_EINTG(8, 0x0a0, "gpe0", 0x14),
1837+
ARTPEC_PIN_BANK_EINTG(8, 0x0c0, "gpe1", 0x18),
1838+
ARTPEC_PIN_BANK_EINTG(6, 0x0e0, "gpe2", 0x1c),
1839+
ARTPEC_PIN_BANK_EINTG(8, 0x100, "gps0", 0x20),
1840+
ARTPEC_PIN_BANK_EINTG(8, 0x120, "gps1", 0x24),
1841+
};
1842+
1843+
/* pin banks of artpec8 pin-controller (PERIC) */
1844+
static const struct samsung_pin_bank_data artpec8_pin_banks1[] __initconst = {
1845+
ARTPEC_PIN_BANK_EINTG(8, 0x000, "gpa0", 0x00),
1846+
ARTPEC_PIN_BANK_EINTG(8, 0x020, "gpa1", 0x04),
1847+
ARTPEC_PIN_BANK_EINTG(8, 0x040, "gpa2", 0x08),
1848+
ARTPEC_PIN_BANK_EINTG(2, 0x060, "gpk0", 0x0c),
1849+
};
1850+
1851+
static const struct samsung_pin_ctrl artpec8_pin_ctrl[] __initconst = {
1852+
{
1853+
/* pin-controller instance 0 FSYS data */
1854+
.pin_banks = artpec8_pin_banks0,
1855+
.nr_banks = ARRAY_SIZE(artpec8_pin_banks0),
1856+
.eint_gpio_init = exynos_eint_gpio_init,
1857+
}, {
1858+
/* pin-controller instance 1 PERIC data */
1859+
.pin_banks = artpec8_pin_banks1,
1860+
.nr_banks = ARRAY_SIZE(artpec8_pin_banks1),
1861+
.eint_gpio_init = exynos_eint_gpio_init,
1862+
},
1863+
};
1864+
1865+
const struct samsung_pinctrl_of_match_data artpec8_of_data __initconst = {
1866+
.ctrl = artpec8_pin_ctrl,
1867+
.num_ctrl = ARRAY_SIZE(artpec8_pin_ctrl),
1868+
};

drivers/pinctrl/samsung/pinctrl-exynos.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,16 @@
236236
.name = id \
237237
}
238238

239+
#define ARTPEC_PIN_BANK_EINTG(pins, reg, id, offs) \
240+
{ \
241+
.type = &artpec_bank_type_off, \
242+
.pctl_offset = reg, \
243+
.nr_pins = pins, \
244+
.eint_type = EINT_TYPE_GPIO, \
245+
.eint_offset = offs, \
246+
.name = id \
247+
}
248+
239249
/**
240250
* struct exynos_weint_data: irq specific data for all the wakeup interrupts
241251
* generated by the external wakeup interrupt controller.

drivers/pinctrl/samsung/pinctrl-samsung.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1482,6 +1482,8 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
14821482
.data = &s5pv210_of_data },
14831483
#endif
14841484
#ifdef CONFIG_PINCTRL_EXYNOS_ARM64
1485+
{ .compatible = "axis,artpec8-pinctrl",
1486+
.data = &artpec8_of_data },
14851487
{ .compatible = "google,gs101-pinctrl",
14861488
.data = &gs101_of_data },
14871489
{ .compatible = "samsung,exynos2200-pinctrl",

drivers/pinctrl/samsung/pinctrl-samsung.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ struct samsung_pmx_func {
381381
};
382382

383383
/* list of all exported SoC specific data */
384+
extern const struct samsung_pinctrl_of_match_data artpec8_of_data;
384385
extern const struct samsung_pinctrl_of_match_data exynos2200_of_data;
385386
extern const struct samsung_pinctrl_of_match_data exynos3250_of_data;
386387
extern const struct samsung_pinctrl_of_match_data exynos4210_of_data;
@@ -402,10 +403,6 @@ extern const struct samsung_pinctrl_of_match_data exynosautov920_of_data;
402403
extern const struct samsung_pinctrl_of_match_data fsd_of_data;
403404
extern const struct samsung_pinctrl_of_match_data gs101_of_data;
404405
extern const struct samsung_pinctrl_of_match_data s3c64xx_of_data;
405-
extern const struct samsung_pinctrl_of_match_data s3c2412_of_data;
406-
extern const struct samsung_pinctrl_of_match_data s3c2416_of_data;
407-
extern const struct samsung_pinctrl_of_match_data s3c2440_of_data;
408-
extern const struct samsung_pinctrl_of_match_data s3c2450_of_data;
409406
extern const struct samsung_pinctrl_of_match_data s5pv210_of_data;
410407

411408
#endif /* __PINCTRL_SAMSUNG_H */

0 commit comments

Comments
 (0)