[PATCH 2/2] staging: goldfish: add a blank line into struct goldfish_audio

2018-07-11 Thread rkir
From: Roman Kiryanov 

To separate data members and the comment for better readability.

Signed-off-by: Roman Kiryanov 
---
 drivers/staging/goldfish/goldfish_audio.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/goldfish/goldfish_audio.c 
b/drivers/staging/goldfish/goldfish_audio.c
index 1d80e3243297..3a75df1d2a0a 100644
--- a/drivers/staging/goldfish/goldfish_audio.c
+++ b/drivers/staging/goldfish/goldfish_audio.c
@@ -38,6 +38,7 @@ MODULE_VERSION("1.0");
 struct goldfish_audio {
char __iomem *reg_base;
int irq;
+
/* lock protects access to buffer_status and to device registers */
spinlock_t lock;
wait_queue_head_t wait;
-- 
2.18.0.203.gfac676dfb9-goog

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 4/4] staging: goldfish: Clear audio read buffer status after each read

2018-06-01 Thread rkir
From: Joshua Lang 

The buffer_status field is interrupt updated. After every read request,
the buffer_status read field should be reset so that on the next loop
iteration we don't read a stale value and read data before the
device is ready.

Signed-off-by: Joshua Lang 
Signed-off-by: Roman Kiryanov 
---
 drivers/staging/goldfish/goldfish_audio.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/staging/goldfish/goldfish_audio.c 
b/drivers/staging/goldfish/goldfish_audio.c
index 87ebeb770e87..80ccf7ab68ea 100644
--- a/drivers/staging/goldfish/goldfish_audio.c
+++ b/drivers/staging/goldfish/goldfish_audio.c
@@ -131,6 +131,7 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
   size_t count, loff_t *pos)
 {
struct goldfish_audio *data = fp->private_data;
+   unsigned long irq_flags;
int length;
int result = 0;
 
@@ -144,6 +145,10 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
wait_event_interruptible(data->wait, data->buffer_status &
 AUDIO_INT_READ_BUFFER_FULL);
 
+   spin_lock_irqsave(&data->lock, irq_flags);
+   data->buffer_status &= ~AUDIO_INT_READ_BUFFER_FULL;
+   spin_unlock_irqrestore(&data->lock, irq_flags);
+
length = audio_read(data, AUDIO_READ_BUFFER_AVAILABLE);
 
/* copy data to user space */
-- 
2.17.0.921.gf22659ad46-goog

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 4/4] staging: goldfish: Clear audio read buffer status after each read

2018-06-01 Thread rkir
From: Joshua Lang 

The buffer_status field is interrupt updated. After every read request,
the buffer_status read field should be reset so that on the next loop
iteration we don't read a stale value and read data before the
device is ready.

Signed-off-by: “Joshua Lang” 
Signed-off-by: Roman Kiryanov 
---
 drivers/staging/goldfish/goldfish_audio.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/staging/goldfish/goldfish_audio.c 
b/drivers/staging/goldfish/goldfish_audio.c
index 87ebeb770e87..80ccf7ab68ea 100644
--- a/drivers/staging/goldfish/goldfish_audio.c
+++ b/drivers/staging/goldfish/goldfish_audio.c
@@ -131,6 +131,7 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
   size_t count, loff_t *pos)
 {
struct goldfish_audio *data = fp->private_data;
+   unsigned long irq_flags;
int length;
int result = 0;
 
@@ -144,6 +145,10 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
wait_event_interruptible(data->wait, data->buffer_status &
 AUDIO_INT_READ_BUFFER_FULL);
 
+   spin_lock_irqsave(&data->lock, irq_flags);
+   data->buffer_status &= ~AUDIO_INT_READ_BUFFER_FULL;
+   spin_unlock_irqrestore(&data->lock, irq_flags);
+
length = audio_read(data, AUDIO_READ_BUFFER_AVAILABLE);
 
/* copy data to user space */
-- 
2.17.0.921.gf22659ad46-goog

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 4/4] staging: goldfish: Clear audio read buffer status after each read

2018-06-01 Thread rkir
From: Joshua Lang 

The buffer_status field is interrupt updated. After every read request,
the buffer_status read field should be reset so that on the next loop
iteration we don't read a stale value and read data before the
device is ready.

Signed-off-by: “Joshua Lang” 
---
 drivers/staging/goldfish/goldfish_audio.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/staging/goldfish/goldfish_audio.c 
b/drivers/staging/goldfish/goldfish_audio.c
index 87ebeb770e87..80ccf7ab68ea 100644
--- a/drivers/staging/goldfish/goldfish_audio.c
+++ b/drivers/staging/goldfish/goldfish_audio.c
@@ -131,6 +131,7 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
   size_t count, loff_t *pos)
 {
struct goldfish_audio *data = fp->private_data;
+   unsigned long irq_flags;
int length;
int result = 0;
 
@@ -144,6 +145,10 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
wait_event_interruptible(data->wait, data->buffer_status &
 AUDIO_INT_READ_BUFFER_FULL);
 
+   spin_lock_irqsave(&data->lock, irq_flags);
+   data->buffer_status &= ~AUDIO_INT_READ_BUFFER_FULL;
+   spin_unlock_irqrestore(&data->lock, irq_flags);
+
length = audio_read(data, AUDIO_READ_BUFFER_AVAILABLE);
 
/* copy data to user space */
-- 
2.17.0.921.gf22659ad46-goog

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 2/4] staging: goldfish: Fix checkpatch warnings in goldfish_audio.c

2018-06-01 Thread rkir
From: Roman Kiryanov 

Address issues pointed by checkpatch.pl

Signed-off-by: Roman Kiryanov 
---
 drivers/staging/goldfish/goldfish_audio.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/goldfish/goldfish_audio.c 
b/drivers/staging/goldfish/goldfish_audio.c
index 3a4715cd362b..2bec3205326e 100644
--- a/drivers/staging/goldfish/goldfish_audio.c
+++ b/drivers/staging/goldfish/goldfish_audio.c
@@ -308,8 +308,11 @@ static int goldfish_audio_probe(struct platform_device 
*pdev)
dev_err(&pdev->dev, "platform_get_irq failed\n");
return -ENODEV;
}
-   data->buffer_virt = dmam_alloc_coherent(&pdev->dev,
-   COMBINED_BUFFER_SIZE, &buf_addr, GFP_KERNEL);
+   data->buffer_virt =
+   dmam_alloc_coherent(&pdev->dev,
+   COMBINED_BUFFER_SIZE,
+   &buf_addr,
+   GFP_KERNEL);
if (!data->buffer_virt) {
dev_err(&pdev->dev, "allocate buffer failed\n");
return -ENOMEM;
-- 
2.17.0.921.gf22659ad46-goog

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 3/3] Clear audio read buffer status after each read

2018-05-31 Thread rkir
From: Joshua Lang 

The buffer_status field is interrupt updated. After every read request,
the buffer_status read field should be reset so that on the next loop
iteration we don't read a stale value and read data before the
device is ready.

Signed-off-by: “Joshua Lang” 
---
 drivers/staging/goldfish/goldfish_audio.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/staging/goldfish/goldfish_audio.c 
b/drivers/staging/goldfish/goldfish_audio.c
index f5b1e5169069..3210202e0a32 100644
--- a/drivers/staging/goldfish/goldfish_audio.c
+++ b/drivers/staging/goldfish/goldfish_audio.c
@@ -118,6 +118,7 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
   size_t count, loff_t *pos)
 {
struct goldfish_audio *data = fp->private_data;
+   unsigned long irq_flags;
int length;
int result = 0;
 
@@ -131,6 +132,10 @@ static ssize_t goldfish_audio_read(struct file *fp, char 
__user *buf,
wait_event_interruptible(data->wait, data->buffer_status &
 AUDIO_INT_READ_BUFFER_FULL);
 
+   spin_lock_irqsave(&data->lock, irq_flags);
+   data->buffer_status &= ~AUDIO_INT_READ_BUFFER_FULL;
+   spin_unlock_irqrestore(&data->lock, irq_flags);
+
length = AUDIO_READ(data, AUDIO_READ_BUFFER_AVAILABLE);
 
/* copy data to user space */
-- 
2.17.0.921.gf22659ad46-goog

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel