diff options
-rw-r--r-- | drivers/pinctrl/pinconf.c | 29 |
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, |