Skip to content

Commit 04000a0

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 41dc359 commit 04000a0

1 file changed

Lines changed: 30 additions & 24 deletions

File tree

audioreach-driver/q6apm_audio_pkt.c

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ do { \
5757
#define MODULE_NAME "audio-pkt"
5858
#define MINOR_NUMBER_COUNT 1
5959
#define AUDPKT_DRIVER_NAME "aud_pasthru_adsp"
60-
#define APM_AUDIO_DRV_NAME "q6apm-audio-pkt"
6160

6261
struct q6apm_audio_pkt {
6362
struct device *dev;
@@ -67,10 +66,8 @@ struct q6apm_audio_pkt {
6766
//wait_queue_head_t wait;
6867
struct gpr_ibasic_rsp_result_t result;
6968

70-
struct mutex cmd_lock;
7169
uint32_t state;
7270

73-
7471
struct cdev cdev;
7572
struct mutex lock;
7673
spinlock_t queue_lock;
@@ -322,7 +319,6 @@ static ssize_t audio_pkt_read(struct file *file, char __user *buf,
322319
unsigned long flags;
323320
struct sk_buff *skb;
324321
int use;
325-
uint32_t *temp;
326322

327323
if (!audpkt_dev) {
328324
AUDIO_PKT_ERR("invalid device handle\n");
@@ -353,7 +349,6 @@ static ssize_t audio_pkt_read(struct file *file, char __user *buf,
353349
use = min_t(size_t, count, skb->len);
354350
if (copy_to_user(buf, skb->data, use))
355351
use = -EFAULT;
356-
temp = (uint32_t *) skb->data;
357352
kfree_skb(skb);
358353

359354
return use;
@@ -424,6 +419,7 @@ static ssize_t audio_pkt_write(struct file *file, const char __user *buf,
424419
ret = audpkt_chk_and_update_physical_addr((struct audio_gpr_pkt *) audpkt_hdr);
425420
if (ret < 0) {
426421
AUDIO_PKT_ERR("Update Physical Address Failed -%d\n", ret);
422+
kfree(kbuf);
427423
return ret;
428424
}
429425
}
@@ -459,6 +455,8 @@ static ssize_t audio_pkt_write(struct file *file, const char __user *buf,
459455
ret = gpr_send_pkt(audpkt_dev->adev, (struct gpr_pkt *) kbuf);
460456
if (ret < 0) {
461457
AUDIO_PKT_ERR("APR Send Packet Failed ret -%d\n", ret);
458+
mutex_unlock(&audpkt_dev->lock);
459+
kfree(kbuf);
462460
return ret;
463461
}
464462
mutex_unlock(&audpkt_dev->lock);
@@ -483,7 +481,6 @@ static unsigned int audio_pkt_poll(struct file *file, poll_table *wait)
483481
unsigned int mask = 0;
484482
unsigned long flags;
485483

486-
audpkt_dev = file->private_data;
487484
if (!audpkt_dev) {
488485
AUDIO_PKT_ERR("invalid device handle\n");
489486
return POLLERR;
@@ -587,7 +584,7 @@ static int q6apm_audio_pkt_probe(gpr_device_t *adev)
587584
err_device:
588585
class_destroy(apm->audio_pkt_class);
589586
err_class:
590-
unregister_chrdev_region(MAJOR(apm->audio_pkt_major),
587+
unregister_chrdev_region(apm->audio_pkt_major,
591588
MINOR_NUMBER_COUNT);
592589
err_chrdev:
593590
return ret;
@@ -600,13 +597,16 @@ static int q6apm_audio_pkt_callback(struct gpr_resp_pkt *data, void *priv, int o
600597
struct gpr_ibasic_rsp_result_t *result;
601598
struct gpr_hdr *hdr = &data->hdr;
602599
struct device *dev = &gdev->dev;
603-
uint8_t *pkt = NULL;
604600
uint16_t hdr_size, pkt_size;
605601
unsigned long flags;
606602
struct sk_buff *skb;
607603
int ret;
608604
struct gpr_port_map *audpkt_port_map;
609605

606+
if (!apm) {
607+
dev_dbg(dev, "callback with NULL drvdata\n");
608+
return -ENODEV;
609+
}
610610

611611
hdr_size = hdr->hdr_size * 4;
612612
pkt_size = hdr->pkt_size;
@@ -624,20 +624,13 @@ static int q6apm_audio_pkt_callback(struct gpr_resp_pkt *data, void *priv, int o
624624
}
625625
mutex_unlock(&apm->audpkt_port_lock);
626626

627-
pkt = kmalloc(pkt_size, GFP_KERNEL);
628-
if (!pkt)
629-
return -ENOMEM;
630-
631-
memcpy(pkt, (uint8_t *)data, hdr_size);
632-
memcpy(pkt + hdr_size, (uint8_t *)data->payload, pkt_size - hdr_size);
633-
634627
skb = alloc_skb(pkt_size, GFP_ATOMIC);
635628
if (!skb)
636629
return -ENOMEM;
637630

638-
skb_put_data(skb, (void *)pkt, pkt_size);
631+
skb_put_data(skb, (uint8_t *)data, hdr_size);
632+
skb_put_data(skb, (uint8_t *)data->payload, pkt_size - hdr_size);
639633

640-
kfree(pkt);
641634
spin_lock_irqsave(&apm->queue_lock, flags);
642635
skb_queue_tail(&apm->queue, skb);
643636
spin_unlock_irqrestore(&apm->queue_lock, flags);
@@ -646,19 +639,32 @@ static int q6apm_audio_pkt_callback(struct gpr_resp_pkt *data, void *priv, int o
646639
/* wake up any blocking processes, waiting for new data */
647640
wake_up_interruptible(&apm->readq);
648641
if(hdr->opcode == APM_CMD_RSP_GET_SPF_STATE) {
649-
result = data->payload;
650-
apm->result.opcode = hdr->opcode;
651-
apm->result.status = 0;
652-
/* First word of result it state */
653-
apm->state = hdr->opcode;
654-
}
642+
result = data->payload;
643+
apm->result.opcode = hdr->opcode;
644+
apm->result.status = 0;
645+
/* First word of result it state */
646+
apm->state = hdr->opcode;
647+
}
655648

656649
return 0;
657650
}
658651

659652
static void q6apm_audio_pkt_remove(gpr_device_t *adev)
660653
{
661-
of_platform_depopulate(&adev->dev);
654+
struct device *dev = &adev->dev;
655+
struct q6apm_audio_pkt *apm = dev_get_drvdata(dev);
656+
657+
of_platform_depopulate(dev);
658+
659+
if (!apm)
660+
return;
661+
662+
cdev_del(&apm->cdev);
663+
device_destroy(apm->audio_pkt_class, apm->audio_pkt_major);
664+
class_destroy(apm->audio_pkt_class);
665+
unregister_chrdev_region(apm->audio_pkt_major, MINOR_NUMBER_COUNT);
666+
667+
dev_set_drvdata(dev, NULL);
662668
}
663669

664670
#ifdef CONFIG_OF

0 commit comments

Comments
 (0)