32
32
33
33
DEFINE_DRM_GEM_FOPS (hibmc_fops );
34
34
35
- static const char * g_irqs_names_map [HIBMC_MAX_VECTORS ] = { "vblank" , "hpd" };
35
+ static const char * g_irqs_names_map [HIBMC_MAX_VECTORS ] = { "hibmc- vblank" , "hibmc- hpd" };
36
36
37
37
static irqreturn_t hibmc_interrupt (int irq , void * arg )
38
38
{
@@ -115,6 +115,8 @@ static const struct drm_mode_config_funcs hibmc_mode_funcs = {
115
115
static int hibmc_kms_init (struct hibmc_drm_private * priv )
116
116
{
117
117
struct drm_device * dev = & priv -> dev ;
118
+ struct drm_encoder * encoder ;
119
+ u32 clone_mask = 0 ;
118
120
int ret ;
119
121
120
122
ret = drmm_mode_config_init (dev );
@@ -154,6 +156,12 @@ static int hibmc_kms_init(struct hibmc_drm_private *priv)
154
156
return ret ;
155
157
}
156
158
159
+ drm_for_each_encoder (encoder , dev )
160
+ clone_mask |= drm_encoder_mask (encoder );
161
+
162
+ drm_for_each_encoder (encoder , dev )
163
+ encoder -> possible_clones = clone_mask ;
164
+
157
165
return 0 ;
158
166
}
159
167
@@ -277,7 +285,6 @@ static void hibmc_unload(struct drm_device *dev)
277
285
static int hibmc_msi_init (struct drm_device * dev )
278
286
{
279
287
struct pci_dev * pdev = to_pci_dev (dev -> dev );
280
- char name [32 ] = {0 };
281
288
int valid_irq_num ;
282
289
int irq ;
283
290
int ret ;
@@ -292,20 +299,17 @@ static int hibmc_msi_init(struct drm_device *dev)
292
299
valid_irq_num = ret ;
293
300
294
301
for (int i = 0 ; i < valid_irq_num ; i ++ ) {
295
- snprintf (name , ARRAY_SIZE (name ) - 1 , "%s-%s-%s" ,
296
- dev -> driver -> name , pci_name (pdev ), g_irqs_names_map [i ]);
297
-
298
302
irq = pci_irq_vector (pdev , i );
299
303
300
304
if (i )
301
305
/* PCI devices require shared interrupts. */
302
306
ret = devm_request_threaded_irq (& pdev -> dev , irq ,
303
307
hibmc_dp_interrupt ,
304
308
hibmc_dp_hpd_isr ,
305
- IRQF_SHARED , name , dev );
309
+ IRQF_SHARED , g_irqs_names_map [ i ] , dev );
306
310
else
307
311
ret = devm_request_irq (& pdev -> dev , irq , hibmc_interrupt ,
308
- IRQF_SHARED , name , dev );
312
+ IRQF_SHARED , g_irqs_names_map [ i ] , dev );
309
313
if (ret ) {
310
314
drm_err (dev , "install irq failed: %d\n" , ret );
311
315
return ret ;
@@ -323,13 +327,13 @@ static int hibmc_load(struct drm_device *dev)
323
327
324
328
ret = hibmc_hw_init (priv );
325
329
if (ret )
326
- goto err ;
330
+ return ret ;
327
331
328
332
ret = drmm_vram_helper_init (dev , pci_resource_start (pdev , 0 ),
329
333
pci_resource_len (pdev , 0 ));
330
334
if (ret ) {
331
335
drm_err (dev , "Error initializing VRAM MM; %d\n" , ret );
332
- goto err ;
336
+ return ret ;
333
337
}
334
338
335
339
ret = hibmc_kms_init (priv );
0 commit comments