All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/8] pinctrl: Add T-Head TH1520 SoC pin controllers
@ 2024-09-30 19:50 ` Drew Fustini
  0 siblings, 0 replies; 42+ messages in thread
From: Drew Fustini @ 2024-09-30 19:50 UTC (permalink / raw)
  To: Drew Fustini, Guo Ren, Fu Wei, Linus Walleij, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Emil Renner Berthing, Thomas Bonnefille
  Cc: linux-riscv, linux-gpio, devicetree, linux-kernel, Drew Fustini

This adds a pin control driver created by Emil for the T-Head TH1520
RISC-V SoC used on the Lichee Pi 4A and BeagleV Ahead boards and updates
the device trees to make use of it.

Changes in v3:
 - Add Rb from Rob for the binding
 - Rebase on 6.12-rc1 which enables AP_SUBSYS clock controller in dts
 - Update dts to use AP_SUBSYS clock controller instead of fixed clocks
 - Remove unneeded defines from the driver for dt unit addresses
 - Link to v2: https://lore.kernel.org/linux-riscv/20240914-th1520-pinctrl-v2-0-3ba67dde882c@tenstorrent.com/

Changes in v2:
 - Add thead,pad-group device tree property
 - Change driver to use the thead,pad-group property instead of the unit
   address to identify the pad group of the pin controller being probed
 - Return -EINVAL if no pin group can be determined during probe. In v1,
   there was a bug that instead returned an unitialized variable
 - Link to v1: https://lore.kernel.org/r/20240902-th1520-pinctrl-v1-0-639bf83ef50a@tenstorrent.com

Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>

---
Emil Renner Berthing (8):
      dt-bindings: pinctrl: Add thead,th1520-pinctrl bindings
      pinctrl: Add driver for the T-Head TH1520 SoC
      riscv: dts: thead: Add TH1520 pin control nodes
      riscv: dts: thead: Add TH1520 GPIO ranges
      riscv: dts: thead: Adjust TH1520 GPIO labels
      riscv: dts: thead: Add Lichee Pi 4M GPIO line names
      riscv: dts: thead: Add TH1520 pinctrl settings for UART0
      riscv: dtb: thead: Add BeagleV Ahead LEDs

 .../bindings/pinctrl/thead,th1520-pinctrl.yaml     | 176 ++++
 MAINTAINERS                                        |   2 +
 arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts |  87 ++
 .../boot/dts/thead/th1520-lichee-module-4a.dtsi    |  43 +
 arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts  |  28 +
 arch/riscv/boot/dts/thead/th1520.dtsi              |  65 +-
 drivers/pinctrl/Kconfig                            |  13 +
 drivers/pinctrl/Makefile                           |   1 +
 drivers/pinctrl/pinctrl-th1520.c                   | 907 +++++++++++++++++++++
 9 files changed, 1306 insertions(+), 16 deletions(-)
---
base-commit: 9852d85ec9d492ebef56dc5f229416c925758edc
change-id: 20240930-th1520-pinctrl-d42163ea2c11

Best regards,
-- 
Drew Fustini <dfustini@tenstorrent.com>


^ permalink raw reply	[flat|nested] 42+ messages in thread
* Re: [PATCH v3 2/8] pinctrl: Add driver for the T-Head TH1520 SoC
@ 2024-10-02 15:45 kernel test robot
  0 siblings, 0 replies; 42+ messages in thread
From: kernel test robot @ 2024-10-02 15:45 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20240930-th1520-pinctrl-v3-2-32cea2bdbecb@tenstorrent.com>
References: <20240930-th1520-pinctrl-v3-2-32cea2bdbecb@tenstorrent.com>
TO: Drew Fustini <dfustini@tenstorrent.com>

Hi Drew,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 9852d85ec9d492ebef56dc5f229416c925758edc]

url:    https://github.com/intel-lab-lkp/linux/commits/Drew-Fustini/dt-bindings-pinctrl-Add-thead-th1520-pinctrl-bindings/20241001-035421
base:   9852d85ec9d492ebef56dc5f229416c925758edc
patch link:    https://lore.kernel.org/r/20240930-th1520-pinctrl-v3-2-32cea2bdbecb%40tenstorrent.com
patch subject: [PATCH v3 2/8] pinctrl: Add driver for the T-Head TH1520 SoC
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: s390-randconfig-r072-20241002 (https://download.01.org/0day-ci/archive/20241002/202410022336.xyWlV0Tf-lkp@intel.com/config)
compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410022336.xyWlV0Tf-lkp@intel.com/

smatch warnings:
drivers/pinctrl/pinctrl-th1520.c:502 th1520_pinctrl_dt_node_to_map() warn: missing error code 'ret'

vim +/ret +502 drivers/pinctrl/pinctrl-th1520.c

e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  413  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  414  static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  415  					 struct device_node *np,
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  416  					 struct pinctrl_map **maps,
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  417  					 unsigned int *num_maps)
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  418  {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  419  	struct th1520_pinctrl *thp = pinctrl_dev_get_drvdata(pctldev);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  420  	struct device_node *child;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  421  	struct pinctrl_map *map;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  422  	unsigned long *configs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  423  	unsigned int nconfigs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  424  	unsigned int nmaps;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  425  	int ret;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  426  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  427  	nmaps = 0;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  428  	for_each_available_child_of_node(np, child) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  429  		int npins = of_property_count_strings(child, "pins");
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  430  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  431  		if (npins <= 0) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  432  			of_node_put(child);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  433  			dev_err(thp->pctl->dev, "no pins selected for %pOFn.%pOFn\n",
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  434  				np, child);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  435  			return -EINVAL;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  436  		}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  437  		nmaps += npins;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  438  		if (of_property_present(child, "function"))
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  439  			nmaps += npins;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  440  	}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  441  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  442  	map = kcalloc(nmaps, sizeof(*map), GFP_KERNEL);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  443  	if (!map)
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  444  		return -ENOMEM;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  445  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  446  	nmaps = 0;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  447  	mutex_lock(&thp->mutex);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  448  	for_each_available_child_of_node(np, child) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  449  		unsigned int rollback = nmaps;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  450  		enum th1520_muxtype muxtype;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  451  		struct property *prop;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  452  		const char *funcname;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  453  		const char **pgnames;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  454  		const char *pinname;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  455  		int npins;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  456  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  457  		ret = pinconf_generic_parse_dt_config(child, pctldev, &configs, &nconfigs);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  458  		if (ret) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  459  			dev_err(thp->pctl->dev, "%pOFn.%pOFn: error parsing pin config\n",
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  460  				np, child);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  461  			goto put_child;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  462  		}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  463  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  464  		if (!of_property_read_string(child, "function", &funcname)) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  465  			muxtype = th1520_muxtype_get(funcname);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  466  			if (!muxtype) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  467  				dev_err(thp->pctl->dev, "%pOFn.%pOFn: unknown function '%s'\n",
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  468  					np, child, funcname);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  469  				ret = -EINVAL;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  470  				goto free_configs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  471  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  472  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  473  			funcname = devm_kasprintf(thp->pctl->dev, GFP_KERNEL, "%pOFn.%pOFn",
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  474  						  np, child);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  475  			if (!funcname) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  476  				ret = -ENOMEM;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  477  				goto free_configs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  478  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  479  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  480  			npins = of_property_count_strings(child, "pins");
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  481  			pgnames = devm_kcalloc(thp->pctl->dev, npins, sizeof(*pgnames), GFP_KERNEL);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  482  			if (!pgnames) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  483  				ret = -ENOMEM;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  484  				goto free_configs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  485  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  486  		} else {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  487  			funcname = NULL;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  488  		}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  489  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  490  		npins = 0;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  491  		of_property_for_each_string(child, "pins", prop, pinname) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  492  			unsigned int i;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  493  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  494  			for (i = 0; i < thp->desc.npins; i++) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  495  				if (!strcmp(pinname, thp->desc.pins[i].name))
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  496  					break;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  497  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  498  			if (i == thp->desc.npins) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  499  				nmaps = rollback;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  500  				dev_err(thp->pctl->dev, "%pOFn.%pOFn: unknown pin '%s'\n",
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  501  					np, child, pinname);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30 @502  				goto free_configs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  503  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  504  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  505  			if (nconfigs) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  506  				map[nmaps].type = PIN_MAP_TYPE_CONFIGS_PIN;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  507  				map[nmaps].data.configs.group_or_pin = thp->desc.pins[i].name;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  508  				map[nmaps].data.configs.configs = configs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  509  				map[nmaps].data.configs.num_configs = nconfigs;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  510  				nmaps += 1;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  511  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  512  			if (funcname) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  513  				pgnames[npins++] = thp->desc.pins[i].name;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  514  				map[nmaps].type = PIN_MAP_TYPE_MUX_GROUP;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  515  				map[nmaps].data.mux.function = funcname;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  516  				map[nmaps].data.mux.group = thp->desc.pins[i].name;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  517  				nmaps += 1;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  518  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  519  		}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  520  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  521  		if (funcname) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  522  			ret = pinmux_generic_add_function(pctldev, funcname, pgnames,
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  523  							  npins, (void *)muxtype);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  524  			if (ret < 0) {
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  525  				dev_err(thp->pctl->dev, "error adding function %s\n", funcname);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  526  				goto put_child;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  527  			}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  528  		}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  529  	}
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  530  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  531  	*maps = map;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  532  	*num_maps = nmaps;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  533  	mutex_unlock(&thp->mutex);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  534  	return 0;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  535  
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  536  free_configs:
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  537  	kfree(configs);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  538  put_child:
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  539  	of_node_put(child);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  540  	th1520_pinctrl_dt_free_map(pctldev, map, nmaps);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  541  	mutex_unlock(&thp->mutex);
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  542  	return ret;
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  543  }
e7e62c9ab90ce8 Emil Renner Berthing 2024-09-30  544  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2024-10-12 14:52 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-30 19:50 [PATCH v3 0/8] pinctrl: Add T-Head TH1520 SoC pin controllers Drew Fustini
2024-09-30 19:50 ` Drew Fustini
2024-09-30 19:50 ` [PATCH v3 1/8] dt-bindings: pinctrl: Add thead,th1520-pinctrl bindings Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-09-30 19:50 ` [PATCH v3 2/8] pinctrl: Add driver for the T-Head TH1520 SoC Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-10-02 15:54   ` Dan Carpenter
2024-10-05 19:30     ` Drew Fustini
2024-10-07  5:30       ` Dan Carpenter
2024-10-02 19:36   ` Kees Bakker
2024-10-02 19:36     ` Kees Bakker
2024-10-03  2:43     ` Drew Fustini
2024-10-03  2:43       ` Drew Fustini
2024-09-30 19:50 ` [PATCH v3 3/8] riscv: dts: thead: Add TH1520 pin control nodes Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-09-30 19:50 ` [PATCH v3 4/8] riscv: dts: thead: Add TH1520 GPIO ranges Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-09-30 19:50 ` [PATCH v3 5/8] riscv: dts: thead: Adjust TH1520 GPIO labels Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-09-30 19:50 ` [PATCH v3 6/8] riscv: dts: thead: Add Lichee Pi 4M GPIO line names Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-10-12 13:46   ` Emil Renner Berthing
2024-10-12 13:46     ` Emil Renner Berthing
2024-09-30 19:50 ` [PATCH v3 7/8] riscv: dts: thead: Add TH1520 pinctrl settings for UART0 Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-10-12 13:48   ` Emil Renner Berthing
2024-10-12 13:48     ` Emil Renner Berthing
2024-09-30 19:50 ` [PATCH v3 8/8] riscv: dtb: thead: Add BeagleV Ahead LEDs Drew Fustini
2024-09-30 19:50   ` Drew Fustini
2024-10-12 14:41   ` Emil Renner Berthing
2024-10-12 14:41     ` Emil Renner Berthing
2024-10-01 12:13 ` [PATCH v3 0/8] pinctrl: Add T-Head TH1520 SoC pin controllers Linus Walleij
2024-10-01 12:13   ` Linus Walleij
2024-10-02 18:34   ` Drew Fustini
2024-10-02 18:34     ` Drew Fustini
2024-10-02 20:46     ` Linus Walleij
2024-10-02 20:46       ` Linus Walleij
2024-10-03  0:02       ` Drew Fustini
2024-10-03  0:02         ` Drew Fustini
2024-10-11 17:22 ` Drew Fustini
2024-10-11 17:22   ` Drew Fustini
  -- strict thread matches above, loose matches on Subject: below --
2024-10-02 15:45 [PATCH v3 2/8] pinctrl: Add driver for the T-Head TH1520 SoC kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.