CC: [email protected] CC: [email protected] TO: Rajesh Gugulothu <[email protected]> CC: Michal Simek <[email protected]> CC: Hyun Kwon <[email protected]>
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.15 head: 966124532656bc95d781abf57531e4cd4f962237 commit: c1b7addf0028e99aeb94afa8ffc106926b0696d9 [784/923] drm: xlnx: dptx: Add DisplayPort tx driver :::::: branch date: 13 hours ago :::::: commit date: 10 days ago config: alpha-randconfig-c024-20220208 (https://download.01.org/0day-ci/archive/20220211/[email protected]/config) compiler: alpha-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Julia Lawall <[email protected]> cocci warnings: (new ones prefixed by >>) >> drivers/gpu/drm/xlnx/xlnx_dptx.c:3187:4-10: ERROR: missing put_device; call >> of_find_device_by_node on line 3176, but without a corresponding object >> release within this function. drivers/gpu/drm/xlnx/xlnx_dptx.c:3195:2-8: ERROR: missing put_device; call of_find_device_by_node on line 3176, but without a corresponding object release within this function. drivers/gpu/drm/xlnx/xlnx_dptx.c:3221:5-11: ERROR: missing put_device; call of_find_device_by_node on line 3176, but without a corresponding object release within this function. drivers/gpu/drm/xlnx/xlnx_dptx.c:3236:3-9: ERROR: missing put_device; call of_find_device_by_node on line 3176, but without a corresponding object release within this function. drivers/gpu/drm/xlnx/xlnx_dptx.c:3242:2-8: ERROR: missing put_device; call of_find_device_by_node on line 3176, but without a corresponding object release within this function. drivers/gpu/drm/xlnx/xlnx_dptx.c:3283:1-7: ERROR: missing put_device; call of_find_device_by_node on line 3176, but without a corresponding object release within this function. drivers/gpu/drm/xlnx/xlnx_dptx.c:3297:1-7: ERROR: missing put_device; call of_find_device_by_node on line 3176, but without a corresponding object release within this function. vim +3187 drivers/gpu/drm/xlnx/xlnx_dptx.c c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3125 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3126 static int xlnx_dp_probe(struct platform_device *pdev) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3127 { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3128 struct device_node *pnode = pdev->dev.of_node; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3129 struct device_node *fnode; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3130 struct platform_device *iface_pdev; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3131 struct xlnx_dp *dp; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3132 struct resource *res; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3133 void *ptr; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3134 unsigned int i; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3135 int irq, ret; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3136 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3137 dp = devm_kzalloc(&pdev->dev, sizeof(*dp), GFP_KERNEL); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3138 if (!dp) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3139 return -ENOMEM; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3140 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3141 dp->tx_audio_data = c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3142 devm_kzalloc(&pdev->dev, sizeof(struct xlnx_dptx_audio_data), c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3143 GFP_KERNEL); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3144 if (!dp->tx_audio_data) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3145 return -ENOMEM; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3146 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3147 dp->dpms = DRM_MODE_DPMS_OFF; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3148 dp->status = connector_status_disconnected; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3149 dp->dev = &pdev->dev; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3150 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3151 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dp_base"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3152 dp->dp_base = devm_ioremap_resource(dp->dev, res); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3153 if (IS_ERR(dp->dp_base)) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3154 dev_err(&pdev->dev, "couldn't map DisplayPort registers\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3155 return -ENODEV; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3156 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3157 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3158 ret = xlnx_dp_parse_of(dp); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3159 if (ret < 0) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3160 return ret; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3161 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3162 if (dp->config.versal_gt_present) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3163 dp->phy[0] = devm_phy_get(dp->dev, "dp-gtquad"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3164 if (IS_ERR(dp->phy[0])) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3165 return dev_err_probe(dp->dev, ret, "failed to get phy\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3166 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3167 ret = phy_init(dp->phy[0]); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3168 if (ret) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3169 goto error_phy; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3170 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3171 fnode = of_parse_phandle(pnode, "xlnx,xilinx-vfmc", 0); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3172 if (!fnode) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3173 dev_err(&pdev->dev, "platform node not found\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3174 of_node_put(fnode); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3175 } else { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 @3176 iface_pdev = of_find_device_by_node(fnode); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3177 if (!iface_pdev) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3178 of_node_put(pnode); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3179 return -ENODEV; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3180 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3181 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3182 ptr = dev_get_drvdata(&iface_pdev->dev); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3183 if (!ptr) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3184 dev_info(&pdev->dev, c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3185 "platform device not found -EPROBE_DEFER\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3186 of_node_put(fnode); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 @3187 return -EPROBE_DEFER; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3188 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3189 of_node_put(fnode); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3190 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3191 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3192 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3193 dp->axi_lite_clk = devm_clk_get(&pdev->dev, "s_axi_aclk"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3194 if (IS_ERR(dp->axi_lite_clk)) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3195 return PTR_ERR(dp->axi_lite_clk); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3196 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3197 dp->tx_vid_clk = devm_clk_get(&pdev->dev, "tx_vid_clk"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3198 if (IS_ERR(dp->tx_vid_clk)) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3199 dev_err(dp->dev, "failed to get vid clk stream1\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3200 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3201 platform_set_drvdata(pdev, dp); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3202 xlnx_dp_write(dp->dp_base, XDPTX_ENABLE_REG, 0); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3203 xlnx_dp_write(dp->dp_base, XDPTX_MAINSTRM_ENABLE_REG, 0); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3204 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3205 dp->tx_link_config.vs_level = 0; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3206 dp->tx_link_config.pe_level = 0; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3207 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3208 if (!dp->config.versal_gt_present) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3209 /* acquire vphy lanes */ c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3210 for (i = 0; i < dp->config.max_lanes; i++) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3211 char phy_name[16]; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3212 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3213 snprintf(phy_name, sizeof(phy_name), "dp-phy%d", i); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3214 dp->phy[i] = devm_phy_get(dp->dev, phy_name); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3215 if (IS_ERR(dp->phy[i])) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3216 ret = PTR_ERR(dp->phy[i]); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3217 dp->phy[i] = NULL; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3218 if (ret == -EPROBE_DEFER) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3219 dev_info(dp->dev, c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3220 "xvphy not ready -EPROBE_DEFER\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3221 return ret; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3222 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3223 if (ret != -EPROBE_DEFER) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3224 dev_err(dp->dev, "failed to get phy lane %s i %d, error %d\n", c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3225 phy_name, i, ret); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3226 goto error_phy; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3227 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3228 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3229 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3230 ret = xlnx_dp_init_phy(dp); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3231 if (ret) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3232 goto error_phy; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3233 } else { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3234 ret = xlnx_dp_tx_gt_control_init(dp); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3235 if (ret < 0) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3236 return ret; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3237 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3238 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3239 ret = clk_prepare_enable(dp->axi_lite_clk); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3240 if (ret) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3241 dev_err(dp->dev, "failed to enable axi_lite_clk (%d)\n", ret); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3242 return ret; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3243 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3244 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3245 ret = clk_prepare_enable(dp->tx_vid_clk); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3246 if (ret) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3247 dev_err(dp->dev, "failed to enable tx_vid_clk (%d)\n", ret); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3248 goto tx_vid_clk_err; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3249 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3250 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3251 dp->aux.name = "Xlnx DP AUX"; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3252 dp->aux.dev = dp->dev; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3253 dp->aux.transfer = xlnx_dp_aux_transfer; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3254 ret = drm_dp_aux_register(&dp->aux); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3255 if (ret < 0) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3256 dev_err(dp->dev, "failed to initialize DP aux\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3257 goto error; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3258 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3259 irq = platform_get_irq(pdev, 0); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3260 if (irq < 0) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3261 ret = irq; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3262 goto error; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3263 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3264 ret = devm_request_threaded_irq(dp->dev, irq, NULL, c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3265 xlnx_dp_irq_handler, IRQF_ONESHOT, c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3266 dev_name(dp->dev), dp); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3267 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3268 if (ret < 0) c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3269 goto error; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3270 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3271 if (dp->config.audio_enabled) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3272 dp->audio_pdev = dptx_register_aud_dev(dp->dev); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3273 if (IS_ERR(dp->audio_pdev)) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3274 dp->audio_init = false; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3275 dev_err(dp->dev, "dp tx audio init failed\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3276 goto error; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3277 } else { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3278 dp->audio_init = true; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3279 dev_info(dp->dev, "dp tx audio initialized\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3280 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3281 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3282 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3283 return component_add(&pdev->dev, &xlnx_dp_component_ops); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3284 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3285 tx_vid_clk_err: c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3286 clk_disable_unprepare(dp->axi_lite_clk); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3287 error: c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3288 drm_dp_aux_unregister(&dp->aux); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3289 error_phy: c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3290 if (!dp->config.versal_gt_present) { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3291 dev_dbg(&pdev->dev, "xdprxss_probe() error_phy:\n"); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3292 xlnx_dp_exit_phy(dp); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3293 } else { c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3294 phy_exit(dp->phy[0]); c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3295 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3296 c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3297 return ret; c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3298 } c1b7addf0028e9 Rajesh Gugulothu 2020-08-24 3299 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
