]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
pinctrl: at91-pio4: implement drive strength support
authorEugen Hristev <eugen.hristev@microchip.com>
Tue, 5 Jan 2021 08:54:01 +0000 (10:54 +0200)
committerEugen Hristev <eugen.hristev@microchip.com>
Fri, 22 Jan 2021 13:09:59 +0000 (15:09 +0200)
Implement drive strength support, by preserving the same bindings
as in Linux.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
arch/arm/mach-at91/include/mach/atmel_pio4.h
drivers/pinctrl/pinctrl-at91-pio4.c
include/dt-bindings/pinctrl/at91.h

index f348b05bc8529f6f1c619fcb2a6e0e02e2a20238..35ac7b2d40e19a7f2271faca6464547e9c6c886a 100644 (file)
@@ -52,6 +52,7 @@ struct atmel_pio4_port {
 #define ATMEL_PIO_DRVSTR_LO            (1 << 16)
 #define ATMEL_PIO_DRVSTR_ME            (2 << 16)
 #define ATMEL_PIO_DRVSTR_HI            (3 << 16)
+#define ATMEL_PIO_DRVSTR_OFFSET                16
 #define ATMEL_PIO_CFGR_EVTSEL_MASK     GENMASK(26, 24)
 #define ATMEL_PIO_CFGR_EVTSEL_FALLING  (0 << 24)
 #define ATMEL_PIO_CFGR_EVTSEL_RISING   (1 << 24)
index eff43380df8ff92915258da9e57bc9ac15882b31..3a5143adc38108ee911cf4401c4cfa88d0d38a2d 100644 (file)
@@ -34,6 +34,7 @@ static const struct pinconf_param conf_params[] = {
        { "input-schmitt-disable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 0 },
        { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 },
        { "input-debounce", PIN_CONFIG_INPUT_DEBOUNCE, 0 },
+       { "atmel,drive-strength", PIN_CONFIG_DRIVE_STRENGTH, 0 },
 };
 
 static u32 atmel_pinctrl_get_pinconf(struct udevice *config)
@@ -41,6 +42,7 @@ static u32 atmel_pinctrl_get_pinconf(struct udevice *config)
        const struct pinconf_param *params;
        u32 param, arg, conf = 0;
        u32 i;
+       u32 val;
 
        for (i = 0; i < ARRAY_SIZE(conf_params); i++) {
                params = &conf_params[i];
@@ -82,6 +84,12 @@ static u32 atmel_pinctrl_get_pinconf(struct udevice *config)
                                conf |= ATMEL_PIO_IFSCEN_MASK;
                        }
                        break;
+               case PIN_CONFIG_DRIVE_STRENGTH:
+                       dev_read_u32(config, params->property, &val);
+                       conf &= (~ATMEL_PIO_DRVSTR_MASK);
+                       conf |= (val << ATMEL_PIO_DRVSTR_OFFSET)
+                               & ATMEL_PIO_DRVSTR_MASK;
+                       break;
                default:
                        printf("%s: Unsupported configuration parameter: %u\n",
                               __func__, param);
index 5afb1863c38956bf47d0c1a4901c4b40920d40c5..3831f91fb3ba374c21d402f0ec4c198aeb0d86e2 100644 (file)
@@ -42,4 +42,8 @@
 #define AT91_PERIPH_C          3
 #define AT91_PERIPH_D          4
 
+#define ATMEL_PIO_DRVSTR_LO    1
+#define ATMEL_PIO_DRVSTR_ME    2
+#define ATMEL_PIO_DRVSTR_HI    3
+
 #endif /* __DT_BINDINGS_AT91_PINCTRL_H__ */