Hi Paul, Thank you for the patch! Yet something to improve: [auto build test ERROR on pinctrl/devel] [also build test ERROR on v4.18-rc2 next-20180627] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Paul-Cercueil/pinctrl-Add-core-function-pinmux_gpio_get_direction/20180627-201609 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel config: x86_64-randconfig-s0-06272107 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers//pinctrl/core.c: In function 'pinctrl_gpio_get_direction': >> drivers//pinctrl/core.c:873:8: error: implicit declaration of function 'pinmux_gpio_get_direction' [-Werror=implicit-function-declaration] ret = pinmux_gpio_get_direction(pctldev, range, pin); ^~~~~~~~~~~~~~~~~~~~~~~~~ Cyclomatic Complexity 5 include/linux/compiler.h:__write_once_size Cyclomatic Complexity 1 include/linux/kasan-checks.h:kasan_check_write Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:fls64 Cyclomatic Complexity 1 include/linux/log2.h:__ilog2_u64 Cyclomatic Complexity 1 include/linux/list.h:INIT_LIST_HEAD Cyclomatic Complexity 1 include/linux/list.h:__list_del Cyclomatic Complexity 1 include/asm-generic/getorder.h:__get_order Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:arch_atomic_set Cyclomatic Complexity 1 include/asm-generic/atomic-instrumented.h:atomic_set Cyclomatic Complexity 3 include/linux/string.h:kmemdup Cyclomatic Complexity 1 include/linux/err.h:ERR_PTR Cyclomatic Complexity 1 include/linux/err.h:PTR_ERR Cyclomatic Complexity 1 include/linux/spinlock.h:spinlock_check Cyclomatic Complexity 1 include/linux/refcount.h:refcount_set Cyclomatic Complexity 1 include/linux/kref.h:kref_init Cyclomatic Complexity 1 include/linux/kobject.h:kobject_name Cyclomatic Complexity 2 include/linux/device.h:dev_name Cyclomatic Complexity 28 include/linux/slab.h:kmalloc_index Cyclomatic Complexity 68 include/linux/slab.h:kmalloc_large Cyclomatic Complexity 5 include/linux/slab.h:kmalloc Cyclomatic Complexity 1 include/linux/slab.h:kzalloc Cyclomatic Complexity 1 drivers//pinctrl/devicetree.h:pinctrl_dt_to_map Cyclomatic Complexity 1 drivers//pinctrl/devicetree.h:pinctrl_dt_free_maps Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_check_ops Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_validate_map Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_request_gpio Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_free_gpio Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_gpio_direction Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_map_to_setting Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_free_setting Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_enable_setting Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_disable_setting Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_show_map Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_show_setting Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_init_device_debugfs Cyclomatic Complexity 1 drivers//pinctrl/pinmux.h:pinmux_generic_free_functions Cyclomatic Complexity 2 drivers//pinctrl/core.c:gpio_to_pin Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_generic_free_groups Cyclomatic Complexity 1 drivers//pinctrl/core.c:devm_pinctrl_match Cyclomatic Complexity 2 drivers//pinctrl/core.c:map_type Cyclomatic Complexity 4 drivers//pinctrl/core.c:pinctrl_check_ops Cyclomatic Complexity 1 drivers//pinctrl/core.h:pin_desc_get Cyclomatic Complexity 2 include/linux/list.h:__list_add Cyclomatic Complexity 1 include/linux/list.h:list_add_tail Cyclomatic Complexity 2 drivers//pinctrl/core.c:create_state Cyclomatic Complexity 2 include/linux/list.h:__list_del_entry Cyclomatic Complexity 1 include/linux/list.h:list_del Cyclomatic Complexity 6 drivers//pinctrl/core.c:pinctrl_match_gpio_range Cyclomatic Complexity 5 drivers//pinctrl/core.c:pinctrl_get_device_gpio_range Cyclomatic Complexity 2 drivers//pinctrl/core.c:pinctrl_gpio_direction Cyclomatic Complexity 1 include/linux/err.h:IS_ERR Cyclomatic Complexity 3 include/linux/err.h:IS_ERR_OR_NULL Cyclomatic Complexity 5 drivers//pinctrl/core.c:devm_pinctrl_dev_match Cyclomatic Complexity 1 include/asm-generic/gpio.h:gpio_to_chip Cyclomatic Complexity 11 drivers//pinctrl/core.c:pinctrl_ready_for_gpio_range Cyclomatic Complexity 5 drivers//pinctrl/core.c:find_pinctrl Cyclomatic Complexity 1 include/linux/kref.h:kref_get Cyclomatic Complexity 5 drivers//pinctrl/core.c:find_state Cyclomatic Complexity 4 drivers//pinctrl/core.c:pinctrl_free_setting Cyclomatic Complexity 10 drivers//pinctrl/core.c:pinctrl_free Cyclomatic Complexity 2 drivers//pinctrl/core.c:pinctrl_release Cyclomatic Complexity 2 include/linux/kref.h:kref_put Cyclomatic Complexity 3 drivers//pinctrl/core.c:pinctrl_init_debugfs Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_init Cyclomatic Complexity 8 drivers//pinctrl/core.c:pinctrl_init_device_debugfs Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_gpioranges_open Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_groups_open Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_pins_open Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_open Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_maps_open Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_devices_open Cyclomatic Complexity 6 drivers//pinctrl/core.c:pinctrl_gpioranges_show Cyclomatic Complexity 4 drivers//pinctrl/core.c:pinctrl_pins_show Cyclomatic Complexity 1 include/linux/radix-tree.h:radix_tree_insert Cyclomatic Complexity 5 drivers//pinctrl/core.c:pinctrl_register_one_pin Cyclomatic Complexity 3 drivers//pinctrl/core.c:pinctrl_register_pins Cyclomatic Complexity 4 drivers//pinctrl/core.c:pinctrl_free_pindescs Cyclomatic Complexity 10 drivers//pinctrl/core.c:pinctrl_init_controller Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_remove_device_debugfs Cyclomatic Complexity 8 drivers//pinctrl/core.c:pinctrl_maps_show Cyclomatic Complexity 6 drivers//pinctrl/core.c:pinctrl_devices_show Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_provide_dummies Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_dev_get_name Cyclomatic Complexity 13 drivers//pinctrl/core.c:pinctrl_show Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_dev_get_devname Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_dev_get_drvdata Cyclomatic Complexity 6 drivers//pinctrl/core.c:get_pinctrl_dev_from_devname Cyclomatic Complexity 11 drivers//pinctrl/core.c:add_setting Cyclomatic Complexity 12 drivers//pinctrl/core.c:create_pinctrl Cyclomatic Complexity 5 drivers//pinctrl/core.c:get_pinctrl_dev_from_of_node Cyclomatic Complexity 4 drivers//pinctrl/core.c:pin_get_from_name Cyclomatic Complexity 2 drivers//pinctrl/core.c:pin_get_name Cyclomatic Complexity 7 drivers//pinctrl/core.c:pinctrl_groups_show Cyclomatic Complexity 2 drivers//pinctrl/core.c:pin_is_valid Cyclomatic Complexity 1 drivers//pinctrl/core.c:pinctrl_add_gpio_range Cyclomatic Complexity 2 drivers//pinctrl/core.c:pinctrl_add_gpio_ranges Cyclomatic Complexity 2 drivers//pinctrl/core.c:pinctrl_find_and_add_gpio_range Cyclomatic Complexity 9 drivers//pinctrl/core.c:pinctrl_find_gpio_range_from_pin_nolock vim +/pinmux_gpio_get_direction +873 drivers//pinctrl/core.c 849 850 /** 851 * pinctrl_gpio_get_direction() - Get the direction (input/output) of a GPIO pin 852 * @gpio: the GPIO pin number from the GPIO subsystem number space 853 * 854 * This function should *ONLY* be used from gpiolib-based GPIO drivers, 855 * as part of their gpio_get_direction() semantics, platforms and individual 856 * drivers shall *NOT* touch pin control GPIO calls. 857 */ 858 int pinctrl_gpio_get_direction(unsigned int gpio) 859 { 860 struct pinctrl_dev *pctldev; 861 struct pinctrl_gpio_range *range; 862 int ret; 863 int pin; 864 865 ret = pinctrl_get_device_gpio_range(gpio, &pctldev, &range); 866 if (ret) 867 return ret; 868 869 mutex_lock(&pctldev->mutex); 870 871 /* Convert to the pin controllers number space */ 872 pin = gpio_to_pin(range, gpio); > 873 ret = pinmux_gpio_get_direction(pctldev, range, pin); 874 875 mutex_unlock(&pctldev->mutex); 876 877 return ret; 878 } 879 EXPORT_SYMBOL_GPL(pinctrl_gpio_get_direction); 880 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation