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]

Reply via email to