Re: cx23885: use pci_set_dma_mask insted of pci_dma_supported

2015-11-18 Thread Christoph Hellwig
Hi Tycho,

please try the patch below - Andrew should be sending it on to Linux soon.

---
>From 4c03a9f77104b04af45833e0424954191ca94a12 Mon Sep 17 00:00:00 2001
From: Christoph Hellwig 
Date: Wed, 11 Nov 2015 18:13:09 +0100
Subject: various: fix pci_set_dma_mask return value checking

pci_set_dma_mask returns a negative errno value, not a bool
like pci_dma_supported.  This of course was just a giant test
for attention :)

Reported-by: Jongman Heo 
Tested-by: Jongman Heo [pcnet32]
Signed-off-by: Christoph Hellwig 
---
 drivers/media/pci/cx23885/cx23885-core.c   | 4 ++--
 drivers/media/pci/cx25821/cx25821-core.c   | 3 ++-
 drivers/media/pci/cx88/cx88-alsa.c | 4 ++--
 drivers/media/pci/cx88/cx88-mpeg.c | 3 ++-
 drivers/media/pci/cx88/cx88-video.c| 4 ++--
 drivers/media/pci/netup_unidvb/netup_unidvb_core.c | 2 +-
 drivers/media/pci/saa7134/saa7134-core.c   | 4 ++--
 drivers/media/pci/saa7164/saa7164-core.c   | 4 ++--
 drivers/media/pci/tw68/tw68-core.c | 4 ++--
 drivers/net/ethernet/amd/pcnet32.c | 5 +++--
 10 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/drivers/media/pci/cx23885/cx23885-core.c 
b/drivers/media/pci/cx23885/cx23885-core.c
index 35759a9..e8f8472 100644
--- a/drivers/media/pci/cx23885/cx23885-core.c
+++ b/drivers/media/pci/cx23885/cx23885-core.c
@@ -1992,9 +1992,9 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
(unsigned long long)pci_resource_start(pci_dev, 0));
 
pci_set_master(pci_dev);
-   if (!pci_set_dma_mask(pci_dev, 0x)) {
+   err = pci_set_dma_mask(pci_dev, 0x);
+   if (err) {
printk("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
-   err = -EIO;
goto fail_context;
}
 
diff --git a/drivers/media/pci/cx25821/cx25821-core.c 
b/drivers/media/pci/cx25821/cx25821-core.c
index dbc695f..0042803 100644
--- a/drivers/media/pci/cx25821/cx25821-core.c
+++ b/drivers/media/pci/cx25821/cx25821-core.c
@@ -1319,7 +1319,8 @@ static int cx25821_initdev(struct pci_dev *pci_dev,
dev->pci_lat, (unsigned long long)dev->base_io_addr);
 
pci_set_master(pci_dev);
-   if (!pci_set_dma_mask(pci_dev, 0x)) {
+   err = pci_set_dma_mask(pci_dev, 0x);
+   if (err) {
pr_err("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
err = -EIO;
goto fail_irq;
diff --git a/drivers/media/pci/cx88/cx88-alsa.c 
b/drivers/media/pci/cx88/cx88-alsa.c
index 0ed1b65..1b5268f 100644
--- a/drivers/media/pci/cx88/cx88-alsa.c
+++ b/drivers/media/pci/cx88/cx88-alsa.c
@@ -890,9 +890,9 @@ static int snd_cx88_create(struct snd_card *card, struct 
pci_dev *pci,
return err;
}
 
-   if (!pci_set_dma_mask(pci,DMA_BIT_MASK(32))) {
+   err = pci_set_dma_mask(pci,DMA_BIT_MASK(32));
+   if (err) {
dprintk(0, "%s/1: Oops: no 32bit PCI DMA ???\n",core->name);
-   err = -EIO;
cx88_core_put(core, pci);
return err;
}
diff --git a/drivers/media/pci/cx88/cx88-mpeg.c 
b/drivers/media/pci/cx88/cx88-mpeg.c
index 9db7767..f34c229 100644
--- a/drivers/media/pci/cx88/cx88-mpeg.c
+++ b/drivers/media/pci/cx88/cx88-mpeg.c
@@ -393,7 +393,8 @@ static int cx8802_init_common(struct cx8802_dev *dev)
if (pci_enable_device(dev->pci))
return -EIO;
pci_set_master(dev->pci);
-   if (!pci_set_dma_mask(dev->pci,DMA_BIT_MASK(32))) {
+   err = pci_set_dma_mask(dev->pci,DMA_BIT_MASK(32));
+   if (err) {
printk("%s/2: Oops: no 32bit PCI DMA ???\n",dev->core->name);
return -EIO;
}
diff --git a/drivers/media/pci/cx88/cx88-video.c 
b/drivers/media/pci/cx88/cx88-video.c
index 0de1ad5..aef9acf 100644
--- a/drivers/media/pci/cx88/cx88-video.c
+++ b/drivers/media/pci/cx88/cx88-video.c
@@ -1314,9 +1314,9 @@ static int cx8800_initdev(struct pci_dev *pci_dev,
   dev->pci_lat,(unsigned long long)pci_resource_start(pci_dev,0));
 
pci_set_master(pci_dev);
-   if (!pci_set_dma_mask(pci_dev,DMA_BIT_MASK(32))) {
+   err = pci_set_dma_mask(pci_dev,DMA_BIT_MASK(32));
+   if (err) {
printk("%s/0: Oops: no 32bit PCI DMA ???\n",core->name);
-   err = -EIO;
goto fail_core;
}
dev->alloc_ctx = vb2_dma_sg_init_ctx(_dev->dev);
diff --git a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c 
b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
index 60b2d46..3fdbd81 100644
--- a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
+++ b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
@@ -810,7 +810,7 @@ static int netup_unidvb_initdev(struct pci_dev *pci_dev,
"%s(): board vendor 0x%x, revision 

Re: cx23885: use pci_set_dma_mask insted of pci_dma_supported

2015-11-18 Thread Tycho Lürsen

Hi Christoph,
thanks, will do and report back shortly.

Op 18-11-15 om 16:08 schreef Christoph Hellwig:

Hi Tycho,

please try the patch below - Andrew should be sending it on to Linux soon.

---
 From 4c03a9f77104b04af45833e0424954191ca94a12 Mon Sep 17 00:00:00 2001
From: Christoph Hellwig 
Date: Wed, 11 Nov 2015 18:13:09 +0100
Subject: various: fix pci_set_dma_mask return value checking

pci_set_dma_mask returns a negative errno value, not a bool
like pci_dma_supported.  This of course was just a giant test
for attention :)

Reported-by: Jongman Heo 
Tested-by: Jongman Heo   [pcnet32]
Signed-off-by: Christoph Hellwig 
---
  drivers/media/pci/cx23885/cx23885-core.c   | 4 ++--
  drivers/media/pci/cx25821/cx25821-core.c   | 3 ++-
  drivers/media/pci/cx88/cx88-alsa.c | 4 ++--
  drivers/media/pci/cx88/cx88-mpeg.c | 3 ++-
  drivers/media/pci/cx88/cx88-video.c| 4 ++--
  drivers/media/pci/netup_unidvb/netup_unidvb_core.c | 2 +-
  drivers/media/pci/saa7134/saa7134-core.c   | 4 ++--
  drivers/media/pci/saa7164/saa7164-core.c   | 4 ++--
  drivers/media/pci/tw68/tw68-core.c | 4 ++--
  drivers/net/ethernet/amd/pcnet32.c | 5 +++--
  10 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/drivers/media/pci/cx23885/cx23885-core.c 
b/drivers/media/pci/cx23885/cx23885-core.c
index 35759a9..e8f8472 100644
--- a/drivers/media/pci/cx23885/cx23885-core.c
+++ b/drivers/media/pci/cx23885/cx23885-core.c
@@ -1992,9 +1992,9 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
(unsigned long long)pci_resource_start(pci_dev, 0));
  
  	pci_set_master(pci_dev);

-   if (!pci_set_dma_mask(pci_dev, 0x)) {
+   err = pci_set_dma_mask(pci_dev, 0x);
+   if (err) {
printk("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
-   err = -EIO;
goto fail_context;
}
  
diff --git a/drivers/media/pci/cx25821/cx25821-core.c b/drivers/media/pci/cx25821/cx25821-core.c

index dbc695f..0042803 100644
--- a/drivers/media/pci/cx25821/cx25821-core.c
+++ b/drivers/media/pci/cx25821/cx25821-core.c
@@ -1319,7 +1319,8 @@ static int cx25821_initdev(struct pci_dev *pci_dev,
dev->pci_lat, (unsigned long long)dev->base_io_addr);
  
  	pci_set_master(pci_dev);

-   if (!pci_set_dma_mask(pci_dev, 0x)) {
+   err = pci_set_dma_mask(pci_dev, 0x);
+   if (err) {
pr_err("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
err = -EIO;
goto fail_irq;
diff --git a/drivers/media/pci/cx88/cx88-alsa.c 
b/drivers/media/pci/cx88/cx88-alsa.c
index 0ed1b65..1b5268f 100644
--- a/drivers/media/pci/cx88/cx88-alsa.c
+++ b/drivers/media/pci/cx88/cx88-alsa.c
@@ -890,9 +890,9 @@ static int snd_cx88_create(struct snd_card *card, struct 
pci_dev *pci,
return err;
}
  
-	if (!pci_set_dma_mask(pci,DMA_BIT_MASK(32))) {

+   err = pci_set_dma_mask(pci,DMA_BIT_MASK(32));
+   if (err) {
dprintk(0, "%s/1: Oops: no 32bit PCI DMA ???\n",core->name);
-   err = -EIO;
cx88_core_put(core, pci);
return err;
}
diff --git a/drivers/media/pci/cx88/cx88-mpeg.c 
b/drivers/media/pci/cx88/cx88-mpeg.c
index 9db7767..f34c229 100644
--- a/drivers/media/pci/cx88/cx88-mpeg.c
+++ b/drivers/media/pci/cx88/cx88-mpeg.c
@@ -393,7 +393,8 @@ static int cx8802_init_common(struct cx8802_dev *dev)
if (pci_enable_device(dev->pci))
return -EIO;
pci_set_master(dev->pci);
-   if (!pci_set_dma_mask(dev->pci,DMA_BIT_MASK(32))) {
+   err = pci_set_dma_mask(dev->pci,DMA_BIT_MASK(32));
+   if (err) {
printk("%s/2: Oops: no 32bit PCI DMA ???\n",dev->core->name);
return -EIO;
}
diff --git a/drivers/media/pci/cx88/cx88-video.c 
b/drivers/media/pci/cx88/cx88-video.c
index 0de1ad5..aef9acf 100644
--- a/drivers/media/pci/cx88/cx88-video.c
+++ b/drivers/media/pci/cx88/cx88-video.c
@@ -1314,9 +1314,9 @@ static int cx8800_initdev(struct pci_dev *pci_dev,
   dev->pci_lat,(unsigned long long)pci_resource_start(pci_dev,0));
  
  	pci_set_master(pci_dev);

-   if (!pci_set_dma_mask(pci_dev,DMA_BIT_MASK(32))) {
+   err = pci_set_dma_mask(pci_dev,DMA_BIT_MASK(32));
+   if (err) {
printk("%s/0: Oops: no 32bit PCI DMA ???\n",core->name);
-   err = -EIO;
goto fail_core;
}
dev->alloc_ctx = vb2_dma_sg_init_ctx(_dev->dev);
diff --git a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c 
b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
index 60b2d46..3fdbd81 100644
--- a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
+++ b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
@@ -810,7 +810,7 @@ static int 

Re: cx23885: use pci_set_dma_mask insted of pci_dma_supported

2015-11-18 Thread Tycho Lürsen

Hi Christoph,
that additional patch fixed the problem indeed.
Thanks again.

Regards, Tycho

Op 18-11-15 om 17:34 schreef Tycho Lürsen:

Hi Christoph,
thanks, will do and report back shortly.

Op 18-11-15 om 16:08 schreef Christoph Hellwig:

Hi Tycho,

please try the patch below - Andrew should be sending it on to Linux 
soon.


---
 From 4c03a9f77104b04af45833e0424954191ca94a12 Mon Sep 17 00:00:00 2001
From: Christoph Hellwig 
Date: Wed, 11 Nov 2015 18:13:09 +0100
Subject: various: fix pci_set_dma_mask return value checking

pci_set_dma_mask returns a negative errno value, not a bool
like pci_dma_supported.  This of course was just a giant test
for attention :)

Reported-by: Jongman Heo 
Tested-by: Jongman Heo  [pcnet32]
Signed-off-by: Christoph Hellwig 
---
  drivers/media/pci/cx23885/cx23885-core.c   | 4 ++--
  drivers/media/pci/cx25821/cx25821-core.c   | 3 ++-
  drivers/media/pci/cx88/cx88-alsa.c | 4 ++--
  drivers/media/pci/cx88/cx88-mpeg.c | 3 ++-
  drivers/media/pci/cx88/cx88-video.c| 4 ++--
  drivers/media/pci/netup_unidvb/netup_unidvb_core.c | 2 +-
  drivers/media/pci/saa7134/saa7134-core.c   | 4 ++--
  drivers/media/pci/saa7164/saa7164-core.c   | 4 ++--
  drivers/media/pci/tw68/tw68-core.c | 4 ++--
  drivers/net/ethernet/amd/pcnet32.c | 5 +++--
  10 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/drivers/media/pci/cx23885/cx23885-core.c 
b/drivers/media/pci/cx23885/cx23885-core.c

index 35759a9..e8f8472 100644
--- a/drivers/media/pci/cx23885/cx23885-core.c
+++ b/drivers/media/pci/cx23885/cx23885-core.c
@@ -1992,9 +1992,9 @@ static int cx23885_initdev(struct pci_dev 
*pci_dev,

  (unsigned long long)pci_resource_start(pci_dev, 0));
pci_set_master(pci_dev);
-if (!pci_set_dma_mask(pci_dev, 0x)) {
+err = pci_set_dma_mask(pci_dev, 0x);
+if (err) {
  printk("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
-err = -EIO;
  goto fail_context;
  }
  diff --git a/drivers/media/pci/cx25821/cx25821-core.c 
b/drivers/media/pci/cx25821/cx25821-core.c

index dbc695f..0042803 100644
--- a/drivers/media/pci/cx25821/cx25821-core.c
+++ b/drivers/media/pci/cx25821/cx25821-core.c
@@ -1319,7 +1319,8 @@ static int cx25821_initdev(struct pci_dev 
*pci_dev,

  dev->pci_lat, (unsigned long long)dev->base_io_addr);
pci_set_master(pci_dev);
-if (!pci_set_dma_mask(pci_dev, 0x)) {
+err = pci_set_dma_mask(pci_dev, 0x);
+if (err) {
  pr_err("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
  err = -EIO;
  goto fail_irq;
diff --git a/drivers/media/pci/cx88/cx88-alsa.c 
b/drivers/media/pci/cx88/cx88-alsa.c

index 0ed1b65..1b5268f 100644
--- a/drivers/media/pci/cx88/cx88-alsa.c
+++ b/drivers/media/pci/cx88/cx88-alsa.c
@@ -890,9 +890,9 @@ static int snd_cx88_create(struct snd_card *card, 
struct pci_dev *pci,

  return err;
  }
  -if (!pci_set_dma_mask(pci,DMA_BIT_MASK(32))) {
+err = pci_set_dma_mask(pci,DMA_BIT_MASK(32));
+if (err) {
  dprintk(0, "%s/1: Oops: no 32bit PCI DMA ???\n",core->name);
-err = -EIO;
  cx88_core_put(core, pci);
  return err;
  }
diff --git a/drivers/media/pci/cx88/cx88-mpeg.c 
b/drivers/media/pci/cx88/cx88-mpeg.c

index 9db7767..f34c229 100644
--- a/drivers/media/pci/cx88/cx88-mpeg.c
+++ b/drivers/media/pci/cx88/cx88-mpeg.c
@@ -393,7 +393,8 @@ static int cx8802_init_common(struct cx8802_dev 
*dev)

  if (pci_enable_device(dev->pci))
  return -EIO;
  pci_set_master(dev->pci);
-if (!pci_set_dma_mask(dev->pci,DMA_BIT_MASK(32))) {
+err = pci_set_dma_mask(dev->pci,DMA_BIT_MASK(32));
+if (err) {
  printk("%s/2: Oops: no 32bit PCI DMA ???\n",dev->core->name);
  return -EIO;
  }
diff --git a/drivers/media/pci/cx88/cx88-video.c 
b/drivers/media/pci/cx88/cx88-video.c

index 0de1ad5..aef9acf 100644
--- a/drivers/media/pci/cx88/cx88-video.c
+++ b/drivers/media/pci/cx88/cx88-video.c
@@ -1314,9 +1314,9 @@ static int cx8800_initdev(struct pci_dev *pci_dev,
 dev->pci_lat,(unsigned long 
long)pci_resource_start(pci_dev,0));

pci_set_master(pci_dev);
-if (!pci_set_dma_mask(pci_dev,DMA_BIT_MASK(32))) {
+err = pci_set_dma_mask(pci_dev,DMA_BIT_MASK(32));
+if (err) {
  printk("%s/0: Oops: no 32bit PCI DMA ???\n",core->name);
-err = -EIO;
  goto fail_core;
  }
  dev->alloc_ctx = vb2_dma_sg_init_ctx(_dev->dev);
diff --git a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c 
b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c

index 60b2d46..3fdbd81 100644
--- a/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
+++ b/drivers/media/pci/netup_unidvb/netup_unidvb_core.c
@@ -810,7 +810,7 @@ static int 

cx23885: use pci_set_dma_mask insted of pci_dma_supported

2015-11-18 Thread Tycho Lürsen

Hi Christoph,
I own a couple of DVBSky T982 cards, and with your latest patch I can't 
use them anymore.

When the driver loads, it spits this:

[   16.851869] cx23885 driver version 0.0.4 loaded
[   16.852012] CORE cx23885[0]: subsystem: 4254:0982, board: DVBSky T982 
[card=51,autodetected]
[   17.080771] cx25840 11-0044: cx23885 A/V decoder found @ 0x88 
(cx23885[0])
[   17.713272] cx25840 11-0044: loaded v4l-cx23885-avcore-01.fw firmware 
(16382 bytes)

[   17.728982] cx23885_dvb_register() allocating 1 frontend(s)
[   17.728986] cx23885[0]: cx23885 based dvb card
[   17.730007] i2c i2c-10: Added multiplexed i2c bus 12
[   17.730009] si2168 10-0064: Silicon Labs Si2168 successfully attached
[   17.731970] si2157 12-0060: Silicon Labs Si2147/2148/2157/2158 
successfully attached

[   17.731976] DVB: registering new adapter (cx23885[0])
[   17.731979] cx23885 :02:00.0: DVB: registering adapter 1 frontend 
0 (Silicon Labs Si2168)...

[   17.760401] DVBSky T982 port 1 MAC address: 00:17:42:54:09:87
[   17.760404] cx23885_dvb_register() allocating 1 frontend(s)
[   17.760406] cx23885[0]: cx23885 based dvb card
[   17.761028] i2c i2c-9: Added multiplexed i2c bus 13
[   17.761030] si2168 9-0064: Silicon Labs Si2168 successfully attached
[   17.762782] si2157 13-0060: Silicon Labs Si2147/2148/2157/2158 
successfully attached

[   17.762791] DVB: registering new adapter (cx23885[0])
[   17.762794] cx23885 :02:00.0: DVB: registering adapter 2 frontend 
0 (Silicon Labs Si2168)...

[   17.791455] DVBSky T982 port 2 MAC address: 00:17:42:54:09:88
[   17.791461] cx23885_dev_checkrevision() Hardware revision = 0xa5
[   17.791465] cx23885[0]/0: found at :02:00.0, rev: 4, irq: 19, 
latency: 0, mmio: 0xf780

[   17.791469] cx23885[0]/0: Oops: no 32bit PCI DMA ???
[   17.795970] cx23885: probe of :02:00.0 failed with error -5

I guess your patch is ok, so what could be going on?
Kind regards,
Tycho Lürsen

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 07/15] cx23885: use pci_set_dma_mask insted of pci_dma_supported

2015-10-03 Thread Christoph Hellwig
This ensures the dma mask that is supported by the driver is recorded
in the device structure.

Signed-off-by: Christoph Hellwig 
---
 drivers/media/pci/cx23885/cx23885-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/pci/cx23885/cx23885-core.c 
b/drivers/media/pci/cx23885/cx23885-core.c
index 7aee76a..8194052 100644
--- a/drivers/media/pci/cx23885/cx23885-core.c
+++ b/drivers/media/pci/cx23885/cx23885-core.c
@@ -1990,7 +1990,7 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
(unsigned long long)pci_resource_start(pci_dev, 0));
 
pci_set_master(pci_dev);
-   if (!pci_dma_supported(pci_dev, 0x)) {
+   if (!pci_set_dma_mask(pci_dev, 0x)) {
printk("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
err = -EIO;
goto fail_context;
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html