Skip to content

Commit 842ad9f

Browse files
committed
audioreach-driver: Audio pkt driver code clean up
Perform general code cleanup in the Audio Packet driver. This includes removing redundant or unused code, improving formatting and indentation, and addressing minor build and style warnings. These changes have been tested and verified on QCS6490-RB3gen2. Signed-off-by: Ravi Hothi <ravi.hothi@oss.qualcomm.com>
1 parent c2351ad commit 842ad9f

1 file changed

Lines changed: 32 additions & 25 deletions

File tree

audioreach-driver/q6apm_audio_pkt.c

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ do { \
5454
#define MODULE_NAME "audio-pkt"
5555
#define MINOR_NUMBER_COUNT 1
5656
#define AUDPKT_DRIVER_NAME "aud_pasthru_adsp"
57-
#define APM_AUDIO_DRV_NAME "q6apm-audio-pkt"
5857

5958
struct q6apm_audio_pkt {
6059
struct device *dev;
@@ -64,10 +63,8 @@ struct q6apm_audio_pkt {
6463
//wait_queue_head_t wait;
6564
struct gpr_ibasic_rsp_result_t result;
6665

67-
struct mutex cmd_lock;
6866
uint32_t state;
6967

70-
7168
struct cdev cdev;
7269
struct mutex lock;
7370
spinlock_t queue_lock;
@@ -319,7 +316,6 @@ static ssize_t audio_pkt_read(struct file *file, char __user *buf,
319316
unsigned long flags;
320317
struct sk_buff *skb;
321318
int use;
322-
uint32_t *temp;
323319

324320
if (!audpkt_dev) {
325321
AUDIO_PKT_ERR("invalid device handle\n");
@@ -350,7 +346,6 @@ static ssize_t audio_pkt_read(struct file *file, char __user *buf,
350346
use = min_t(size_t, count, skb->len);
351347
if (copy_to_user(buf, skb->data, use))
352348
use = -EFAULT;
353-
temp = (uint32_t *) skb->data;
354349
kfree_skb(skb);
355350

356351
return use;
@@ -421,6 +416,7 @@ static ssize_t audio_pkt_write(struct file *file, const char __user *buf,
421416
ret = audpkt_chk_and_update_physical_addr((struct audio_gpr_pkt *) audpkt_hdr);
422417
if (ret < 0) {
423418
AUDIO_PKT_ERR("Update Physical Address Failed -%d\n", ret);
419+
kfree(kbuf);
424420
return ret;
425421
}
426422
}
@@ -456,6 +452,8 @@ static ssize_t audio_pkt_write(struct file *file, const char __user *buf,
456452
ret = gpr_send_pkt(audpkt_dev->adev, (struct gpr_pkt *) kbuf);
457453
if (ret < 0) {
458454
AUDIO_PKT_ERR("APR Send Packet Failed ret -%d\n", ret);
455+
mutex_unlock(&audpkt_dev->lock);
456+
kfree(kbuf);
459457
return ret;
460458
}
461459
mutex_unlock(&audpkt_dev->lock);
@@ -480,7 +478,6 @@ static unsigned int audio_pkt_poll(struct file *file, poll_table *wait)
480478
unsigned int mask = 0;
481479
unsigned long flags;
482480

483-
audpkt_dev = file->private_data;
484481
if (!audpkt_dev) {
485482
AUDIO_PKT_ERR("invalid device handle\n");
486483
return POLLERR;
@@ -584,7 +581,7 @@ static int q6apm_audio_pkt_probe(gpr_device_t *adev)
584581
err_device:
585582
class_destroy(apm->audio_pkt_class);
586583
err_class:
587-
unregister_chrdev_region(MAJOR(apm->audio_pkt_major),
584+
unregister_chrdev_region(apm->audio_pkt_major,
588585
MINOR_NUMBER_COUNT);
589586
err_chrdev:
590587
return ret;
@@ -596,13 +593,17 @@ static int q6apm_audio_pkt_callback(struct gpr_resp_pkt *data, void *priv, int o
596593
struct q6apm_audio_pkt *apm = dev_get_drvdata(&gdev->dev);
597594
struct gpr_ibasic_rsp_result_t *result;
598595
struct gpr_hdr *hdr = &data->hdr;
599-
uint8_t *pkt = NULL;
596+
struct device *dev = &gdev->dev;
600597
uint16_t hdr_size, pkt_size;
601598
unsigned long flags;
602599
struct sk_buff *skb;
603600
int ret;
604601
struct gpr_port_map *audpkt_port_map;
605602

603+
if (!apm) {
604+
dev_dbg(dev, "callback with NULL drvdata\n");
605+
return -ENODEV;
606+
}
606607

607608
hdr_size = hdr->hdr_size * 4;
608609
pkt_size = hdr->pkt_size;
@@ -616,24 +617,17 @@ static int q6apm_audio_pkt_callback(struct gpr_resp_pkt *data, void *priv, int o
616617
idr_remove(&apm->audpkt_port_idr, hdr->token);
617618
kfree(audpkt_port_map);
618619
} else {
619-
AUDIO_PKT_ERR("Token=%u not found\n", hdr->token);
620+
dev_dbg(dev, "Token=%u not found\n", hdr->token);
620621
}
621622
mutex_unlock(&apm->audpkt_port_lock);
622623

623-
pkt = kmalloc(pkt_size, GFP_KERNEL);
624-
if (!pkt)
625-
return -ENOMEM;
626-
627-
memcpy(pkt, (uint8_t *)data, hdr_size);
628-
memcpy(pkt + hdr_size, (uint8_t *)data->payload, pkt_size - hdr_size);
629-
630624
skb = alloc_skb(pkt_size, GFP_ATOMIC);
631625
if (!skb)
632626
return -ENOMEM;
633627

634-
skb_put_data(skb, (void *)pkt, pkt_size);
628+
skb_put_data(skb, (uint8_t *)data, hdr_size);
629+
skb_put_data(skb, (uint8_t *)data->payload, pkt_size - hdr_size);
635630

636-
kfree(pkt);
637631
spin_lock_irqsave(&apm->queue_lock, flags);
638632
skb_queue_tail(&apm->queue, skb);
639633
spin_unlock_irqrestore(&apm->queue_lock, flags);
@@ -642,19 +636,32 @@ static int q6apm_audio_pkt_callback(struct gpr_resp_pkt *data, void *priv, int o
642636
/* wake up any blocking processes, waiting for new data */
643637
wake_up_interruptible(&apm->readq);
644638
if(hdr->opcode == APM_CMD_RSP_GET_SPF_STATE) {
645-
result = data->payload;
646-
apm->result.opcode = hdr->opcode;
647-
apm->result.status = 0;
648-
/* First word of result it state */
649-
apm->state = hdr->opcode;
650-
}
639+
result = data->payload;
640+
apm->result.opcode = hdr->opcode;
641+
apm->result.status = 0;
642+
/* First word of result it state */
643+
apm->state = hdr->opcode;
644+
}
651645

652646
return 0;
653647
}
654648

655649
static void q6apm_audio_pkt_remove(gpr_device_t *adev)
656650
{
657-
of_platform_depopulate(&adev->dev);
651+
struct device *dev = &adev->dev;
652+
struct q6apm_audio_pkt *apm = dev_get_drvdata(dev);
653+
654+
of_platform_depopulate(dev);
655+
656+
if (!apm)
657+
return;
658+
659+
cdev_del(&apm->cdev);
660+
device_destroy(apm->audio_pkt_class, apm->audio_pkt_major);
661+
class_destroy(apm->audio_pkt_class);
662+
unregister_chrdev_region(apm->audio_pkt_major, MINOR_NUMBER_COUNT);
663+
664+
dev_set_drvdata(dev, NULL);
658665
}
659666

660667
#ifdef CONFIG_OF

0 commit comments

Comments
 (0)