2 * MAX77620 pin control driver.
4 * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
7 * Chaitanya Bandi <bandik@nvidia.com>
8 * Laxman Dewangan <ldewangan@nvidia.com>
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms and conditions of the GNU General Public License,
12 * version 2, as published by the Free Software Foundation.
15 #include <linux/mfd/max77620.h>
16 #include <linux/module.h>
18 #include <linux/pinctrl/pinctrl.h>
19 #include <linux/pinctrl/pinconf-generic.h>
20 #include <linux/pinctrl/pinconf.h>
21 #include <linux/pinctrl/pinmux.h>
22 #include <linux/platform_device.h>
23 #include <linux/regmap.h>
27 #include "pinctrl-utils.h"
29 #define MAX77620_PIN_NUM 8
31 enum max77620_pin_ppdrv
{
32 MAX77620_PIN_UNCONFIG_DRV
,
37 enum max77620_pinconf_param
{
38 MAX77620_ACTIVE_FPS_SOURCE
= PIN_CONFIG_END
+ 1,
39 MAX77620_ACTIVE_FPS_POWER_ON_SLOTS
,
40 MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS
,
41 MAX77620_SUSPEND_FPS_SOURCE
,
42 MAX77620_SUSPEND_FPS_POWER_ON_SLOTS
,
43 MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS
,
46 struct max77620_pin_function
{
48 const char * const *groups
;
53 static const struct pinconf_generic_params max77620_cfg_params
[] = {
55 .property
= "maxim,active-fps-source",
56 .param
= MAX77620_ACTIVE_FPS_SOURCE
,
58 .property
= "maxim,active-fps-power-up-slot",
59 .param
= MAX77620_ACTIVE_FPS_POWER_ON_SLOTS
,
61 .property
= "maxim,active-fps-power-down-slot",
62 .param
= MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS
,
64 .property
= "maxim,suspend-fps-source",
65 .param
= MAX77620_SUSPEND_FPS_SOURCE
,
67 .property
= "maxim,suspend-fps-power-up-slot",
68 .param
= MAX77620_SUSPEND_FPS_POWER_ON_SLOTS
,
70 .property
= "maxim,suspend-fps-power-down-slot",
71 .param
= MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS
,
75 enum max77620_alternate_pinmux_option
{
76 MAX77620_PINMUX_GPIO
= 0,
77 MAX77620_PINMUX_LOW_POWER_MODE_CONTROL_IN
= 1,
78 MAX77620_PINMUX_FLEXIBLE_POWER_SEQUENCER_OUT
= 2,
79 MAX77620_PINMUX_32K_OUT1
= 3,
80 MAX77620_PINMUX_SD0_DYNAMIC_VOLTAGE_SCALING_IN
= 4,
81 MAX77620_PINMUX_SD1_DYNAMIC_VOLTAGE_SCALING_IN
= 5,
82 MAX77620_PINMUX_REFERENCE_OUT
= 6,
85 struct max77620_pingroup
{
87 const unsigned int pins
[1];
89 enum max77620_alternate_pinmux_option alt_option
;
92 struct max77620_pin_info
{
93 enum max77620_pin_ppdrv drv_type
;
97 struct max77620_fps_config
{
99 int active_power_up_slots
;
100 int active_power_down_slots
;
102 int suspend_power_up_slots
;
103 int suspend_power_down_slots
;
106 struct max77620_pctrl_info
{
108 struct pinctrl_dev
*pctl
;
110 int pins_current_opt
[MAX77620_GPIO_NR
];
111 const struct max77620_pin_function
*functions
;
112 unsigned int num_functions
;
113 const struct max77620_pingroup
*pin_groups
;
115 const struct pinctrl_pin_desc
*pins
;
116 unsigned int num_pins
;
117 struct max77620_pin_info pin_info
[MAX77620_PIN_NUM
];
118 struct max77620_fps_config fps_config
[MAX77620_PIN_NUM
];
121 static const struct pinctrl_pin_desc max77620_pins_desc
[] = {
122 PINCTRL_PIN(MAX77620_GPIO0
, "gpio0"),
123 PINCTRL_PIN(MAX77620_GPIO1
, "gpio1"),
124 PINCTRL_PIN(MAX77620_GPIO2
, "gpio2"),
125 PINCTRL_PIN(MAX77620_GPIO3
, "gpio3"),
126 PINCTRL_PIN(MAX77620_GPIO4
, "gpio4"),
127 PINCTRL_PIN(MAX77620_GPIO5
, "gpio5"),
128 PINCTRL_PIN(MAX77620_GPIO6
, "gpio6"),
129 PINCTRL_PIN(MAX77620_GPIO7
, "gpio7"),
132 static const char * const gpio_groups
[] = {
143 #define FUNCTION_GROUP(fname, mux) \
146 .groups = gpio_groups, \
147 .ngroups = ARRAY_SIZE(gpio_groups), \
148 .mux_option = MAX77620_PINMUX_##mux, \
151 static const struct max77620_pin_function max77620_pin_function
[] = {
152 FUNCTION_GROUP("gpio", GPIO
),
153 FUNCTION_GROUP("lpm-control-in", LOW_POWER_MODE_CONTROL_IN
),
154 FUNCTION_GROUP("fps-out", FLEXIBLE_POWER_SEQUENCER_OUT
),
155 FUNCTION_GROUP("32k-out1", 32K_OUT1
),
156 FUNCTION_GROUP("sd0-dvs-in", SD0_DYNAMIC_VOLTAGE_SCALING_IN
),
157 FUNCTION_GROUP("sd1-dvs-in", SD1_DYNAMIC_VOLTAGE_SCALING_IN
),
158 FUNCTION_GROUP("reference-out", REFERENCE_OUT
),
161 #define MAX77620_PINGROUP(pg_name, pin_id, option) \
164 .pins = {MAX77620_##pin_id}, \
166 .alt_option = MAX77620_PINMUX_##option, \
169 static const struct max77620_pingroup max77620_pingroups
[] = {
170 MAX77620_PINGROUP(gpio0
, GPIO0
, LOW_POWER_MODE_CONTROL_IN
),
171 MAX77620_PINGROUP(gpio1
, GPIO1
, FLEXIBLE_POWER_SEQUENCER_OUT
),
172 MAX77620_PINGROUP(gpio2
, GPIO2
, FLEXIBLE_POWER_SEQUENCER_OUT
),
173 MAX77620_PINGROUP(gpio3
, GPIO3
, FLEXIBLE_POWER_SEQUENCER_OUT
),
174 MAX77620_PINGROUP(gpio4
, GPIO4
, 32K_OUT1
),
175 MAX77620_PINGROUP(gpio5
, GPIO5
, SD0_DYNAMIC_VOLTAGE_SCALING_IN
),
176 MAX77620_PINGROUP(gpio6
, GPIO6
, SD1_DYNAMIC_VOLTAGE_SCALING_IN
),
177 MAX77620_PINGROUP(gpio7
, GPIO7
, REFERENCE_OUT
),
180 static int max77620_pinctrl_get_groups_count(struct pinctrl_dev
*pctldev
)
182 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
184 return mpci
->num_pin_groups
;
187 static const char *max77620_pinctrl_get_group_name(
188 struct pinctrl_dev
*pctldev
, unsigned int group
)
190 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
192 return mpci
->pin_groups
[group
].name
;
195 static int max77620_pinctrl_get_group_pins(
196 struct pinctrl_dev
*pctldev
, unsigned int group
,
197 const unsigned int **pins
, unsigned int *num_pins
)
199 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
201 *pins
= mpci
->pin_groups
[group
].pins
;
202 *num_pins
= mpci
->pin_groups
[group
].npins
;
207 static const struct pinctrl_ops max77620_pinctrl_ops
= {
208 .get_groups_count
= max77620_pinctrl_get_groups_count
,
209 .get_group_name
= max77620_pinctrl_get_group_name
,
210 .get_group_pins
= max77620_pinctrl_get_group_pins
,
211 .dt_node_to_map
= pinconf_generic_dt_node_to_map_pin
,
212 .dt_free_map
= pinctrl_utils_free_map
,
215 static int max77620_pinctrl_get_funcs_count(struct pinctrl_dev
*pctldev
)
217 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
219 return mpci
->num_functions
;
222 static const char *max77620_pinctrl_get_func_name(struct pinctrl_dev
*pctldev
,
223 unsigned int function
)
225 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
227 return mpci
->functions
[function
].name
;
230 static int max77620_pinctrl_get_func_groups(struct pinctrl_dev
*pctldev
,
231 unsigned int function
,
232 const char * const **groups
,
233 unsigned int * const num_groups
)
235 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
237 *groups
= mpci
->functions
[function
].groups
;
238 *num_groups
= mpci
->functions
[function
].ngroups
;
243 static int max77620_pinctrl_enable(struct pinctrl_dev
*pctldev
,
244 unsigned int function
, unsigned int group
)
246 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
250 if (function
== MAX77620_PINMUX_GPIO
) {
252 } else if (function
== mpci
->pin_groups
[group
].alt_option
) {
255 dev_err(mpci
->dev
, "GPIO %u doesn't have function %u\n",
259 ret
= regmap_update_bits(mpci
->rmap
, MAX77620_REG_AME_GPIO
,
262 dev_err(mpci
->dev
, "REG AME GPIO update failed: %d\n", ret
);
267 static const struct pinmux_ops max77620_pinmux_ops
= {
268 .get_functions_count
= max77620_pinctrl_get_funcs_count
,
269 .get_function_name
= max77620_pinctrl_get_func_name
,
270 .get_function_groups
= max77620_pinctrl_get_func_groups
,
271 .set_mux
= max77620_pinctrl_enable
,
274 static int max77620_pinconf_get(struct pinctrl_dev
*pctldev
,
275 unsigned int pin
, unsigned long *config
)
277 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
278 struct device
*dev
= mpci
->dev
;
279 enum pin_config_param param
= pinconf_to_config_param(*config
);
285 case PIN_CONFIG_DRIVE_OPEN_DRAIN
:
286 if (mpci
->pin_info
[pin
].drv_type
== MAX77620_PIN_OD_DRV
)
290 case PIN_CONFIG_DRIVE_PUSH_PULL
:
291 if (mpci
->pin_info
[pin
].drv_type
== MAX77620_PIN_PP_DRV
)
295 case PIN_CONFIG_BIAS_PULL_UP
:
296 ret
= regmap_read(mpci
->rmap
, MAX77620_REG_PUE_GPIO
, &val
);
298 dev_err(dev
, "Reg PUE_GPIO read failed: %d\n", ret
);
305 case PIN_CONFIG_BIAS_PULL_DOWN
:
306 ret
= regmap_read(mpci
->rmap
, MAX77620_REG_PDE_GPIO
, &val
);
308 dev_err(dev
, "Reg PDE_GPIO read failed: %d\n", ret
);
316 dev_err(dev
, "Properties not supported\n");
320 *config
= pinconf_to_config_packed(param
, (u16
)arg
);
325 static int max77620_get_default_fps(struct max77620_pctrl_info
*mpci
,
331 ret
= regmap_read(mpci
->rmap
, addr
, &val
);
333 dev_err(mpci
->dev
, "Reg PUE_GPIO read failed: %d\n", ret
);
336 *fps
= (val
& MAX77620_FPS_SRC_MASK
) >> MAX77620_FPS_SRC_SHIFT
;
341 static int max77620_set_fps_param(struct max77620_pctrl_info
*mpci
,
344 struct max77620_fps_config
*fps_config
= &mpci
->fps_config
[pin
];
349 if ((pin
< MAX77620_GPIO1
) || (pin
> MAX77620_GPIO3
))
352 addr
= MAX77620_REG_FPS_GPIO1
+ pin
- 1;
354 case MAX77620_ACTIVE_FPS_SOURCE
:
355 case MAX77620_SUSPEND_FPS_SOURCE
:
356 mask
= MAX77620_FPS_SRC_MASK
;
357 shift
= MAX77620_FPS_SRC_SHIFT
;
358 param_val
= fps_config
->active_fps_src
;
359 if (param
== MAX77620_SUSPEND_FPS_SOURCE
)
360 param_val
= fps_config
->suspend_fps_src
;
363 case MAX77620_ACTIVE_FPS_POWER_ON_SLOTS
:
364 case MAX77620_SUSPEND_FPS_POWER_ON_SLOTS
:
365 mask
= MAX77620_FPS_PU_PERIOD_MASK
;
366 shift
= MAX77620_FPS_PU_PERIOD_SHIFT
;
367 param_val
= fps_config
->active_power_up_slots
;
368 if (param
== MAX77620_SUSPEND_FPS_POWER_ON_SLOTS
)
369 param_val
= fps_config
->suspend_power_up_slots
;
372 case MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS
:
373 case MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS
:
374 mask
= MAX77620_FPS_PD_PERIOD_MASK
;
375 shift
= MAX77620_FPS_PD_PERIOD_SHIFT
;
376 param_val
= fps_config
->active_power_down_slots
;
377 if (param
== MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS
)
378 param_val
= fps_config
->suspend_power_down_slots
;
382 dev_err(mpci
->dev
, "Invalid parameter %d for pin %d\n",
390 ret
= regmap_update_bits(mpci
->rmap
, addr
, mask
, param_val
<< shift
);
392 dev_err(mpci
->dev
, "Reg 0x%02x update failed %d\n", addr
, ret
);
397 static int max77620_pinconf_set(struct pinctrl_dev
*pctldev
,
398 unsigned int pin
, unsigned long *configs
,
399 unsigned int num_configs
)
401 struct max77620_pctrl_info
*mpci
= pinctrl_dev_get_drvdata(pctldev
);
402 struct device
*dev
= mpci
->dev
;
403 struct max77620_fps_config
*fps_config
;
412 for (i
= 0; i
< num_configs
; i
++) {
413 param
= pinconf_to_config_param(configs
[i
]);
414 param_val
= pinconf_to_config_argument(configs
[i
]);
417 case PIN_CONFIG_DRIVE_OPEN_DRAIN
:
418 val
= param_val
? 0 : 1;
419 ret
= regmap_update_bits(mpci
->rmap
,
420 MAX77620_REG_GPIO0
+ pin
,
421 MAX77620_CNFG_GPIO_DRV_MASK
,
424 goto report_update_failure
;
426 mpci
->pin_info
[pin
].drv_type
= val
?
427 MAX77620_PIN_PP_DRV
: MAX77620_PIN_OD_DRV
;
430 case PIN_CONFIG_DRIVE_PUSH_PULL
:
431 val
= param_val
? 1 : 0;
432 ret
= regmap_update_bits(mpci
->rmap
,
433 MAX77620_REG_GPIO0
+ pin
,
434 MAX77620_CNFG_GPIO_DRV_MASK
,
437 goto report_update_failure
;
439 mpci
->pin_info
[pin
].drv_type
= val
?
440 MAX77620_PIN_PP_DRV
: MAX77620_PIN_OD_DRV
;
443 case MAX77620_ACTIVE_FPS_SOURCE
:
444 case MAX77620_ACTIVE_FPS_POWER_ON_SLOTS
:
445 case MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS
:
446 if ((pin
< MAX77620_GPIO1
) || (pin
> MAX77620_GPIO3
))
449 fps_config
= &mpci
->fps_config
[pin
];
451 if ((param
== MAX77620_ACTIVE_FPS_SOURCE
) &&
452 (param_val
== MAX77620_FPS_SRC_DEF
)) {
453 addr
= MAX77620_REG_FPS_GPIO1
+ pin
- 1;
454 ret
= max77620_get_default_fps(
456 &fps_config
->active_fps_src
);
462 if (param
== MAX77620_ACTIVE_FPS_SOURCE
)
463 fps_config
->active_fps_src
= param_val
;
464 else if (param
== MAX77620_ACTIVE_FPS_POWER_ON_SLOTS
)
465 fps_config
->active_power_up_slots
= param_val
;
467 fps_config
->active_power_down_slots
= param_val
;
469 ret
= max77620_set_fps_param(mpci
, pin
, param
);
474 case MAX77620_SUSPEND_FPS_SOURCE
:
475 case MAX77620_SUSPEND_FPS_POWER_ON_SLOTS
:
476 case MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS
:
477 if ((pin
< MAX77620_GPIO1
) || (pin
> MAX77620_GPIO3
))
480 fps_config
= &mpci
->fps_config
[pin
];
482 if ((param
== MAX77620_SUSPEND_FPS_SOURCE
) &&
483 (param_val
== MAX77620_FPS_SRC_DEF
)) {
484 addr
= MAX77620_REG_FPS_GPIO1
+ pin
- 1;
485 ret
= max77620_get_default_fps(
487 &fps_config
->suspend_fps_src
);
493 if (param
== MAX77620_SUSPEND_FPS_SOURCE
)
494 fps_config
->suspend_fps_src
= param_val
;
495 else if (param
== MAX77620_SUSPEND_FPS_POWER_ON_SLOTS
)
496 fps_config
->suspend_power_up_slots
= param_val
;
498 fps_config
->suspend_power_down_slots
=
502 case PIN_CONFIG_BIAS_PULL_UP
:
503 case PIN_CONFIG_BIAS_PULL_DOWN
:
504 pu_val
= (param
== PIN_CONFIG_BIAS_PULL_UP
) ?
506 pd_val
= (param
== PIN_CONFIG_BIAS_PULL_DOWN
) ?
509 ret
= regmap_update_bits(mpci
->rmap
,
510 MAX77620_REG_PUE_GPIO
,
513 dev_err(dev
, "PUE_GPIO update failed: %d\n",
518 ret
= regmap_update_bits(mpci
->rmap
,
519 MAX77620_REG_PDE_GPIO
,
522 dev_err(dev
, "PDE_GPIO update failed: %d\n",
529 dev_err(dev
, "Properties not supported\n");
536 report_update_failure
:
537 dev_err(dev
, "Reg 0x%02x update failed %d\n",
538 MAX77620_REG_GPIO0
+ pin
, ret
);
542 static const struct pinconf_ops max77620_pinconf_ops
= {
543 .pin_config_get
= max77620_pinconf_get
,
544 .pin_config_set
= max77620_pinconf_set
,
547 static struct pinctrl_desc max77620_pinctrl_desc
= {
548 .pctlops
= &max77620_pinctrl_ops
,
549 .pmxops
= &max77620_pinmux_ops
,
550 .confops
= &max77620_pinconf_ops
,
553 static int max77620_pinctrl_probe(struct platform_device
*pdev
)
555 struct max77620_chip
*max77620
= dev_get_drvdata(pdev
->dev
.parent
);
556 struct max77620_pctrl_info
*mpci
;
559 mpci
= devm_kzalloc(&pdev
->dev
, sizeof(*mpci
), GFP_KERNEL
);
563 mpci
->dev
= &pdev
->dev
;
564 mpci
->dev
->of_node
= pdev
->dev
.parent
->of_node
;
565 mpci
->rmap
= max77620
->rmap
;
567 mpci
->pins
= max77620_pins_desc
;
568 mpci
->num_pins
= ARRAY_SIZE(max77620_pins_desc
);
569 mpci
->functions
= max77620_pin_function
;
570 mpci
->num_functions
= ARRAY_SIZE(max77620_pin_function
);
571 mpci
->pin_groups
= max77620_pingroups
;
572 mpci
->num_pin_groups
= ARRAY_SIZE(max77620_pingroups
);
573 platform_set_drvdata(pdev
, mpci
);
575 max77620_pinctrl_desc
.name
= dev_name(&pdev
->dev
);
576 max77620_pinctrl_desc
.pins
= max77620_pins_desc
;
577 max77620_pinctrl_desc
.npins
= ARRAY_SIZE(max77620_pins_desc
);
578 max77620_pinctrl_desc
.num_custom_params
=
579 ARRAY_SIZE(max77620_cfg_params
);
580 max77620_pinctrl_desc
.custom_params
= max77620_cfg_params
;
582 for (i
= 0; i
< MAX77620_PIN_NUM
; ++i
) {
583 mpci
->fps_config
[i
].active_fps_src
= -1;
584 mpci
->fps_config
[i
].active_power_up_slots
= -1;
585 mpci
->fps_config
[i
].active_power_down_slots
= -1;
586 mpci
->fps_config
[i
].suspend_fps_src
= -1;
587 mpci
->fps_config
[i
].suspend_power_up_slots
= -1;
588 mpci
->fps_config
[i
].suspend_power_down_slots
= -1;
591 mpci
->pctl
= devm_pinctrl_register(&pdev
->dev
, &max77620_pinctrl_desc
,
593 if (IS_ERR(mpci
->pctl
)) {
594 dev_err(&pdev
->dev
, "Couldn't register pinctrl driver\n");
595 return PTR_ERR(mpci
->pctl
);
601 #ifdef CONFIG_PM_SLEEP
602 static int max77620_suspend_fps_param
[] = {
603 MAX77620_SUSPEND_FPS_SOURCE
,
604 MAX77620_SUSPEND_FPS_POWER_ON_SLOTS
,
605 MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS
,
608 static int max77620_active_fps_param
[] = {
609 MAX77620_ACTIVE_FPS_SOURCE
,
610 MAX77620_ACTIVE_FPS_POWER_ON_SLOTS
,
611 MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS
,
614 static int max77620_pinctrl_suspend(struct device
*dev
)
616 struct max77620_pctrl_info
*mpci
= dev_get_drvdata(dev
);
619 for (pin
= 0; pin
< MAX77620_PIN_NUM
; ++pin
) {
620 if ((pin
< MAX77620_GPIO1
) || (pin
> MAX77620_GPIO3
))
622 for (p
= 0; p
< 3; ++p
)
623 max77620_set_fps_param(
624 mpci
, pin
, max77620_suspend_fps_param
[p
]);
630 static int max77620_pinctrl_resume(struct device
*dev
)
632 struct max77620_pctrl_info
*mpci
= dev_get_drvdata(dev
);
635 for (pin
= 0; pin
< MAX77620_PIN_NUM
; ++pin
) {
636 if ((pin
< MAX77620_GPIO1
) || (pin
> MAX77620_GPIO3
))
638 for (p
= 0; p
< 3; ++p
)
639 max77620_set_fps_param(
640 mpci
, pin
, max77620_active_fps_param
[p
]);
647 static const struct dev_pm_ops max77620_pinctrl_pm_ops
= {
648 SET_SYSTEM_SLEEP_PM_OPS(
649 max77620_pinctrl_suspend
, max77620_pinctrl_resume
)
652 static const struct platform_device_id max77620_pinctrl_devtype
[] = {
653 { .name
= "max77620-pinctrl", },
654 { .name
= "max20024-pinctrl", },
657 MODULE_DEVICE_TABLE(platform
, max77620_pinctrl_devtype
);
659 static struct platform_driver max77620_pinctrl_driver
= {
661 .name
= "max77620-pinctrl",
662 .pm
= &max77620_pinctrl_pm_ops
,
664 .probe
= max77620_pinctrl_probe
,
665 .id_table
= max77620_pinctrl_devtype
,
668 module_platform_driver(max77620_pinctrl_driver
);
670 MODULE_DESCRIPTION("MAX77620/MAX20024 pin control driver");
671 MODULE_AUTHOR("Chaitanya Bandi<bandik@nvidia.com>");
672 MODULE_AUTHOR("Laxman Dewangan<ldewangan@nvidia.com>");
673 MODULE_ALIAS("platform:max77620-pinctrl");
674 MODULE_LICENSE("GPL v2");