Message ID | 20230110200255.1218738-2-macroalpha82@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/panel: Add Magnachip D53E6EA8966 Panel Controller | expand |
Hi Chris, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on rockchip/for-next] [also build test WARNING on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.2-rc3 next-20230110] [cannot apply to drm-misc/drm-misc-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 base: https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git for-next patch link: https://lore.kernel.org/r/20230110200255.1218738-2-macroalpha82%40gmail.com patch subject: [PATCH v8 1/4] drm: of: Add drm_of_get_dsi_bus helper function config: x86_64-rhel-8.3-kselftests compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/d2ebfa16b561f07b4ad2afd2c1ce75395150c01e git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 git checkout d2ebfa16b561f07b4ad2afd2c1ce75395150c01e # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): In file included from drivers/gpu/drm/drm_bridge.c:32: >> include/drm/drm_of.h:134:23: warning: no previous prototype for 'drm_of_get_dsi_bus' [-Wmissing-prototypes] 134 | struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, | ^~~~~~~~~~~~~~~~~~ vim +/drm_of_get_dsi_bus +134 include/drm/drm_of.h 125 126 static inline int 127 drm_of_get_data_lanes_count_ep(const struct device_node *port, 128 int port_reg, int reg, 129 const unsigned int min, 130 const unsigned int max) 131 { 132 return -EINVAL; 133 } > 134 struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, 135 struct mipi_dsi_device_info *info) 136 { 137 return ERR_PTR(-EINVAL); 138 } 139 #endif 140
Hi Chris, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on rockchip/for-next] [also build test WARNING on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.2-rc3 next-20230110] [cannot apply to drm-misc/drm-misc-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 base: https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git for-next patch link: https://lore.kernel.org/r/20230110200255.1218738-2-macroalpha82%40gmail.com patch subject: [PATCH v8 1/4] drm: of: Add drm_of_get_dsi_bus helper function config: i386-randconfig-a004 compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/d2ebfa16b561f07b4ad2afd2c1ce75395150c01e git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 git checkout d2ebfa16b561f07b4ad2afd2c1ce75395150c01e # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpu/drm/i2c/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): In file included from drivers/gpu/drm/i2c/tda998x_drv.c:20: >> include/drm/drm_of.h:134:23: warning: no previous prototype for function 'drm_of_get_dsi_bus' [-Wmissing-prototypes] struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, ^ include/drm/drm_of.h:134:1: note: declare 'static' if the function is not intended to be used outside of this translation unit struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, ^ static 1 warning generated. vim +/drm_of_get_dsi_bus +134 include/drm/drm_of.h 125 126 static inline int 127 drm_of_get_data_lanes_count_ep(const struct device_node *port, 128 int port_reg, int reg, 129 const unsigned int min, 130 const unsigned int max) 131 { 132 return -EINVAL; 133 } > 134 struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, 135 struct mipi_dsi_device_info *info) 136 { 137 return ERR_PTR(-EINVAL); 138 } 139 #endif 140
Hi Chris, Thank you for the patch! Yet something to improve: [auto build test ERROR on rockchip/for-next] [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.2-rc3 next-20230110] [cannot apply to drm-misc/drm-misc-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 base: https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git for-next patch link: https://lore.kernel.org/r/20230110200255.1218738-2-macroalpha82%40gmail.com patch subject: [PATCH v8 1/4] drm: of: Add drm_of_get_dsi_bus helper function config: x86_64-defconfig compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/d2ebfa16b561f07b4ad2afd2c1ce75395150c01e git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 git checkout d2ebfa16b561f07b4ad2afd2c1ce75395150c01e # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): In file included from drivers/gpu/drm/drm_bridge.c:32: >> include/drm/drm_of.h:134:23: warning: no previous prototype for 'drm_of_get_dsi_bus' [-Wmissing-prototypes] 134 | struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, | ^~~~~~~~~~~~~~~~~~ -- ld: drivers/gpu/drm/bridge/panel.o: in function `drm_of_get_dsi_bus': >> panel.c:(.text+0x6c0): multiple definition of `drm_of_get_dsi_bus'; drivers/gpu/drm/drm_bridge.o:drm_bridge.c:(.text+0x1160): first defined here
Hi Chris, Thank you for the patch! Yet something to improve: [auto build test ERROR on rockchip/for-next] [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.2-rc3 next-20230111] [cannot apply to drm-misc/drm-misc-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 base: https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git for-next patch link: https://lore.kernel.org/r/20230110200255.1218738-2-macroalpha82%40gmail.com patch subject: [PATCH v8 1/4] drm: of: Add drm_of_get_dsi_bus helper function config: x86_64-randconfig-a013 compiler: gcc-11 (Debian 11.3.0-8) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/d2ebfa16b561f07b4ad2afd2c1ce75395150c01e git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Chris-Morgan/drm-of-Add-drm_of_get_dsi_bus-helper-function/20230111-040413 git checkout d2ebfa16b561f07b4ad2afd2c1ce75395150c01e # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 olddefconfig make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): ld: drivers/gpu/drm/bridge/panel.o: in function `drm_of_get_dsi_bus': >> include/drm/drm_of.h:136: multiple definition of `drm_of_get_dsi_bus'; drivers/gpu/drm/drm_bridge.o:include/drm/drm_of.h:136: first defined here ld: drivers/gpu/drm/i2c/tda998x_drv.o: in function `drm_of_get_dsi_bus': >> include/drm/drm_of.h:136: multiple definition of `drm_of_get_dsi_bus'; drivers/gpu/drm/drm_bridge.o:include/drm/drm_of.h:136: first defined here ld: drivers/gpu/drm/etnaviv/etnaviv_drv.o: in function `drm_of_get_dsi_bus': >> include/drm/drm_of.h:136: multiple definition of `drm_of_get_dsi_bus'; drivers/gpu/drm/drm_bridge.o:include/drm/drm_of.h:136: first defined here vim +136 include/drm/drm_of.h 125 126 static inline int 127 drm_of_get_data_lanes_count_ep(const struct device_node *port, 128 int port_reg, int reg, 129 const unsigned int min, 130 const unsigned int max) 131 { 132 return -EINVAL; 133 } 134 struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, 135 struct mipi_dsi_device_info *info) > 136 { 137 return ERR_PTR(-EINVAL); 138 } 139 #endif 140
On Wed, Jan 11, 2023 at 4:01 AM kernel test robot <lkp@intel.com> wrote: > 126 static inline int > 127 drm_of_get_data_lanes_count_ep(const struct device_node *port, > 128 int port_reg, int reg, > 129 const unsigned int min, > 130 const unsigned int max) > 131 { > 132 return -EINVAL; > 133 } > > 134 struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, > 135 struct mipi_dsi_device_info *info) > 136 { > 137 return ERR_PTR(-EINVAL); > 138 } > 139 #endif This needs to be prefixed "static inline" like the function above, then I bet it works. Yours, Linus Walleij
diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c index 7bbcb999bb75..4ebb5bc4b595 100644 --- a/drivers/gpu/drm/drm_of.c +++ b/drivers/gpu/drm/drm_of.c @@ -10,6 +10,7 @@ #include <drm/drm_crtc.h> #include <drm/drm_device.h> #include <drm/drm_encoder.h> +#include <drm/drm_mipi_dsi.h> #include <drm/drm_of.h> #include <drm/drm_panel.h> @@ -493,3 +494,72 @@ int drm_of_get_data_lanes_count_ep(const struct device_node *port, return ret; } EXPORT_SYMBOL_GPL(drm_of_get_data_lanes_count_ep); + +/** + * drm_of_get_dsi_bus - find the DSI bus for a given device + * @dev: parent device of display (SPI, I2C) + * @info: DSI device info to be updated with correct DSI node + * + * Gets parent DSI bus for a DSI device controlled through a bus other + * than MIPI-DCS (SPI, I2C, etc.) using the Device Tree. + * + * Returns pointer to mipi_dsi_host if successful, -EINVAL if the + * request is unsupported, -EPROBE_DEFER if the DSI host is found but + * not available, or -ENODEV otherwise. + */ +struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, + struct mipi_dsi_device_info *info) +{ + struct mipi_dsi_host *dsi_host; + struct device_node *endpoint, *dsi_host_node; + + /* + * Exit immediately if we attempt to call this function when + * DRM_MIPI_DSI is not enabled, in the event CONFIG_OF is + * enabled. + */ + if (!IS_ENABLED(CONFIG_DRM_MIPI_DSI)) + return ERR_PTR(-EINVAL); + + /* + * Get first endpoint child from device. + */ + endpoint = of_graph_get_next_endpoint(dev->of_node, NULL); + if (!endpoint) + return ERR_PTR(-ENODEV); + + /* + * Follow the first endpoint to get the DSI host node. + */ + dsi_host_node = of_graph_get_remote_port_parent(endpoint); + if (!dsi_host_node) + goto error; + + /* + * Get the DSI host from the DSI host node. If we get an error + * or the return is null assume we're not ready to probe just + * yet. Release the DSI host node since we're done with it. + */ + dsi_host = of_find_mipi_dsi_host_by_node(dsi_host_node); + of_node_put(dsi_host_node); + if (IS_ERR_OR_NULL(dsi_host)) { + of_node_put(endpoint); + return ERR_PTR(-EPROBE_DEFER); + } + + /* + * Set the node of the mipi_dsi_device_info to the correct node + * and then release the endpoint node since we're done with it. + */ + info->node = of_graph_get_remote_port(endpoint); + if (IS_ERR_OR_NULL(info->node)) + goto error; + + of_node_put(endpoint); + return dsi_host; + +error: + of_node_put(endpoint); + return ERR_PTR(-ENODEV); +} +EXPORT_SYMBOL_GPL(drm_of_get_dsi_bus); diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h index 10ab58c40746..f5511e0d1822 100644 --- a/include/drm/drm_of.h +++ b/include/drm/drm_of.h @@ -15,6 +15,8 @@ struct drm_encoder; struct drm_panel; struct drm_bridge; struct device_node; +struct mipi_dsi_device_info; +struct mipi_dsi_host; /** * enum drm_lvds_dual_link_pixels - Pixel order of an LVDS dual-link connection @@ -56,6 +58,8 @@ int drm_of_get_data_lanes_count_ep(const struct device_node *port, int port_reg, int reg, const unsigned int min, const unsigned int max); +struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, + struct mipi_dsi_device_info *info); #else static inline uint32_t drm_of_crtc_port_mask(struct drm_device *dev, struct device_node *port) @@ -127,6 +131,11 @@ drm_of_get_data_lanes_count_ep(const struct device_node *port, { return -EINVAL; } +struct mipi_dsi_host *drm_of_get_dsi_bus(struct device *dev, + struct mipi_dsi_device_info *info) +{ + return ERR_PTR(-EINVAL); +} #endif /*