Skip to content

Commit 4648b8a

Browse files
Evoke Zhangakiernan
authored andcommitted
vpu: driver defect clean up
PD#150097: driver defect clean up: torvalds#35 torvalds#39 torvalds#54 torvalds#55 torvalds#83 torvalds#94 torvalds#96 torvalds#102 torvalds#649 torvalds#690 torvalds#695 Change-Id: I1b9a9384100f4e39da246c5242de8e506671454d Signed-off-by: Evoke Zhang <[email protected]>
1 parent cc00bb0 commit 4648b8a

File tree

2 files changed

+50
-49
lines changed

2 files changed

+50
-49
lines changed

drivers/amlogic/media/common/vpu/vpu.c

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ static ssize_t vpu_debug_help(struct class *class,
521521
static ssize_t vpu_clk_debug(struct class *class, struct class_attribute *attr,
522522
const char *buf, size_t count)
523523
{
524-
unsigned int ret;
524+
unsigned int ret = 0;
525525
unsigned int tmp[2], n;
526526
unsigned int fclk_type;
527527

@@ -533,54 +533,60 @@ static ssize_t vpu_clk_debug(struct class *class, struct class_attribute *attr,
533533
case 's': /* set */
534534
tmp[0] = 4;
535535
ret = sscanf(buf, "set %u", &tmp[0]);
536-
if (tmp[0] > 100)
537-
VPUPR("set clk frequency: %uHz\n", tmp[0]);
538-
else
539-
VPUPR("set clk level: %u\n", tmp[0]);
540-
set_vpu_clk(tmp[0]);
536+
if (ret == 1) {
537+
if (tmp[0] > 100)
538+
VPUPR("set clk frequency: %uHz\n", tmp[0]);
539+
else
540+
VPUPR("set clk level: %u\n", tmp[0]);
541+
set_vpu_clk(tmp[0]);
542+
} else {
543+
VPUERR("invalid parameters\n");
544+
}
541545
break;
542546
case 'r':
543547
if (buf[2] == 'q') { /* request */
544548
tmp[0] = 0;
545549
tmp[1] = VPU_MAX;
546550
ret = sscanf(buf, "request %u %u", &tmp[0], &tmp[1]);
547-
request_vpu_clk_vmod(tmp[0], tmp[1]);
551+
if (ret == 2)
552+
request_vpu_clk_vmod(tmp[0], tmp[1]);
553+
else
554+
VPUERR("invalid parameters\n");
548555
} else if (buf[2] == 'l') { /* release */
549556
tmp[0] = VPU_MAX;
550557
ret = sscanf(buf, "release %u", &tmp[0]);
551-
release_vpu_clk_vmod(tmp[0]);
558+
if (ret == 1)
559+
release_vpu_clk_vmod(tmp[0]);
560+
else
561+
VPUERR("invalid parameters\n");
552562
}
553563
break;
554564
case 'd':
555565
tmp[0] = VPU_MAX;
556566
ret = sscanf(buf, "dump %u", &tmp[0]);
557-
if (tmp[0] == VPU_MAX) {
567+
if (ret == 1) {
568+
VPUPR("clk holdings:\n");
569+
pr_info("%s: %uHz(%u)\n", vpu_mod_table[tmp[0]],
570+
vpu_clk_table[clk_vmod[tmp[0]]][0],
571+
clk_vmod[tmp[0]]);
572+
} else {
558573
n = get_vpu_clk_level_max_vmod();
559574
VPUPR("clk max holdings: %uHz(%u)\n",
560575
vpu_clk_table[n][0], n);
561-
} else {
562-
VPUPR("clk holdings:\n");
563-
pr_info("%s: %uHz(%u)\n", vpu_mod_table[tmp[0]],
564-
vpu_clk_table[clk_vmod[tmp[0]]][0],
565-
clk_vmod[tmp[0]]);
566576
}
567577
break;
568578
default:
569579
VPUERR("wrong debug command\n");
570580
break;
571581
}
572582

573-
if (ret != 1 || ret != 2)
574-
return -EINVAL;
575-
576583
return count;
577-
/* return 0; */
578584
}
579585

580586
static ssize_t vpu_mem_debug(struct class *class, struct class_attribute *attr,
581587
const char *buf, size_t count)
582588
{
583-
unsigned int ret;
589+
unsigned int ret = 0;
584590
unsigned int tmp[2];
585591
unsigned int _reg0, _reg1, _reg2;
586592

@@ -603,28 +609,29 @@ static ssize_t vpu_mem_debug(struct class *class, struct class_attribute *attr,
603609
break;
604610
case 'w':
605611
ret = sscanf(buf, "w %u %u", &tmp[0], &tmp[1]);
606-
tmp[0] = (tmp[0] > VPU_MAX) ? VPU_MAX : tmp[0];
607-
tmp[1] = (tmp[1] == VPU_MEM_POWER_ON) ? 0 : 1;
608-
VPUPR("switch_vpu_mem_pd: %s %s\n",
609-
vpu_mod_table[tmp[0]], (tmp[1] ? "DOWN" : "ON"));
610-
switch_vpu_mem_pd_vmod(tmp[0], tmp[1]);
612+
if (ret == 2) {
613+
tmp[0] = (tmp[0] > VPU_MAX) ? VPU_MAX : tmp[0];
614+
tmp[1] = (tmp[1] == VPU_MEM_POWER_ON) ? 0 : 1;
615+
VPUPR("switch_vpu_mem_pd: %s %s\n",
616+
vpu_mod_table[tmp[0]],
617+
(tmp[1] ? "DOWN" : "ON"));
618+
switch_vpu_mem_pd_vmod(tmp[0], tmp[1]);
619+
} else {
620+
VPUERR("invalid parameters\n");
621+
}
611622
break;
612623
default:
613624
VPUERR("wrong mem_pd command\n");
614625
break;
615626
}
616627

617-
if (ret != 1 || ret != 2)
618-
return -EINVAL;
619-
620628
return count;
621-
/* return 0; */
622629
}
623630

624631
static ssize_t vpu_clk_gate_debug(struct class *class,
625632
struct class_attribute *attr, const char *buf, size_t count)
626633
{
627-
unsigned int ret;
634+
unsigned int ret = 0;
628635
unsigned int tmp[2];
629636

630637
switch (buf[0]) {
@@ -652,22 +659,22 @@ static ssize_t vpu_clk_gate_debug(struct class *class,
652659
break;
653660
case 'w':
654661
ret = sscanf(buf, "w %u %u", &tmp[0], &tmp[1]);
655-
tmp[0] = (tmp[0] > VPU_MAX) ? VPU_MAX : tmp[0];
656-
tmp[1] = (tmp[1] == VPU_CLK_GATE_ON) ? 1 : 0;
657-
VPUPR("switch_vpu_clk_gate: %s %s\n",
658-
vpu_mod_table[tmp[0]], (tmp[1] ? "ON" : "OFF"));
659-
switch_vpu_clk_gate_vmod(tmp[0], tmp[1]);
662+
if (ret == 2) {
663+
tmp[0] = (tmp[0] > VPU_MAX) ? VPU_MAX : tmp[0];
664+
tmp[1] = (tmp[1] == VPU_CLK_GATE_ON) ? 1 : 0;
665+
VPUPR("switch_vpu_clk_gate: %s %s\n",
666+
vpu_mod_table[tmp[0]], (tmp[1] ? "ON" : "OFF"));
667+
switch_vpu_clk_gate_vmod(tmp[0], tmp[1]);
668+
} else {
669+
VPUERR("invalid parameters\n");
670+
}
660671
break;
661672
default:
662673
VPUERR("wrong clk_gate command\n");
663674
break;
664675
}
665676

666-
if (ret != 1 || ret != 2)
667-
return -EINVAL;
668-
669677
return count;
670-
/* return 0; */
671678
}
672679

673680
static unsigned int vcbus_reg[] = {
@@ -712,15 +719,9 @@ static void vcbus_test(void)
712719
static ssize_t vpu_test_debug(struct class *class, struct class_attribute *attr,
713720
const char *buf, size_t count)
714721
{
715-
unsigned int ret;
716-
717722
vcbus_test();
718723

719-
if (ret != 1 || ret != 2)
720-
return -EINVAL;
721-
722724
return count;
723-
/* return 0; */
724725
}
725726

726727
static ssize_t vpu_print_debug(struct class *class,
@@ -741,7 +742,7 @@ static struct class_attribute vpu_debug_class_attrs[] = {
741742
__ATTR(gate, 0644, vpu_debug_help, vpu_clk_gate_debug),
742743
__ATTR(test, 0644, vpu_debug_help, vpu_test_debug),
743744
__ATTR(print, 0644, vpu_debug_help, vpu_print_debug),
744-
__ATTR(help, 0644, vpu_debug_help, NULL),
745+
__ATTR(help, 0444, vpu_debug_help, NULL),
745746
};
746747

747748
static struct class *vpu_debug_class;

drivers/amlogic/media/common/vpu/vpu_reg.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@
9696
#define VDIN1_OFFSET 0x80
9797
#define VDIN_COM_GCLK_CTRL 0x121b
9898
#define VDIN_COM_GCLK_CTRL2 0x1270
99-
#define VDIN0_COM_GCLK_CTRL ((VDIN0_OFFSET << 2) + VDIN_COM_GCLK_CTRL)
100-
#define VDIN0_COM_GCLK_CTRL2 ((VDIN0_OFFSET << 2) + VDIN_COM_GCLK_CTRL2)
101-
#define VDIN1_COM_GCLK_CTRL ((VDIN1_OFFSET << 2) + VDIN_COM_GCLK_CTRL)
102-
#define VDIN1_COM_GCLK_CTRL2 ((VDIN1_OFFSET << 2) + VDIN_COM_GCLK_CTRL2)
99+
#define VDIN0_COM_GCLK_CTRL (VDIN0_OFFSET + VDIN_COM_GCLK_CTRL)
100+
#define VDIN0_COM_GCLK_CTRL2 (VDIN0_OFFSET + VDIN_COM_GCLK_CTRL2)
101+
#define VDIN1_COM_GCLK_CTRL (VDIN1_OFFSET + VDIN_COM_GCLK_CTRL)
102+
#define VDIN1_COM_GCLK_CTRL2 (VDIN1_OFFSET + VDIN_COM_GCLK_CTRL2)
103103

104104
#define DI_CLKG_CTRL 0x1718
105105

0 commit comments

Comments
 (0)