* [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings
@ 2015-05-22 13:59 Hans Verkuil
2015-05-22 13:59 ` [PATCH 01/11] cobalt: fix irqs used for the adv7511 transmitter Hans Verkuil
` (10 more replies)
0 siblings, 11 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media
From: Hans Verkuil <hans.verkuil@cisco.com>
This patch series fixes two bugs in the cobalt driver and a pile of
compiler and sparse fixes (mostly in cobalt as well).
Regards,
Hans
Hans Verkuil (11):
cobalt: fix irqs used for the adv7511 transmitter
cobalt: fix 64-bit division link error
cobalt: fix compiler warnings on 32 bit OSes
e4000: fix compiler warning
cobalt: fix sparse warnings
cobalt: fix sparse warnings
cobalt: fix sparse warnings
cobalt: fix sparse warnings
cobalt: fix sparse warnings
cx24120: fix sparse warning
saa7164: fix sparse warning
drivers/media/dvb-frontends/cx24120.c | 2 +-
drivers/media/pci/cobalt/cobalt-cpld.c | 6 +-
drivers/media/pci/cobalt/cobalt-driver.c | 18 ++-
drivers/media/pci/cobalt/cobalt-driver.h | 22 +--
drivers/media/pci/cobalt/cobalt-flash.c | 18 +--
drivers/media/pci/cobalt/cobalt-i2c.c | 56 +++----
drivers/media/pci/cobalt/cobalt-irq.c | 58 ++++----
drivers/media/pci/cobalt/cobalt-omnitek.c | 12 +-
drivers/media/pci/cobalt/cobalt-v4l2.c | 235 ++++++++++++++++--------------
drivers/media/pci/saa7164/saa7164-i2c.c | 2 +-
drivers/media/tuners/e4000.c | 2 +-
11 files changed, 229 insertions(+), 202 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 01/11] cobalt: fix irqs used for the adv7511 transmitter
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 02/11] cobalt: fix 64-bit division link error Hans Verkuil
` (9 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
The interrupt bit assignments use for the adv7511 were off by one.
This means that the current scheme (bit << (4 * stream_index)) can
no longer be used.
Fix this by precalculating and storing the correct masks in the
cobalt_stream struct.
This wasn't noticed before because the adv7511 interrupts are very
rare. But for CEC support these interrupts are essential, so this made
me realize that it wasn't working correctly.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/cobalt/cobalt-driver.c | 14 ++++++++++++--
drivers/media/pci/cobalt/cobalt-driver.h | 8 +++++---
drivers/media/pci/cobalt/cobalt-irq.c | 7 +++----
3 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-driver.c b/drivers/media/pci/cobalt/cobalt-driver.c
index 0f2549a..0534d71 100644
--- a/drivers/media/pci/cobalt/cobalt-driver.c
+++ b/drivers/media/pci/cobalt/cobalt-driver.c
@@ -451,20 +451,30 @@ static void cobalt_stream_struct_init(struct cobalt *cobalt)
if (i <= COBALT_HSMA_IN_NODE) {
s->dma_channel = i + cobalt->first_fifo_channel;
s->video_channel = i;
+ s->dma_fifo_mask =
+ COBALT_SYSSTAT_VI0_LOST_DATA_MSK << (4 * i);
+ s->adv_irq_mask =
+ COBALT_SYSSTAT_VI0_INT1_MSK << (4 * i);
} else if (i >= COBALT_AUDIO_IN_STREAM &&
i <= COBALT_AUDIO_IN_STREAM + 4) {
- s->dma_channel = 6 + i - COBALT_AUDIO_IN_STREAM;
+ unsigned idx = i - COBALT_AUDIO_IN_STREAM;
+
+ s->dma_channel = 6 + idx;
s->is_audio = true;
- s->video_channel = i - COBALT_AUDIO_IN_STREAM;
+ s->video_channel = idx;
+ s->dma_fifo_mask = COBALT_SYSSTAT_AUD_IN_LOST_DATA_MSK;
} else if (i == COBALT_HSMA_OUT_NODE) {
s->dma_channel = 11;
s->is_output = true;
s->video_channel = 5;
+ s->dma_fifo_mask = COBALT_SYSSTAT_VOHSMA_LOST_DATA_MSK;
+ s->adv_irq_mask = COBALT_SYSSTAT_VOHSMA_INT1_MSK;
} else if (i == COBALT_AUDIO_OUT_STREAM) {
s->dma_channel = 12;
s->is_audio = true;
s->is_output = true;
s->video_channel = 5;
+ s->dma_fifo_mask = COBALT_SYSSTAT_AUD_OUT_LOST_DATA_MSK;
} else {
/* FIXME: Memory DMA for debug purpose */
s->dma_channel = i - COBALT_NUM_NODES;
diff --git a/drivers/media/pci/cobalt/cobalt-driver.h b/drivers/media/pci/cobalt/cobalt-driver.h
index 082bf82..bb062ff 100644
--- a/drivers/media/pci/cobalt/cobalt-driver.h
+++ b/drivers/media/pci/cobalt/cobalt-driver.h
@@ -96,9 +96,9 @@
#define COBALT_SYSSTAT_VIHSMA_INT1_MSK (1 << 21)
#define COBALT_SYSSTAT_VIHSMA_INT2_MSK (1 << 22)
#define COBALT_SYSSTAT_VIHSMA_LOST_DATA_MSK (1 << 23)
-#define COBALT_SYSSTAT_VOHSMA_INT1_MSK (1 << 25)
-#define COBALT_SYSSTAT_VOHSMA_PLL_LOCKED_MSK (1 << 26)
-#define COBALT_SYSSTAT_VOHSMA_LOST_DATA_MSK (1 << 27)
+#define COBALT_SYSSTAT_VOHSMA_INT1_MSK (1 << 24)
+#define COBALT_SYSSTAT_VOHSMA_PLL_LOCKED_MSK (1 << 25)
+#define COBALT_SYSSTAT_VOHSMA_LOST_DATA_MSK (1 << 26)
#define COBALT_SYSSTAT_AUD_PLL_LOCKED_MSK (1 << 28)
#define COBALT_SYSSTAT_AUD_IN_LOST_DATA_MSK (1 << 29)
#define COBALT_SYSSTAT_AUD_OUT_LOST_DATA_MSK (1 << 30)
@@ -236,6 +236,8 @@ struct cobalt_stream {
u8 dma_channel;
int video_channel;
+ unsigned dma_fifo_mask;
+ unsigned adv_irq_mask;
struct sg_dma_desc_info dma_desc_info[NR_BUFS];
unsigned long flags;
bool unstable_frame;
diff --git a/drivers/media/pci/cobalt/cobalt-irq.c b/drivers/media/pci/cobalt/cobalt-irq.c
index e18f49e..a133dfc 100644
--- a/drivers/media/pci/cobalt/cobalt-irq.c
+++ b/drivers/media/pci/cobalt/cobalt-irq.c
@@ -153,8 +153,7 @@ irqreturn_t cobalt_irq_handler(int irq, void *dev_id)
for (i = 0; i < COBALT_NUM_STREAMS; i++) {
struct cobalt_stream *s = &cobalt->streams[i];
- unsigned dma_fifo_mask =
- COBALT_SYSSTAT_VI0_LOST_DATA_MSK << (4 * s->video_channel);
+ unsigned dma_fifo_mask = s->dma_fifo_mask;
if (dma_interrupt & (1 << s->dma_channel)) {
cobalt->irq_dma[i]++;
@@ -169,7 +168,7 @@ irqreturn_t cobalt_irq_handler(int irq, void *dev_id)
}
if (s->is_audio)
continue;
- if (edge & (0x20 << (4 * s->video_channel)))
+ if (edge & s->adv_irq_mask)
set_bit(COBALT_STREAM_FL_ADV_IRQ, &s->flags);
if ((edge & mask & dma_fifo_mask) && vb2_is_streaming(&s->q)) {
cobalt_info("full rx FIFO %d\n", i);
@@ -219,7 +218,7 @@ void cobalt_irq_work_handler(struct work_struct *work)
interrupt_service_routine, 0, NULL);
mask = cobalt_read_bar1(cobalt, COBALT_SYS_STAT_MASK);
cobalt_write_bar1(cobalt, COBALT_SYS_STAT_MASK,
- mask | (0x20 << (4 * s->video_channel)));
+ mask | s->adv_irq_mask);
}
}
}
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 02/11] cobalt: fix 64-bit division link error
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
2015-05-22 13:59 ` [PATCH 01/11] cobalt: fix irqs used for the adv7511 transmitter Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 03/11] cobalt: fix compiler warnings on 32 bit OSes Hans Verkuil
` (8 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
[linuxtv-media:master 1023/1029] ERROR: "__aeabi_uldivmod" [drivers/media/pci/cobalt/cobalt.ko] undefined!
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: kbuild test robot <fengguang.wu@intel.com>
---
drivers/media/pci/cobalt/cobalt-v4l2.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-v4l2.c b/drivers/media/pci/cobalt/cobalt-v4l2.c
index bf80f11..6e8d25b 100644
--- a/drivers/media/pci/cobalt/cobalt-v4l2.c
+++ b/drivers/media/pci/cobalt/cobalt-v4l2.c
@@ -22,6 +22,7 @@
#include <linux/dma-mapping.h>
#include <linux/delay.h>
+#include <linux/math64.h>
#include <linux/pci.h>
#include <linux/v4l2-dv-timings.h>
@@ -314,8 +315,8 @@ static int cobalt_start_streaming(struct vb2_queue *q, unsigned int count)
cvi->frame_height = bt->height;
tot_size = V4L2_DV_BT_FRAME_WIDTH(bt) * V4L2_DV_BT_FRAME_HEIGHT(bt);
vmr->hsync_timeout_val =
- ((u64)V4L2_DV_BT_FRAME_WIDTH(bt) * COBALT_CLK * 4) /
- bt->pixelclock;
+ div_u64((u64)V4L2_DV_BT_FRAME_WIDTH(bt) * COBALT_CLK * 4,
+ bt->pixelclock);
vmr->control = M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK;
clkloss->ref_clk_cnt_val = fw->clk_freq / 1000000;
/* The lower bound for the clock frequency is 0.5% lower as is
@@ -324,7 +325,7 @@ static int cobalt_start_streaming(struct vb2_queue *q, unsigned int count)
(((u64)bt->pixelclock * 995) / 1000) / 1000000;
/* will be enabled after the first frame has been received */
fw->active_length = bt->width * bt->height;
- fw->total_length = ((u64)fw->clk_freq * tot_size) / bt->pixelclock;
+ fw->total_length = div_u64((u64)fw->clk_freq * tot_size, bt->pixelclock);
vmr->irq_triggers = M00233_IRQ_TRIGGERS_BITMAP_VACTIVE_AREA_MSK |
M00233_IRQ_TRIGGERS_BITMAP_HACTIVE_AREA_MSK;
cvi->control = 0;
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 03/11] cobalt: fix compiler warnings on 32 bit OSes
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
2015-05-22 13:59 ` [PATCH 01/11] cobalt: fix irqs used for the adv7511 transmitter Hans Verkuil
2015-05-22 13:59 ` [PATCH 02/11] cobalt: fix 64-bit division link error Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 04/11] e4000: fix compiler warning Hans Verkuil
` (7 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
Fixes these warnings:
drivers/media/pci/cobalt/cobalt-omnitek.c: In function 'omni_sg_dma_start':
drivers/media/pci/cobalt/cobalt-omnitek.c:112:28: warning: right shift count >= width of type [-Wshift-count-overflow]
iowrite32((u32)(desc->bus >> 32), DESCRIPTOR(s->dma_channel) + 4);
^
drivers/media/pci/cobalt/cobalt-omnitek.c: In function 'descriptor_list_create':
drivers/media/pci/cobalt/cobalt-omnitek.c:222:28: warning: right shift count >= width of type [-Wshift-count-overflow]
d->next_h = (u32)(next >> 32);
^
drivers/media/pci/cobalt/cobalt-omnitek.c:268:32: warning: right shift count >= width of type [-Wshift-count-overflow]
d->next_h = (u32)(desc->bus >> 32);
^
drivers/media/pci/cobalt/cobalt-omnitek.c:275:27: warning: right shift count >= width of type [-Wshift-count-overflow]
d->next_h = (u32)(next >> 32);
^
drivers/media/pci/cobalt/cobalt-omnitek.c: In function 'descriptor_list_chain':
drivers/media/pci/cobalt/cobalt-omnitek.c:293:31: warning: right shift count >= width of type [-Wshift-count-overflow]
d->next_h = (u32)(next->bus >> 32);
^
drivers/media/pci/cobalt/cobalt-omnitek.c: In function 'descriptor_list_loopback':
drivers/media/pci/cobalt/cobalt-omnitek.c:332:30: warning: right shift count >= width of type [-Wshift-count-overflow]
d->next_h = (u32)(desc->bus >> 32);
^
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/cobalt/cobalt-omnitek.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-omnitek.c b/drivers/media/pci/cobalt/cobalt-omnitek.c
index 5604458..a28a848 100644
--- a/drivers/media/pci/cobalt/cobalt-omnitek.c
+++ b/drivers/media/pci/cobalt/cobalt-omnitek.c
@@ -109,7 +109,7 @@ void omni_sg_dma_start(struct cobalt_stream *s, struct sg_dma_desc_info *desc)
{
struct cobalt *cobalt = s->cobalt;
- iowrite32((u32)(desc->bus >> 32), DESCRIPTOR(s->dma_channel) + 4);
+ iowrite32((u32)((u64)desc->bus >> 32), DESCRIPTOR(s->dma_channel) + 4);
iowrite32((u32)desc->bus & NEXT_ADRS_MSK, DESCRIPTOR(s->dma_channel));
iowrite32(ENABLE | SCATTER_GATHER_MODE | START, CS_REG(s->dma_channel));
}
@@ -219,7 +219,7 @@ int descriptor_list_create(struct cobalt *cobalt,
offset += d->bytes;
addr += d->bytes;
next += sizeof(struct sg_dma_descriptor);
- d->next_h = (u32)(next >> 32);
+ d->next_h = (u32)((u64)next >> 32);
d->next_l = (u32)next |
(to_pci ? WRITE_TO_PCI : 0);
bytes -= d->bytes;
@@ -265,14 +265,14 @@ int descriptor_list_create(struct cobalt *cobalt,
next += sizeof(struct sg_dma_descriptor);
if (size == 0) {
/* Loopback to the first descriptor */
- d->next_h = (u32)(desc->bus >> 32);
+ d->next_h = (u32)((u64)desc->bus >> 32);
d->next_l = (u32)desc->bus |
(to_pci ? WRITE_TO_PCI : 0) | INTERRUPT_ENABLE;
if (!to_pci)
d->local = 0x22222222;
desc->last_desc_virt = d;
} else {
- d->next_h = (u32)(next >> 32);
+ d->next_h = (u32)((u64)next >> 32);
d->next_l = (u32)next | (to_pci ? WRITE_TO_PCI : 0);
}
d++;
@@ -290,7 +290,7 @@ void descriptor_list_chain(struct sg_dma_desc_info *this,
d->next_h = 0;
d->next_l = direction | INTERRUPT_ENABLE | END_OF_CHAIN;
} else {
- d->next_h = (u32)(next->bus >> 32);
+ d->next_h = (u32)((u64)next->bus >> 32);
d->next_l = (u32)next->bus | direction | INTERRUPT_ENABLE;
}
}
@@ -329,7 +329,7 @@ void descriptor_list_loopback(struct sg_dma_desc_info *desc)
{
struct sg_dma_descriptor *d = desc->last_desc_virt;
- d->next_h = (u32)(desc->bus >> 32);
+ d->next_h = (u32)((u64)desc->bus >> 32);
d->next_l = (u32)desc->bus | (d->next_l & DESCRIPTOR_FLAG_MSK);
}
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 04/11] e4000: fix compiler warning
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (2 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 03/11] cobalt: fix compiler warnings on 32 bit OSes Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 05/11] cobalt: fix sparse warnings Hans Verkuil
` (6 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil, Antti Palosaari, Mauro Carvalho Chehab
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/tuners/e4000.c:287:3: warning: this decimal constant is unsigned only in ISO C90
.rangehigh = 2208000000L,
^
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Antti Palosaari <crope@iki.fi>
Cc: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
---
drivers/media/tuners/e4000.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/tuners/e4000.c b/drivers/media/tuners/e4000.c
index fdf07ce..03538f8 100644
--- a/drivers/media/tuners/e4000.c
+++ b/drivers/media/tuners/e4000.c
@@ -284,7 +284,7 @@ static const struct v4l2_frequency_band bands[] = {
.index = 1,
.capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS,
.rangelow = 1249000000,
- .rangehigh = 2208000000L,
+ .rangehigh = 2208000000UL,
},
};
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 05/11] cobalt: fix sparse warnings
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (3 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 04/11] e4000: fix compiler warning Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 06/11] " Hans Verkuil
` (5 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/pci/cobalt/cobalt-flash.c:39:36: warning: incorrect type in initializer (different address spaces)
drivers/media/pci/cobalt/cobalt-flash.c:54:36: warning: incorrect type in initializer (different address spaces)
drivers/media/pci/cobalt/cobalt-flash.c:63:36: warning: incorrect type in initializer (different address spaces)
drivers/media/pci/cobalt/cobalt-flash.c:82:36: warning: incorrect type in initializer (different address spaces)
drivers/media/pci/cobalt/cobalt-flash.c:107:19: warning: incorrect type in assignment (different address spaces)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/cobalt/cobalt-cpld.c | 4 ++--
drivers/media/pci/cobalt/cobalt-driver.c | 4 ++--
drivers/media/pci/cobalt/cobalt-driver.h | 12 ++++++------
drivers/media/pci/cobalt/cobalt-flash.c | 16 ++++++----------
4 files changed, 16 insertions(+), 20 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-cpld.c b/drivers/media/pci/cobalt/cobalt-cpld.c
index 77ed9e5..05df458 100644
--- a/drivers/media/pci/cobalt/cobalt-cpld.c
+++ b/drivers/media/pci/cobalt/cobalt-cpld.c
@@ -26,12 +26,12 @@
static u16 cpld_read(struct cobalt *cobalt, u32 offset)
{
- return cobalt_bus_read32(cobalt, ADRS(offset));
+ return cobalt_bus_read32(cobalt->bar1, ADRS(offset));
}
static void cpld_write(struct cobalt *cobalt, u32 offset, u16 val)
{
- return cobalt_bus_write32(cobalt, ADRS(offset), val);
+ return cobalt_bus_write32(cobalt->bar1, ADRS(offset), val);
}
static void cpld_info_ver3(struct cobalt *cobalt)
diff --git a/drivers/media/pci/cobalt/cobalt-driver.c b/drivers/media/pci/cobalt/cobalt-driver.c
index 0534d71..c2974e6 100644
--- a/drivers/media/pci/cobalt/cobalt-driver.c
+++ b/drivers/media/pci/cobalt/cobalt-driver.c
@@ -296,11 +296,11 @@ static void cobalt_pci_iounmap(struct cobalt *cobalt, struct pci_dev *pci_dev)
{
if (cobalt->bar0) {
pci_iounmap(pci_dev, cobalt->bar0);
- cobalt->bar0 = 0;
+ cobalt->bar0 = NULL;
}
if (cobalt->bar1) {
pci_iounmap(pci_dev, cobalt->bar1);
- cobalt->bar1 = 0;
+ cobalt->bar1 = NULL;
}
}
diff --git a/drivers/media/pci/cobalt/cobalt-driver.h b/drivers/media/pci/cobalt/cobalt-driver.h
index bb062ff..3d9a9ffb 100644
--- a/drivers/media/pci/cobalt/cobalt-driver.h
+++ b/drivers/media/pci/cobalt/cobalt-driver.h
@@ -342,17 +342,17 @@ static inline u32 cobalt_g_sysstat(struct cobalt *cobalt)
return cobalt_read_bar1(cobalt, COBALT_SYS_STAT_BASE);
}
-#define ADRS_REG (cobalt->bar1 + COBALT_BUS_BAR1_BASE + 0)
-#define LOWER_DATA (cobalt->bar1 + COBALT_BUS_BAR1_BASE + 4)
-#define UPPER_DATA (cobalt->bar1 + COBALT_BUS_BAR1_BASE + 6)
+#define ADRS_REG (bar1 + COBALT_BUS_BAR1_BASE + 0)
+#define LOWER_DATA (bar1 + COBALT_BUS_BAR1_BASE + 4)
+#define UPPER_DATA (bar1 + COBALT_BUS_BAR1_BASE + 6)
-static inline u32 cobalt_bus_read32(struct cobalt *cobalt, u32 bus_adrs)
+static inline u32 cobalt_bus_read32(void __iomem *bar1, u32 bus_adrs)
{
iowrite32(bus_adrs, ADRS_REG);
return ioread32(LOWER_DATA);
}
-static inline void cobalt_bus_write16(struct cobalt *cobalt,
+static inline void cobalt_bus_write16(void __iomem *bar1,
u32 bus_adrs, u16 data)
{
iowrite32(bus_adrs, ADRS_REG);
@@ -362,7 +362,7 @@ static inline void cobalt_bus_write16(struct cobalt *cobalt,
iowrite16(data, LOWER_DATA);
}
-static inline void cobalt_bus_write32(struct cobalt *cobalt,
+static inline void cobalt_bus_write32(void __iomem *bar1,
u32 bus_adrs, u16 data)
{
iowrite32(bus_adrs, ADRS_REG);
diff --git a/drivers/media/pci/cobalt/cobalt-flash.c b/drivers/media/pci/cobalt/cobalt-flash.c
index 129f48f..89fd667 100644
--- a/drivers/media/pci/cobalt/cobalt-flash.c
+++ b/drivers/media/pci/cobalt/cobalt-flash.c
@@ -36,10 +36,9 @@ static struct map_info cobalt_flash_map = {
static map_word flash_read16(struct map_info *map, unsigned long offset)
{
- struct cobalt *cobalt = map->virt;
map_word r;
- r.x[0] = cobalt_bus_read32(cobalt, ADRS(offset));
+ r.x[0] = cobalt_bus_read32(map->virt, ADRS(offset));
if (offset & 0x2)
r.x[0] >>= 16;
else
@@ -51,22 +50,20 @@ static map_word flash_read16(struct map_info *map, unsigned long offset)
static void flash_write16(struct map_info *map, const map_word datum,
unsigned long offset)
{
- struct cobalt *cobalt = map->virt;
u16 data = (u16)datum.x[0];
- cobalt_bus_write16(cobalt, ADRS(offset), data);
+ cobalt_bus_write16(map->virt, ADRS(offset), data);
}
static void flash_copy_from(struct map_info *map, void *to,
unsigned long from, ssize_t len)
{
- struct cobalt *cobalt = map->virt;
u32 src = from;
u8 *dest = to;
u32 data;
while (len) {
- data = cobalt_bus_read32(cobalt, ADRS(src));
+ data = cobalt_bus_read32(map->virt, ADRS(src));
do {
*dest = data >> (8 * (src & 3));
src++;
@@ -79,11 +76,10 @@ static void flash_copy_from(struct map_info *map, void *to,
static void flash_copy_to(struct map_info *map, unsigned long to,
const void *from, ssize_t len)
{
- struct cobalt *cobalt = map->virt;
const u8 *src = from;
u32 dest = to;
- cobalt_info("%s: offset 0x%x: length %zu\n", __func__, dest, len);
+ pr_info("%s: offset 0x%x: length %zu\n", __func__, dest, len);
while (len) {
u16 data = 0xffff;
@@ -94,7 +90,7 @@ static void flash_copy_to(struct map_info *map, unsigned long to,
len--;
} while (len && (dest % 2));
- cobalt_bus_write16(cobalt, ADRS(dest - 2), data);
+ cobalt_bus_write16(map->virt, ADRS(dest - 2), data);
}
}
@@ -104,7 +100,7 @@ int cobalt_flash_probe(struct cobalt *cobalt)
struct mtd_info *mtd;
BUG_ON(!map_bankwidth_supported(map->bankwidth));
- map->virt = cobalt;
+ map->virt = cobalt->bar1;
map->read = flash_read16;
map->write = flash_write16;
map->copy_from = flash_copy_from;
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 06/11] cobalt: fix sparse warnings
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (4 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 05/11] cobalt: fix sparse warnings Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 07/11] " Hans Verkuil
` (4 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/pci/cobalt/cobalt-flash.c:101:5: warning: symbol 'cobalt_flash_probe' was not declared. Should it be static?
drivers/media/pci/cobalt/cobalt-flash.c:126:6: warning: symbol 'cobalt_flash_remove' was not declared. Should it be static?
drivers/media/pci/cobalt/cobalt-cpld.c:101:6: warning: symbol 'cobalt_cpld_status' was not declared. Should it be static?
drivers/media/pci/cobalt/cobalt-cpld.c:240:6: warning: symbol 'cobalt_cpld_set_freq' was not declared. Should it be static?
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/cobalt/cobalt-cpld.c | 2 +-
drivers/media/pci/cobalt/cobalt-flash.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-cpld.c b/drivers/media/pci/cobalt/cobalt-cpld.c
index 05df458..5a28d9b2 100644
--- a/drivers/media/pci/cobalt/cobalt-cpld.c
+++ b/drivers/media/pci/cobalt/cobalt-cpld.c
@@ -20,7 +20,7 @@
#include <linux/delay.h>
-#include "cobalt-driver.h"
+#include "cobalt-cpld.h"
#define ADRS(offset) (COBALT_BUS_CPLD_BASE + offset)
diff --git a/drivers/media/pci/cobalt/cobalt-flash.c b/drivers/media/pci/cobalt/cobalt-flash.c
index 89fd667..04dcaf9 100644
--- a/drivers/media/pci/cobalt/cobalt-flash.c
+++ b/drivers/media/pci/cobalt/cobalt-flash.c
@@ -23,7 +23,7 @@
#include <linux/mtd/cfi.h>
#include <linux/time.h>
-#include "cobalt-driver.h"
+#include "cobalt-flash.h"
#define ADRS(offset) (COBALT_BUS_FLASH_BASE + offset)
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 07/11] cobalt: fix sparse warnings
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (5 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 06/11] " Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 08/11] " Hans Verkuil
` (3 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/pci/cobalt/cobalt-irq.c:62:33: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:64:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:65:23: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:72:21: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:73:25: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:74:25: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:82:33: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:83:33: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:91:25: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:94:23: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:103:25: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:107:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:109:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:116:13: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:119:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:120:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-irq.c:122:17: warning: dereference of noderef expression
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/cobalt/cobalt-irq.c | 51 +++++++++++++++++++----------------
1 file changed, 28 insertions(+), 23 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-irq.c b/drivers/media/pci/cobalt/cobalt-irq.c
index a133dfc..dd4bff9 100644
--- a/drivers/media/pci/cobalt/cobalt-irq.c
+++ b/drivers/media/pci/cobalt/cobalt-irq.c
@@ -28,13 +28,13 @@ static void cobalt_dma_stream_queue_handler(struct cobalt_stream *s)
{
struct cobalt *cobalt = s->cobalt;
int rx = s->video_channel;
- volatile struct m00473_freewheel_regmap __iomem *fw =
+ struct m00473_freewheel_regmap __iomem *fw =
COBALT_CVI_FREEWHEEL(s->cobalt, rx);
- volatile struct m00233_video_measure_regmap __iomem *vmr =
+ struct m00233_video_measure_regmap __iomem *vmr =
COBALT_CVI_VMR(s->cobalt, rx);
- volatile struct m00389_cvi_regmap __iomem *cvi =
+ struct m00389_cvi_regmap __iomem *cvi =
COBALT_CVI(s->cobalt, rx);
- volatile struct m00479_clk_loss_detector_regmap __iomem *clkloss =
+ struct m00479_clk_loss_detector_regmap __iomem *clkloss =
COBALT_CVI_CLK_LOSS(s->cobalt, rx);
struct cobalt_buffer *cb;
bool skip = false;
@@ -59,19 +59,21 @@ static void cobalt_dma_stream_queue_handler(struct cobalt_stream *s)
goto done;
if (s->unstable_frame) {
- uint32_t stat = vmr->irq_status;
+ uint32_t stat = ioread32(&vmr->irq_status);
- vmr->irq_status = stat;
- if (!(vmr->status & M00233_STATUS_BITMAP_INIT_DONE_MSK)) {
+ iowrite32(stat, &vmr->irq_status);
+ if (!(ioread32(&vmr->status) &
+ M00233_STATUS_BITMAP_INIT_DONE_MSK)) {
cobalt_dbg(1, "!init_done\n");
if (s->enable_freewheel)
goto restart_fw;
goto done;
}
- if (clkloss->status & M00479_STATUS_BITMAP_CLOCK_MISSING_MSK) {
- clkloss->ctrl = 0;
- clkloss->ctrl = M00479_CTRL_BITMAP_ENABLE_MSK;
+ if (ioread32(&clkloss->status) &
+ M00479_STATUS_BITMAP_CLOCK_MISSING_MSK) {
+ iowrite32(0, &clkloss->ctrl);
+ iowrite32(M00479_CTRL_BITMAP_ENABLE_MSK, &clkloss->ctrl);
cobalt_dbg(1, "no clock\n");
if (s->enable_freewheel)
goto restart_fw;
@@ -79,8 +81,8 @@ static void cobalt_dma_stream_queue_handler(struct cobalt_stream *s)
}
if ((stat & (M00233_IRQ_STATUS_BITMAP_VACTIVE_AREA_MSK |
M00233_IRQ_STATUS_BITMAP_HACTIVE_AREA_MSK)) ||
- vmr->vactive_area != s->timings.bt.height ||
- vmr->hactive_area != s->timings.bt.width) {
+ ioread32(&vmr->vactive_area) != s->timings.bt.height ||
+ ioread32(&vmr->hactive_area) != s->timings.bt.width) {
cobalt_dbg(1, "unstable\n");
if (s->enable_freewheel)
goto restart_fw;
@@ -88,10 +90,10 @@ static void cobalt_dma_stream_queue_handler(struct cobalt_stream *s)
}
if (!s->enable_cvi) {
s->enable_cvi = true;
- cvi->control = M00389_CONTROL_BITMAP_ENABLE_MSK;
+ iowrite32(M00389_CONTROL_BITMAP_ENABLE_MSK, &cvi->control);
goto done;
}
- if (!(cvi->status & M00389_STATUS_BITMAP_LOCK_MSK)) {
+ if (!(ioread32(&cvi->status) & M00389_STATUS_BITMAP_LOCK_MSK)) {
cobalt_dbg(1, "cvi no lock\n");
if (s->enable_freewheel)
goto restart_fw;
@@ -100,26 +102,29 @@ static void cobalt_dma_stream_queue_handler(struct cobalt_stream *s)
if (!s->enable_freewheel) {
cobalt_dbg(1, "stable\n");
s->enable_freewheel = true;
- fw->ctrl = 0;
+ iowrite32(0, &fw->ctrl);
goto done;
}
cobalt_dbg(1, "enabled fw\n");
- vmr->control = M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK |
- M00233_CONTROL_BITMAP_ENABLE_INTERRUPT_MSK;
- fw->ctrl = M00473_CTRL_BITMAP_ENABLE_MSK;
+ iowrite32(M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK |
+ M00233_CONTROL_BITMAP_ENABLE_INTERRUPT_MSK,
+ &vmr->control);
+ iowrite32(M00473_CTRL_BITMAP_ENABLE_MSK, &fw->ctrl);
s->enable_freewheel = false;
s->unstable_frame = false;
s->skip_first_frames = 2;
skip = true;
goto done;
}
- if (fw->status & M00473_STATUS_BITMAP_FREEWHEEL_MODE_MSK) {
+ if (ioread32(&fw->status) & M00473_STATUS_BITMAP_FREEWHEEL_MODE_MSK) {
restart_fw:
cobalt_dbg(1, "lost lock\n");
- vmr->control = M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK;
- fw->ctrl = M00473_CTRL_BITMAP_ENABLE_MSK |
- M00473_CTRL_BITMAP_FORCE_FREEWHEEL_MODE_MSK;
- cvi->control = 0;
+ iowrite32(M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK,
+ &vmr->control);
+ iowrite32(M00473_CTRL_BITMAP_ENABLE_MSK |
+ M00473_CTRL_BITMAP_FORCE_FREEWHEEL_MODE_MSK,
+ &fw->ctrl);
+ iowrite32(0, &cvi->control);
s->unstable_frame = true;
s->enable_freewheel = false;
s->enable_cvi = false;
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 08/11] cobalt: fix sparse warnings
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (6 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 07/11] " Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 09/11] " Hans Verkuil
` (2 subsequent siblings)
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/pci/cobalt/cobalt-i2c.c:130:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:147:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:151:26: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:156:34: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:206:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:210:26: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:215:34: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:225:27: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:335:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:336:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:337:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:348:34: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:352:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:353:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:356:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:357:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-i2c.c:359:17: warning: dereference of noderef expression
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/cobalt/cobalt-driver.h | 2 +-
drivers/media/pci/cobalt/cobalt-i2c.c | 56 ++++++++++++++++----------------
2 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-driver.h b/drivers/media/pci/cobalt/cobalt-driver.h
index 3d9a9ffb..f63ce19 100644
--- a/drivers/media/pci/cobalt/cobalt-driver.h
+++ b/drivers/media/pci/cobalt/cobalt-driver.h
@@ -177,7 +177,7 @@ struct cobalt_i2c_regs;
/* Per I2C bus private algo callback data */
struct cobalt_i2c_data {
struct cobalt *cobalt;
- volatile struct cobalt_i2c_regs __iomem *regs;
+ struct cobalt_i2c_regs __iomem *regs;
};
struct pci_consistent_buffer {
diff --git a/drivers/media/pci/cobalt/cobalt-i2c.c b/drivers/media/pci/cobalt/cobalt-i2c.c
index 57b330f..ad16b89 100644
--- a/drivers/media/pci/cobalt/cobalt-i2c.c
+++ b/drivers/media/pci/cobalt/cobalt-i2c.c
@@ -90,25 +90,25 @@ struct cobalt_i2c_regs {
#define I2C_FREQUENCY 400000
#define ALT_CPU_FREQ 83333333
-static volatile struct cobalt_i2c_regs __iomem *
+static struct cobalt_i2c_regs __iomem *
cobalt_i2c_regs(struct cobalt *cobalt, unsigned idx)
{
switch (idx) {
case 0:
default:
- return (volatile struct cobalt_i2c_regs __iomem *)
+ return (struct cobalt_i2c_regs __iomem *)
(cobalt->bar1 + COBALT_I2C_0_BASE);
case 1:
- return (volatile struct cobalt_i2c_regs __iomem *)
+ return (struct cobalt_i2c_regs __iomem *)
(cobalt->bar1 + COBALT_I2C_1_BASE);
case 2:
- return (volatile struct cobalt_i2c_regs __iomem *)
+ return (struct cobalt_i2c_regs __iomem *)
(cobalt->bar1 + COBALT_I2C_2_BASE);
case 3:
- return (volatile struct cobalt_i2c_regs __iomem *)
+ return (struct cobalt_i2c_regs __iomem *)
(cobalt->bar1 + COBALT_I2C_3_BASE);
case 4:
- return (volatile struct cobalt_i2c_regs __iomem *)
+ return (struct cobalt_i2c_regs __iomem *)
(cobalt->bar1 + COBALT_I2C_HSMA_BASE);
}
}
@@ -116,7 +116,7 @@ cobalt_i2c_regs(struct cobalt *cobalt, unsigned idx)
/* Do low-level i2c byte transfer.
* Returns -1 in case of an error or 0 otherwise.
*/
-static int cobalt_tx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
+static int cobalt_tx_bytes(struct cobalt_i2c_regs __iomem *regs,
struct i2c_adapter *adap, bool start, bool stop,
u8 *data, u16 len)
{
@@ -127,7 +127,7 @@ static int cobalt_tx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
for (i = 0; i < len; i++) {
/* Setup data */
- regs->txr_rxr = data[i];
+ iowrite8(data[i], ®s->txr_rxr);
/* Setup command */
if (i == 0 && start != 0) {
@@ -144,16 +144,16 @@ static int cobalt_tx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
}
/* Execute command */
- regs->cr_sr = cmd;
+ iowrite8(cmd, ®s->cr_sr);
/* Wait for transfer to complete (TIP = 0) */
start_time = jiffies;
- status = regs->cr_sr;
+ status = ioread8(®s->cr_sr);
while (status & M00018_SR_BITMAP_TIP_MSK) {
if (time_after(jiffies, start_time + adap->timeout))
return -ETIMEDOUT;
cond_resched();
- status = regs->cr_sr;
+ status = ioread8(®s->cr_sr);
}
/* Verify ACK */
@@ -174,7 +174,7 @@ static int cobalt_tx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
/* Do low-level i2c byte read.
* Returns -1 in case of an error or 0 otherwise.
*/
-static int cobalt_rx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
+static int cobalt_rx_bytes(struct cobalt_i2c_regs __iomem *regs,
struct i2c_adapter *adap, bool start, bool stop,
u8 *data, u16 len)
{
@@ -203,16 +203,16 @@ static int cobalt_rx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
cmd |= M00018_CR_BITMAP_ACK_MSK;
/* Execute command */
- regs->cr_sr = cmd;
+ iowrite8(cmd, ®s->cr_sr);
/* Wait for transfer to complete (TIP = 0) */
start_time = jiffies;
- status = regs->cr_sr;
+ status = ioread8(®s->cr_sr);
while (status & M00018_SR_BITMAP_TIP_MSK) {
if (time_after(jiffies, start_time + adap->timeout))
return -ETIMEDOUT;
cond_resched();
- status = regs->cr_sr;
+ status = ioread8(®s->cr_sr);
}
/* Verify arbitration */
@@ -222,7 +222,7 @@ static int cobalt_rx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
}
/* Store data */
- data[i] = regs->txr_rxr;
+ data[i] = ioread8(®s->txr_rxr);
}
return 0;
}
@@ -231,7 +231,7 @@ static int cobalt_rx_bytes(volatile struct cobalt_i2c_regs __iomem *regs,
* The m00018 stop isn't doing the right thing (wrong timing).
* So instead send a start condition, 8 zeroes and a stop condition.
*/
-static int cobalt_stop(volatile struct cobalt_i2c_regs __iomem *regs,
+static int cobalt_stop(struct cobalt_i2c_regs __iomem *regs,
struct i2c_adapter *adap)
{
u8 data = 0;
@@ -243,7 +243,7 @@ static int cobalt_xfer(struct i2c_adapter *adap,
struct i2c_msg msgs[], int num)
{
struct cobalt_i2c_data *data = adap->algo_data;
- volatile struct cobalt_i2c_regs __iomem *regs = data->regs;
+ struct cobalt_i2c_regs __iomem *regs = data->regs;
struct i2c_msg *pmsg;
unsigned short flags;
int ret = 0;
@@ -327,14 +327,14 @@ int cobalt_i2c_init(struct cobalt *cobalt)
prescale = ((ALT_CPU_FREQ) / (5 * I2C_FREQUENCY)) - 1;
for (i = 0; i < COBALT_NUM_ADAPTERS; i++) {
- volatile struct cobalt_i2c_regs __iomem *regs =
+ struct cobalt_i2c_regs __iomem *regs =
cobalt_i2c_regs(cobalt, i);
struct i2c_adapter *adap = &cobalt->i2c_adap[i];
/* Disable I2C */
- regs->cr_sr = M00018_CTR_BITMAP_EN_MSK;
- regs->ctr = 0;
- regs->cr_sr = 0;
+ iowrite8(M00018_CTR_BITMAP_EN_MSK, ®s->cr_sr);
+ iowrite8(0, ®s->ctr);
+ iowrite8(0, ®s->cr_sr);
start_time = jiffies;
do {
@@ -345,18 +345,18 @@ int cobalt_i2c_init(struct cobalt *cobalt)
}
return -ETIMEDOUT;
}
- status = regs->cr_sr;
+ status = ioread8(®s->cr_sr);
} while (status & M00018_SR_BITMAP_TIP_MSK);
/* Disable I2C */
- regs->ctr = 0;
- regs->cr_sr = 0;
+ iowrite8(0, ®s->ctr);
+ iowrite8(0, ®s->cr_sr);
/* Calculate i2c prescaler */
- regs->prerlo = prescale & 0xff;
- regs->prerhi = (prescale >> 8) & 0xff;
+ iowrite8(prescale & 0xff, ®s->prerlo);
+ iowrite8((prescale >> 8) & 0xff, ®s->prerhi);
/* Enable I2C, interrupts disabled */
- regs->ctr = M00018_CTR_BITMAP_EN_MSK;
+ iowrite8(M00018_CTR_BITMAP_EN_MSK, ®s->ctr);
/* Setup algorithm for adapter */
cobalt->i2c_data[i].cobalt = cobalt;
cobalt->i2c_data[i].regs = regs;
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 09/11] cobalt: fix sparse warnings
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (7 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 08/11] " Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 10/11] cx24120: fix sparse warning Hans Verkuil
2015-05-22 13:59 ` [PATCH 11/11] saa7164: " Hans Verkuil
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/pci/cobalt/cobalt-v4l2.c:189:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:191:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:192:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:193:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:194:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:195:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:196:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:197:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:198:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:199:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:201:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:202:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:203:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:234:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:240:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:246:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:266:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:267:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:271:28: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:275:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:276:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:312:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:313:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:314:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:315:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:317:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:320:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:321:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:321:36: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:324:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:327:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:328:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:328:41: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:329:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:331:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:332:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:334:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:335:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:336:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:362:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:367:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:368:17: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:420:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:421:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:422:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:423:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:516:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:516:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:518:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:518:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:518:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:525:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:525:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:531:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:531:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:531:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:531:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:531:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:531:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:531:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:546:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:546:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:548:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:549:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:550:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:551:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:552:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:553:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:554:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:555:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:556:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:556:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:556:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:563:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:564:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:564:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:569:9: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:595:16: warning: dereference of noderef expression
drivers/media/pci/cobalt/cobalt-v4l2.c:602:9: warning: dereference of noderef expression
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/cobalt/cobalt-v4l2.c | 234 +++++++++++++++++----------------
1 file changed, 124 insertions(+), 110 deletions(-)
diff --git a/drivers/media/pci/cobalt/cobalt-v4l2.c b/drivers/media/pci/cobalt/cobalt-v4l2.c
index 6e8d25b..8b14bec 100644
--- a/drivers/media/pci/cobalt/cobalt-v4l2.c
+++ b/drivers/media/pci/cobalt/cobalt-v4l2.c
@@ -156,7 +156,7 @@ static void cobalt_enable_output(struct cobalt_stream *s)
{
struct cobalt *cobalt = s->cobalt;
struct v4l2_bt_timings *bt = &s->timings.bt;
- volatile struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
+ struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
COBALT_TX_BASE(cobalt);
unsigned fmt = s->pixfmt != V4L2_PIX_FMT_BGR32 ?
M00514_CONTROL_BITMAP_FORMAT_16_BPP_MSK : 0;
@@ -186,30 +186,31 @@ static void cobalt_enable_output(struct cobalt_stream *s)
}
v4l2_subdev_call(s->sd, pad, set_fmt, NULL, &sd_fmt);
- vo->control = 0;
+ iowrite32(0, &vo->control);
/* 1080p60 */
- vo->sync_generator_h_sync_length = bt->hsync;
- vo->sync_generator_h_backporch_length = bt->hbackporch;
- vo->sync_generator_h_active_length = bt->width;
- vo->sync_generator_h_frontporch_length = bt->hfrontporch;
- vo->sync_generator_v_sync_length = bt->vsync;
- vo->sync_generator_v_backporch_length = bt->vbackporch;
- vo->sync_generator_v_active_length = bt->height;
- vo->sync_generator_v_frontporch_length = bt->vfrontporch;
- vo->error_color = 0x9900c1;
-
- vo->control = M00514_CONTROL_BITMAP_SYNC_GENERATOR_LOAD_PARAM_MSK | fmt;
- vo->control = M00514_CONTROL_BITMAP_EVCNT_CLEAR_MSK | fmt;
- vo->control = M00514_CONTROL_BITMAP_SYNC_GENERATOR_ENABLE_MSK |
- M00514_CONTROL_BITMAP_FLOW_CTRL_OUTPUT_ENABLE_MSK |
- fmt;
+ iowrite32(bt->hsync, &vo->sync_generator_h_sync_length);
+ iowrite32(bt->hbackporch, &vo->sync_generator_h_backporch_length);
+ iowrite32(bt->width, &vo->sync_generator_h_active_length);
+ iowrite32(bt->hfrontporch, &vo->sync_generator_h_frontporch_length);
+ iowrite32(bt->vsync, &vo->sync_generator_v_sync_length);
+ iowrite32(bt->vbackporch, &vo->sync_generator_v_backporch_length);
+ iowrite32(bt->height, &vo->sync_generator_v_active_length);
+ iowrite32(bt->vfrontporch, &vo->sync_generator_v_frontporch_length);
+ iowrite32(0x9900c1, &vo->error_color);
+
+ iowrite32(M00514_CONTROL_BITMAP_SYNC_GENERATOR_LOAD_PARAM_MSK | fmt,
+ &vo->control);
+ iowrite32(M00514_CONTROL_BITMAP_EVCNT_CLEAR_MSK | fmt, &vo->control);
+ iowrite32(M00514_CONTROL_BITMAP_SYNC_GENERATOR_ENABLE_MSK |
+ M00514_CONTROL_BITMAP_FLOW_CTRL_OUTPUT_ENABLE_MSK |
+ fmt, &vo->control);
}
static void cobalt_enable_input(struct cobalt_stream *s)
{
struct cobalt *cobalt = s->cobalt;
int ch = (int)s->video_channel;
- volatile struct m00235_fdma_packer_regmap __iomem *packer;
+ struct m00235_fdma_packer_regmap __iomem *packer;
struct v4l2_subdev_format sd_fmt_yuyv = {
.pad = s->pad_source,
.which = V4L2_SUBDEV_FORMAT_ACTIVE,
@@ -231,21 +232,24 @@ static void cobalt_enable_input(struct cobalt_stream *s)
/* Set up FDMA packer */
switch (s->pixfmt) {
case V4L2_PIX_FMT_YUYV:
- packer->control = M00235_CONTROL_BITMAP_ENABLE_MSK |
- (1 << M00235_CONTROL_BITMAP_PACK_FORMAT_OFST);
+ iowrite32(M00235_CONTROL_BITMAP_ENABLE_MSK |
+ (1 << M00235_CONTROL_BITMAP_PACK_FORMAT_OFST),
+ &packer->control);
v4l2_subdev_call(s->sd, pad, set_fmt, NULL,
&sd_fmt_yuyv);
break;
case V4L2_PIX_FMT_RGB24:
- packer->control = M00235_CONTROL_BITMAP_ENABLE_MSK |
- (2 << M00235_CONTROL_BITMAP_PACK_FORMAT_OFST);
+ iowrite32(M00235_CONTROL_BITMAP_ENABLE_MSK |
+ (2 << M00235_CONTROL_BITMAP_PACK_FORMAT_OFST),
+ &packer->control);
v4l2_subdev_call(s->sd, pad, set_fmt, NULL,
&sd_fmt_rgb);
break;
case V4L2_PIX_FMT_BGR32:
- packer->control = M00235_CONTROL_BITMAP_ENABLE_MSK |
- M00235_CONTROL_BITMAP_ENDIAN_FORMAT_MSK |
- (3 << M00235_CONTROL_BITMAP_PACK_FORMAT_OFST);
+ iowrite32(M00235_CONTROL_BITMAP_ENABLE_MSK |
+ M00235_CONTROL_BITMAP_ENDIAN_FORMAT_MSK |
+ (3 << M00235_CONTROL_BITMAP_PACK_FORMAT_OFST),
+ &packer->control);
v4l2_subdev_call(s->sd, pad, set_fmt, NULL,
&sd_fmt_rgb);
break;
@@ -256,24 +260,26 @@ static void cobalt_dma_start_streaming(struct cobalt_stream *s)
{
struct cobalt *cobalt = s->cobalt;
int rx = s->video_channel;
- volatile struct m00460_evcnt_regmap __iomem *evcnt =
+ struct m00460_evcnt_regmap __iomem *evcnt =
COBALT_CVI_EVCNT(cobalt, rx);
struct cobalt_buffer *cb;
unsigned long flags;
spin_lock_irqsave(&s->irqlock, flags);
if (!s->is_output) {
- evcnt->control = M00460_CONTROL_BITMAP_CLEAR_MSK;
- evcnt->control = M00460_CONTROL_BITMAP_ENABLE_MSK;
+ iowrite32(M00460_CONTROL_BITMAP_CLEAR_MSK, &evcnt->control);
+ iowrite32(M00460_CONTROL_BITMAP_ENABLE_MSK, &evcnt->control);
} else {
- volatile struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
+ struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
COBALT_TX_BASE(cobalt);
- u32 ctrl = vo->control;
+ u32 ctrl = ioread32(&vo->control);
ctrl &= ~(M00514_CONTROL_BITMAP_EVCNT_ENABLE_MSK |
M00514_CONTROL_BITMAP_EVCNT_CLEAR_MSK);
- vo->control = ctrl | M00514_CONTROL_BITMAP_EVCNT_CLEAR_MSK;
- vo->control = ctrl | M00514_CONTROL_BITMAP_EVCNT_ENABLE_MSK;
+ iowrite32(ctrl | M00514_CONTROL_BITMAP_EVCNT_CLEAR_MSK,
+ &vo->control);
+ iowrite32(ctrl | M00514_CONTROL_BITMAP_EVCNT_ENABLE_MSK,
+ &vo->control);
}
cb = list_first_entry(&s->bufs, struct cobalt_buffer, list);
omni_sg_dma_start(s, &s->dma_desc_info[cb->vb.v4l2_buf.index]);
@@ -284,16 +290,15 @@ static int cobalt_start_streaming(struct vb2_queue *q, unsigned int count)
{
struct cobalt_stream *s = q->drv_priv;
struct cobalt *cobalt = s->cobalt;
- volatile struct m00233_video_measure_regmap __iomem *vmr;
- volatile struct m00473_freewheel_regmap __iomem *fw;
- volatile struct m00479_clk_loss_detector_regmap __iomem *clkloss;
+ struct m00233_video_measure_regmap __iomem *vmr;
+ struct m00473_freewheel_regmap __iomem *fw;
+ struct m00479_clk_loss_detector_regmap __iomem *clkloss;
int rx = s->video_channel;
- volatile struct m00389_cvi_regmap __iomem *cvi =
- COBALT_CVI(cobalt, rx);
- volatile struct m00460_evcnt_regmap __iomem *evcnt =
- COBALT_CVI_EVCNT(cobalt, rx);
+ struct m00389_cvi_regmap __iomem *cvi = COBALT_CVI(cobalt, rx);
+ struct m00460_evcnt_regmap __iomem *evcnt = COBALT_CVI_EVCNT(cobalt, rx);
struct v4l2_bt_timings *bt = &s->timings.bt;
u64 tot_size;
+ u32 clk_freq;
if (s->is_audio)
goto done;
@@ -309,32 +314,34 @@ static int cobalt_start_streaming(struct vb2_queue *q, unsigned int count)
vmr = COBALT_CVI_VMR(cobalt, rx);
clkloss = COBALT_CVI_CLK_LOSS(cobalt, rx);
- evcnt->control = M00460_CONTROL_BITMAP_CLEAR_MSK;
- evcnt->control = M00460_CONTROL_BITMAP_ENABLE_MSK;
- cvi->frame_width = bt->width;
- cvi->frame_height = bt->height;
+ iowrite32(M00460_CONTROL_BITMAP_CLEAR_MSK, &evcnt->control);
+ iowrite32(M00460_CONTROL_BITMAP_ENABLE_MSK, &evcnt->control);
+ iowrite32(bt->width, &cvi->frame_width);
+ iowrite32(bt->height, &cvi->frame_height);
tot_size = V4L2_DV_BT_FRAME_WIDTH(bt) * V4L2_DV_BT_FRAME_HEIGHT(bt);
- vmr->hsync_timeout_val =
- div_u64((u64)V4L2_DV_BT_FRAME_WIDTH(bt) * COBALT_CLK * 4,
- bt->pixelclock);
- vmr->control = M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK;
- clkloss->ref_clk_cnt_val = fw->clk_freq / 1000000;
+ iowrite32(div_u64((u64)V4L2_DV_BT_FRAME_WIDTH(bt) * COBALT_CLK * 4,
+ bt->pixelclock), &vmr->hsync_timeout_val);
+ iowrite32(M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK, &vmr->control);
+ clk_freq = ioread32(&fw->clk_freq);
+ iowrite32(clk_freq / 1000000, &clkloss->ref_clk_cnt_val);
/* The lower bound for the clock frequency is 0.5% lower as is
* allowed by the spec */
- clkloss->test_clk_cnt_val =
- (((u64)bt->pixelclock * 995) / 1000) / 1000000;
+ iowrite32((((u64)bt->pixelclock * 995) / 1000) / 1000000,
+ &clkloss->test_clk_cnt_val);
/* will be enabled after the first frame has been received */
- fw->active_length = bt->width * bt->height;
- fw->total_length = div_u64((u64)fw->clk_freq * tot_size, bt->pixelclock);
- vmr->irq_triggers = M00233_IRQ_TRIGGERS_BITMAP_VACTIVE_AREA_MSK |
- M00233_IRQ_TRIGGERS_BITMAP_HACTIVE_AREA_MSK;
- cvi->control = 0;
- vmr->control = M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK;
-
- fw->output_color = 0xff;
- clkloss->ctrl = M00479_CTRL_BITMAP_ENABLE_MSK;
- fw->ctrl = M00473_CTRL_BITMAP_ENABLE_MSK |
- M00473_CTRL_BITMAP_FORCE_FREEWHEEL_MODE_MSK;
+ iowrite32(bt->width * bt->height, &fw->active_length);
+ iowrite32(div_u64((u64)clk_freq * tot_size, bt->pixelclock),
+ &fw->total_length);
+ iowrite32(M00233_IRQ_TRIGGERS_BITMAP_VACTIVE_AREA_MSK |
+ M00233_IRQ_TRIGGERS_BITMAP_HACTIVE_AREA_MSK,
+ &vmr->irq_triggers);
+ iowrite32(0, &cvi->control);
+ iowrite32(M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK, &vmr->control);
+
+ iowrite32(0xff, &fw->output_color);
+ iowrite32(M00479_CTRL_BITMAP_ENABLE_MSK, &clkloss->ctrl);
+ iowrite32(M00473_CTRL_BITMAP_ENABLE_MSK |
+ M00473_CTRL_BITMAP_FORCE_FREEWHEEL_MODE_MSK, &fw->ctrl);
s->unstable_frame = true;
s->enable_freewheel = false;
s->enable_cvi = false;
@@ -355,17 +362,17 @@ static void cobalt_dma_stop_streaming(struct cobalt_stream *s)
unsigned long flags;
int timeout_msec = 100;
int rx = s->video_channel;
- volatile struct m00460_evcnt_regmap __iomem *evcnt =
+ struct m00460_evcnt_regmap __iomem *evcnt =
COBALT_CVI_EVCNT(cobalt, rx);
if (!s->is_output) {
- evcnt->control = 0;
+ iowrite32(0, &evcnt->control);
} else if (!s->is_audio) {
- volatile struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
+ struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
COBALT_TX_BASE(cobalt);
- vo->control = M00514_CONTROL_BITMAP_EVCNT_CLEAR_MSK;
- vo->control = 0;
+ iowrite32(M00514_CONTROL_BITMAP_EVCNT_CLEAR_MSK, &vo->control);
+ iowrite32(0, &vo->control);
}
/* Try to stop the DMA engine gracefully */
@@ -393,9 +400,9 @@ static void cobalt_stop_streaming(struct vb2_queue *q)
struct cobalt_stream *s = q->drv_priv;
struct cobalt *cobalt = s->cobalt;
int rx = s->video_channel;
- volatile struct m00233_video_measure_regmap __iomem *vmr;
- volatile struct m00473_freewheel_regmap __iomem *fw;
- volatile struct m00479_clk_loss_detector_regmap __iomem *clkloss;
+ struct m00233_video_measure_regmap __iomem *vmr;
+ struct m00473_freewheel_regmap __iomem *fw;
+ struct m00479_clk_loss_detector_regmap __iomem *clkloss;
struct cobalt_buffer *cb;
struct list_head *p, *safe;
unsigned long flags;
@@ -417,10 +424,10 @@ static void cobalt_stop_streaming(struct vb2_queue *q)
fw = COBALT_CVI_FREEWHEEL(cobalt, rx);
vmr = COBALT_CVI_VMR(cobalt, rx);
clkloss = COBALT_CVI_CLK_LOSS(cobalt, rx);
- vmr->control = 0;
- vmr->control = M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK;
- fw->ctrl = 0;
- clkloss->ctrl = 0;
+ iowrite32(0, &vmr->control);
+ iowrite32(M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK, &vmr->control);
+ iowrite32(0, &fw->ctrl);
+ iowrite32(0, &clkloss->ctrl);
}
static const struct vb2_ops cobalt_qops = {
@@ -500,80 +507,87 @@ static int cobalt_querycap(struct file *file, void *priv_fh,
static void cobalt_video_input_status_show(struct cobalt_stream *s)
{
- volatile struct m00389_cvi_regmap __iomem *cvi;
- volatile struct m00233_video_measure_regmap __iomem *vmr;
- volatile struct m00473_freewheel_regmap __iomem *fw;
- volatile struct m00479_clk_loss_detector_regmap __iomem *clkloss;
- volatile struct m00235_fdma_packer_regmap __iomem *packer;
+ struct m00389_cvi_regmap __iomem *cvi;
+ struct m00233_video_measure_regmap __iomem *vmr;
+ struct m00473_freewheel_regmap __iomem *fw;
+ struct m00479_clk_loss_detector_regmap __iomem *clkloss;
+ struct m00235_fdma_packer_regmap __iomem *packer;
int rx = s->video_channel;
struct cobalt *cobalt = s->cobalt;
+ u32 cvi_ctrl, cvi_stat;
+ u32 vmr_ctrl, vmr_stat;
cvi = COBALT_CVI(cobalt, rx);
vmr = COBALT_CVI_VMR(cobalt, rx);
fw = COBALT_CVI_FREEWHEEL(cobalt, rx);
clkloss = COBALT_CVI_CLK_LOSS(cobalt, rx);
packer = COBALT_CVI_PACKER(cobalt, rx);
+ cvi_ctrl = ioread32(&cvi->control);
+ cvi_stat = ioread32(&cvi->status);
+ vmr_ctrl = ioread32(&vmr->control);
+ vmr_stat = ioread32(&vmr->control);
cobalt_info("rx%d: cvi resolution: %dx%d\n", rx,
- cvi->frame_width, cvi->frame_height);
+ ioread32(&cvi->frame_width), ioread32(&cvi->frame_height));
cobalt_info("rx%d: cvi control: %s%s%s\n", rx,
- (cvi->control & M00389_CONTROL_BITMAP_ENABLE_MSK) ?
+ (cvi_ctrl & M00389_CONTROL_BITMAP_ENABLE_MSK) ?
"enable " : "disable ",
- (cvi->control & M00389_CONTROL_BITMAP_HSYNC_POLARITY_LOW_MSK) ?
+ (cvi_ctrl & M00389_CONTROL_BITMAP_HSYNC_POLARITY_LOW_MSK) ?
"HSync- " : "HSync+ ",
- (cvi->control & M00389_CONTROL_BITMAP_VSYNC_POLARITY_LOW_MSK) ?
+ (cvi_ctrl & M00389_CONTROL_BITMAP_VSYNC_POLARITY_LOW_MSK) ?
"VSync- " : "VSync+ ");
cobalt_info("rx%d: cvi status: %s%s\n", rx,
- (cvi->status & M00389_STATUS_BITMAP_LOCK_MSK) ?
+ (cvi_stat & M00389_STATUS_BITMAP_LOCK_MSK) ?
"lock " : "no-lock ",
- (cvi->status & M00389_STATUS_BITMAP_ERROR_MSK) ?
+ (cvi_stat & M00389_STATUS_BITMAP_ERROR_MSK) ?
"error " : "no-error ");
cobalt_info("rx%d: Measurements: %s%s%s%s%s%s%s\n", rx,
- (vmr->control & M00233_CONTROL_BITMAP_HSYNC_POLARITY_LOW_MSK) ?
+ (vmr_ctrl & M00233_CONTROL_BITMAP_HSYNC_POLARITY_LOW_MSK) ?
"HSync- " : "HSync+ ",
- (vmr->control & M00233_CONTROL_BITMAP_VSYNC_POLARITY_LOW_MSK) ?
+ (vmr_ctrl & M00233_CONTROL_BITMAP_VSYNC_POLARITY_LOW_MSK) ?
"VSync- " : "VSync+ ",
- (vmr->control & M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK) ?
+ (vmr_ctrl & M00233_CONTROL_BITMAP_ENABLE_MEASURE_MSK) ?
"enabled " : "disabled ",
- (vmr->control & M00233_CONTROL_BITMAP_ENABLE_INTERRUPT_MSK) ?
+ (vmr_ctrl & M00233_CONTROL_BITMAP_ENABLE_INTERRUPT_MSK) ?
"irq-enabled " : "irq-disabled ",
- (vmr->control & M00233_CONTROL_BITMAP_UPDATE_ON_HSYNC_MSK) ?
+ (vmr_ctrl & M00233_CONTROL_BITMAP_UPDATE_ON_HSYNC_MSK) ?
"update-on-hsync " : "",
- (vmr->status & M00233_STATUS_BITMAP_HSYNC_TIMEOUT_MSK) ?
+ (vmr_stat & M00233_STATUS_BITMAP_HSYNC_TIMEOUT_MSK) ?
"hsync-timeout " : "",
- (vmr->status & M00233_STATUS_BITMAP_INIT_DONE_MSK) ?
+ (vmr_stat & M00233_STATUS_BITMAP_INIT_DONE_MSK) ?
"init-done" : "");
cobalt_info("rx%d: irq_status: 0x%02x irq_triggers: 0x%02x\n", rx,
- vmr->irq_status & 0xff, vmr->irq_triggers & 0xff);
- cobalt_info("rx%d: vsync: %d\n", rx, vmr->vsync_time);
- cobalt_info("rx%d: vbp: %d\n", rx, vmr->vback_porch);
- cobalt_info("rx%d: vact: %d\n", rx, vmr->vactive_area);
- cobalt_info("rx%d: vfb: %d\n", rx, vmr->vfront_porch);
- cobalt_info("rx%d: hsync: %d\n", rx, vmr->hsync_time);
- cobalt_info("rx%d: hbp: %d\n", rx, vmr->hback_porch);
- cobalt_info("rx%d: hact: %d\n", rx, vmr->hactive_area);
- cobalt_info("rx%d: hfb: %d\n", rx, vmr->hfront_porch);
+ ioread32(&vmr->irq_status) & 0xff,
+ ioread32(&vmr->irq_triggers) & 0xff);
+ cobalt_info("rx%d: vsync: %d\n", rx, ioread32(&vmr->vsync_time));
+ cobalt_info("rx%d: vbp: %d\n", rx, ioread32(&vmr->vback_porch));
+ cobalt_info("rx%d: vact: %d\n", rx, ioread32(&vmr->vactive_area));
+ cobalt_info("rx%d: vfb: %d\n", rx, ioread32(&vmr->vfront_porch));
+ cobalt_info("rx%d: hsync: %d\n", rx, ioread32(&vmr->hsync_time));
+ cobalt_info("rx%d: hbp: %d\n", rx, ioread32(&vmr->hback_porch));
+ cobalt_info("rx%d: hact: %d\n", rx, ioread32(&vmr->hactive_area));
+ cobalt_info("rx%d: hfb: %d\n", rx, ioread32(&vmr->hfront_porch));
cobalt_info("rx%d: Freewheeling: %s%s%s\n", rx,
- (fw->ctrl & M00473_CTRL_BITMAP_ENABLE_MSK) ?
+ (ioread32(&fw->ctrl) & M00473_CTRL_BITMAP_ENABLE_MSK) ?
"enabled " : "disabled ",
- (fw->ctrl & M00473_CTRL_BITMAP_FORCE_FREEWHEEL_MODE_MSK) ?
+ (ioread32(&fw->ctrl) & M00473_CTRL_BITMAP_FORCE_FREEWHEEL_MODE_MSK) ?
"forced " : "",
- (fw->status & M00473_STATUS_BITMAP_FREEWHEEL_MODE_MSK) ?
+ (ioread32(&fw->status) & M00473_STATUS_BITMAP_FREEWHEEL_MODE_MSK) ?
"freewheeling " : "video-passthrough ");
- vmr->irq_status = 0xff;
+ iowrite32(0xff, &vmr->irq_status);
cobalt_info("rx%d: Clock Loss Detection: %s%s\n", rx,
- (clkloss->ctrl & M00479_CTRL_BITMAP_ENABLE_MSK) ?
+ (ioread32(&clkloss->ctrl) & M00479_CTRL_BITMAP_ENABLE_MSK) ?
"enabled " : "disabled ",
- (clkloss->status & M00479_STATUS_BITMAP_CLOCK_MISSING_MSK) ?
+ (ioread32(&clkloss->status) & M00479_STATUS_BITMAP_CLOCK_MISSING_MSK) ?
"clock-missing " : "found-clock ");
- cobalt_info("rx%d: Packer: %x\n", rx, packer->control);
+ cobalt_info("rx%d: Packer: %x\n", rx, ioread32(&packer->control));
}
static int cobalt_log_status(struct file *file, void *priv_fh)
{
struct cobalt_stream *s = video_drvdata(file);
struct cobalt *cobalt = s->cobalt;
- volatile struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
+ struct m00514_syncgen_flow_evcnt_regmap __iomem *vo =
COBALT_TX_BASE(cobalt);
u8 stat;
@@ -592,14 +606,14 @@ static int cobalt_log_status(struct file *file, void *priv_fh)
return 0;
}
- stat = vo->rd_status;
+ stat = ioread32(&vo->rd_status);
cobalt_info("tx: status: %s%s\n",
(stat & M00514_RD_STATUS_BITMAP_FLOW_CTRL_NO_DATA_ERROR_MSK) ?
"no_data " : "",
(stat & M00514_RD_STATUS_BITMAP_READY_BUFFER_FULL_MSK) ?
"ready_buffer_full " : "");
- cobalt_info("tx: evcnt: %d\n", vo->rd_evcnt_count);
+ cobalt_info("tx: evcnt: %d\n", ioread32(&vo->rd_evcnt_count));
return 0;
}
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 10/11] cx24120: fix sparse warning
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (8 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 09/11] " Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 13:59 ` [PATCH 11/11] saa7164: " Hans Verkuil
10 siblings, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/dvb-frontends/cx24120.c:837:6: warning: symbol 'cx24120_calculate_ber_window' was not declared. Should it be static?
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/dvb-frontends/cx24120.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/dvb-frontends/cx24120.c b/drivers/media/dvb-frontends/cx24120.c
index a14d0f1..6880cd2 100644
--- a/drivers/media/dvb-frontends/cx24120.c
+++ b/drivers/media/dvb-frontends/cx24120.c
@@ -834,7 +834,7 @@ static int cx24120_get_fec(struct dvb_frontend *fe)
}
/* Calculate ber window time */
-void cx24120_calculate_ber_window(struct cx24120_state *state, u32 rate)
+static void cx24120_calculate_ber_window(struct cx24120_state *state, u32 rate)
{
struct dvb_frontend *fe = &state->frontend;
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 11/11] saa7164: fix sparse warning
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
` (9 preceding siblings ...)
2015-05-22 13:59 ` [PATCH 10/11] cx24120: fix sparse warning Hans Verkuil
@ 2015-05-22 13:59 ` Hans Verkuil
2015-05-22 14:06 ` [PATCH 12/11] adv7604/cobalt: missing GPIOLIB dependency Hans Verkuil
2015-05-22 14:21 ` [PATCH 11/11] saa7164: fix sparse warning Steven Toth
10 siblings, 2 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 13:59 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
From: Hans Verkuil <hans.verkuil@cisco.com>
drivers/media/pci/saa7164/saa7164-i2c.c:45:33: warning: Using plain integer as NULL pointer
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/pci/saa7164/saa7164-i2c.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/pci/saa7164/saa7164-i2c.c b/drivers/media/pci/saa7164/saa7164-i2c.c
index 6ea9d4f..0342d84 100644
--- a/drivers/media/pci/saa7164/saa7164-i2c.c
+++ b/drivers/media/pci/saa7164/saa7164-i2c.c
@@ -42,7 +42,7 @@ static int i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, int num)
retval = saa7164_api_i2c_read(bus,
msgs[i].addr,
0 /* reglen */,
- 0 /* reg */, msgs[i].len, msgs[i].buf);
+ NULL /* reg */, msgs[i].len, msgs[i].buf);
} else if (i + 1 < num && (msgs[i + 1].flags & I2C_M_RD) &&
msgs[i].addr == msgs[i + 1].addr) {
/* write then read from same address */
--
2.1.4
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 12/11] adv7604/cobalt: missing GPIOLIB dependency
2015-05-22 13:59 ` [PATCH 11/11] saa7164: " Hans Verkuil
@ 2015-05-22 14:06 ` Hans Verkuil
2015-05-22 14:21 ` [PATCH 11/11] saa7164: fix sparse warning Steven Toth
1 sibling, 0 replies; 14+ messages in thread
From: Hans Verkuil @ 2015-05-22 14:06 UTC (permalink / raw)
To: linux-media; +Cc: Hans Verkuil
The adv7604 driver depends on GPIOLIB, and therefore cobalt depends
on it as well.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
drivers/media/i2c/Kconfig | 2 +-
drivers/media/pci/cobalt/Kconfig | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
index 6f30ea7..36f5563 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -196,7 +196,7 @@ config VIDEO_ADV7183
config VIDEO_ADV7604
tristate "Analog Devices ADV7604 decoder"
- depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
+ depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && GPIOLIB
---help---
Support for the Analog Devices ADV7604 video decoder.
diff --git a/drivers/media/pci/cobalt/Kconfig b/drivers/media/pci/cobalt/Kconfig
index e3c03e9..3be1b2c 100644
--- a/drivers/media/pci/cobalt/Kconfig
+++ b/drivers/media/pci/cobalt/Kconfig
@@ -1,7 +1,7 @@
config VIDEO_COBALT
tristate "Cisco Cobalt support"
depends on VIDEO_V4L2 && I2C && MEDIA_CONTROLLER
- depends on PCI_MSI && MTD_COMPLEX_MAPPINGS
+ depends on PCI_MSI && MTD_COMPLEX_MAPPINGS && GPIOLIB
select I2C_ALGOBIT
select VIDEO_ADV7604
select VIDEO_ADV7511
--
2.1.4
On 05/22/2015 03:59 PM, Hans Verkuil wrote:
> From: Hans Verkuil <hans.verkuil@cisco.com>
>
> drivers/media/pci/saa7164/saa7164-i2c.c:45:33: warning: Using plain integer as NULL pointer
>
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> ---
> drivers/media/pci/saa7164/saa7164-i2c.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/pci/saa7164/saa7164-i2c.c b/drivers/media/pci/saa7164/saa7164-i2c.c
> index 6ea9d4f..0342d84 100644
> --- a/drivers/media/pci/saa7164/saa7164-i2c.c
> +++ b/drivers/media/pci/saa7164/saa7164-i2c.c
> @@ -42,7 +42,7 @@ static int i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, int num)
> retval = saa7164_api_i2c_read(bus,
> msgs[i].addr,
> 0 /* reglen */,
> - 0 /* reg */, msgs[i].len, msgs[i].buf);
> + NULL /* reg */, msgs[i].len, msgs[i].buf);
> } else if (i + 1 < num && (msgs[i + 1].flags & I2C_M_RD) &&
> msgs[i].addr == msgs[i + 1].addr) {
> /* write then read from same address */
>
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 11/11] saa7164: fix sparse warning
2015-05-22 13:59 ` [PATCH 11/11] saa7164: " Hans Verkuil
2015-05-22 14:06 ` [PATCH 12/11] adv7604/cobalt: missing GPIOLIB dependency Hans Verkuil
@ 2015-05-22 14:21 ` Steven Toth
1 sibling, 0 replies; 14+ messages in thread
From: Steven Toth @ 2015-05-22 14:21 UTC (permalink / raw)
To: Hans Verkuil; +Cc: Linux-Media, Hans Verkuil
On Fri, May 22, 2015 at 9:59 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> From: Hans Verkuil <hans.verkuil@cisco.com>
>
> drivers/media/pci/saa7164/saa7164-i2c.c:45:33: warning: Using plain integer as NULL pointer
>
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> ---
> drivers/media/pci/saa7164/saa7164-i2c.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/pci/saa7164/saa7164-i2c.c b/drivers/media/pci/saa7164/saa7164-i2c.c
> index 6ea9d4f..0342d84 100644
> --- a/drivers/media/pci/saa7164/saa7164-i2c.c
> +++ b/drivers/media/pci/saa7164/saa7164-i2c.c
> @@ -42,7 +42,7 @@ static int i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, int num)
> retval = saa7164_api_i2c_read(bus,
> msgs[i].addr,
> 0 /* reglen */,
> - 0 /* reg */, msgs[i].len, msgs[i].buf);
> + NULL /* reg */, msgs[i].len, msgs[i].buf);
> } else if (i + 1 < num && (msgs[i + 1].flags & I2C_M_RD) &&
> msgs[i].addr == msgs[i + 1].addr) {
> /* write then read from same address */
Reviewed-By: Steven Toth <stoth@kernellabs.com>
--
Steven Toth - Kernel Labs
http://www.kernellabs.com
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2015-05-22 14:21 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-22 13:59 [PATCH 00/11] cobalt bug fixes, fixes for compiler/sparse warnings Hans Verkuil
2015-05-22 13:59 ` [PATCH 01/11] cobalt: fix irqs used for the adv7511 transmitter Hans Verkuil
2015-05-22 13:59 ` [PATCH 02/11] cobalt: fix 64-bit division link error Hans Verkuil
2015-05-22 13:59 ` [PATCH 03/11] cobalt: fix compiler warnings on 32 bit OSes Hans Verkuil
2015-05-22 13:59 ` [PATCH 04/11] e4000: fix compiler warning Hans Verkuil
2015-05-22 13:59 ` [PATCH 05/11] cobalt: fix sparse warnings Hans Verkuil
2015-05-22 13:59 ` [PATCH 06/11] " Hans Verkuil
2015-05-22 13:59 ` [PATCH 07/11] " Hans Verkuil
2015-05-22 13:59 ` [PATCH 08/11] " Hans Verkuil
2015-05-22 13:59 ` [PATCH 09/11] " Hans Verkuil
2015-05-22 13:59 ` [PATCH 10/11] cx24120: fix sparse warning Hans Verkuil
2015-05-22 13:59 ` [PATCH 11/11] saa7164: " Hans Verkuil
2015-05-22 14:06 ` [PATCH 12/11] adv7604/cobalt: missing GPIOLIB dependency Hans Verkuil
2015-05-22 14:21 ` [PATCH 11/11] saa7164: fix sparse warning Steven Toth
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.