aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pinctrl/pinconf.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/drivers/pinctrl/pinconf.c b/drivers/pinctrl/pinconf.c
index e875f21a5908..d16ef8797f59 100644
--- a/drivers/pinctrl/pinconf.c
+++ b/drivers/pinctrl/pinconf.c
@@ -428,12 +428,11 @@ static int pinconf_dbg_config_print(struct seq_file *s, void *d)
428{ 428{
429 struct pinctrl_maps *maps_node; 429 struct pinctrl_maps *maps_node;
430 const struct pinctrl_map *map; 430 const struct pinctrl_map *map;
431 struct pinctrl_dev *pctldev = NULL; 431 const struct pinctrl_map *found = NULL;
432 struct pinctrl_dev *pctldev;
432 const struct pinconf_ops *confops = NULL; 433 const struct pinconf_ops *confops = NULL;
433 const struct pinctrl_map_configs *configs;
434 struct dbg_cfg *dbg = &pinconf_dbg_conf; 434 struct dbg_cfg *dbg = &pinconf_dbg_conf;
435 int i, j; 435 int i, j;
436 bool found = false;
437 unsigned long config; 436 unsigned long config;
438 437
439 mutex_lock(&pinctrl_maps_mutex); 438 mutex_lock(&pinctrl_maps_mutex);
@@ -450,14 +449,8 @@ static int pinconf_dbg_config_print(struct seq_file *s, void *d)
450 for (j = 0; j < map->data.configs.num_configs; j++) { 449 for (j = 0; j < map->data.configs.num_configs; j++) {
451 if (!strcmp(map->data.configs.group_or_pin, 450 if (!strcmp(map->data.configs.group_or_pin,
452 dbg->pin_name)) { 451 dbg->pin_name)) {
453 /* 452 /* We found the right pin / state */
454 * We found the right pin / state, read the 453 found = map;
455 * config and he pctldev for later use
456 */
457 configs = &map->data.configs;
458 pctldev = get_pinctrl_dev_from_devname
459 (map->ctrl_dev_name);
460 found = true;
461 break; 454 break;
462 } 455 }
463 } 456 }
@@ -473,7 +466,8 @@ static int pinconf_dbg_config_print(struct seq_file *s, void *d)
473 goto exit; 466 goto exit;
474 } 467 }
475 468
476 config = *(configs->configs); 469 pctldev = get_pinctrl_dev_from_devname(found->ctrl_dev_name);
470 config = *found->data.configs.configs;
477 seq_printf(s, "Dev %s has config of %s in state %s: 0x%08lX\n", 471 seq_printf(s, "Dev %s has config of %s in state %s: 0x%08lX\n",
478 dbg->dev_name, dbg->pin_name, 472 dbg->dev_name, dbg->pin_name,
479 dbg->state_name, config); 473 dbg->state_name, config);
@@ -505,12 +499,12 @@ static int pinconf_dbg_config_write(struct file *file,
505{ 499{
506 struct pinctrl_maps *maps_node; 500 struct pinctrl_maps *maps_node;
507 const struct pinctrl_map *map; 501 const struct pinctrl_map *map;
508 struct pinctrl_dev *pctldev = NULL; 502 const struct pinctrl_map *found = NULL;
503 struct pinctrl_dev *pctldev;
509 const struct pinconf_ops *confops = NULL; 504 const struct pinconf_ops *confops = NULL;
510 struct dbg_cfg *dbg = &pinconf_dbg_conf; 505 struct dbg_cfg *dbg = &pinconf_dbg_conf;
511 const struct pinctrl_map_configs *configs; 506 const struct pinctrl_map_configs *configs;
512 char config[MAX_NAME_LEN+1]; 507 char config[MAX_NAME_LEN+1];
513 bool found = false;
514 char buf[128]; 508 char buf[128];
515 char *b = &buf[0]; 509 char *b = &buf[0];
516 int buf_size; 510 int buf_size;
@@ -588,10 +582,7 @@ static int pinconf_dbg_config_write(struct file *file,
588 582
589 /* we found the right pin / state, so overwrite config */ 583 /* we found the right pin / state, so overwrite config */
590 if (!strcmp(map->data.configs.group_or_pin, dbg->pin_name)) { 584 if (!strcmp(map->data.configs.group_or_pin, dbg->pin_name)) {
591 found = true; 585 found = map;
592 pctldev = get_pinctrl_dev_from_devname(
593 map->ctrl_dev_name);
594 configs = &map->data.configs;
595 break; 586 break;
596 } 587 }
597 } 588 }
@@ -601,10 +592,12 @@ static int pinconf_dbg_config_write(struct file *file,
601 goto exit; 592 goto exit;
602 } 593 }
603 594
595 pctldev = get_pinctrl_dev_from_devname(found->ctrl_dev_name);
604 if (pctldev) 596 if (pctldev)
605 confops = pctldev->desc->confops; 597 confops = pctldev->desc->confops;
606 598
607 if (confops && confops->pin_config_dbg_parse_modify) { 599 if (confops && confops->pin_config_dbg_parse_modify) {
600 configs = &found->data.configs;
608 for (i = 0; i < configs->num_configs; i++) { 601 for (i = 0; i < configs->num_configs; i++) {
609 confops->pin_config_dbg_parse_modify(pctldev, 602 confops->pin_config_dbg_parse_modify(pctldev,
610 config, 603 config,