summaryrefslogtreecommitdiff
authorChengshun Wang <chengshun.wang@amlogic.com>2020-07-13 05:57:59 (GMT)
committer Chengshun Wang <chengshun.wang@amlogic.com>2020-07-13 06:17:59 (GMT)
commita1cd3c48a985d072d693ceb7418f9bb9ed786f59 (patch)
tree306ef11f157062c69e5266df21eb571514d1df68
parent2f328ed1523e5fc3cc04c5a966548d84e085d22d (diff)
downloadmedia_modules-a1cd3c48a985d072d693ceb7418f9bb9ed786f59.zip
media_modules-a1cd3c48a985d072d693ceb7418f9bb9ed786f59.tar.gz
media_modules-a1cd3c48a985d072d693ceb7418f9bb9ed786f59.tar.bz2
dvb: add demux dev open count node [1/1]
PD#SWPL-29545 Problem: when free filters have count not use, but demux device can not open Solution: add node to calculate demux device open count Verify: U215 Change-Id: I98f780ee0618eb353533efda386f66c0c640839c Signed-off-by: Chengshun Wang <chengshun.wang@amlogic.com>
Diffstat
-rw-r--r--drivers/stream_input/parser/hw_demux/aml_dvb.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/drivers/stream_input/parser/hw_demux/aml_dvb.c b/drivers/stream_input/parser/hw_demux/aml_dvb.c
index 4f40431..e6923b7 100644
--- a/drivers/stream_input/parser/hw_demux/aml_dvb.c
+++ b/drivers/stream_input/parser/hw_demux/aml_dvb.c
@@ -1246,6 +1246,24 @@ static ssize_t demux##i##_show_free_filters(struct class *class, \
return ret;\
}
+/*Show dmx dev open count*/
+#define DEMUX_DEV_USERS_FUNC_DECL(i) \
+static ssize_t demux##i##_show_dev_users(struct class *class, \
+ struct class_attribute *attr, char *buf)\
+{\
+ struct aml_dvb *dvb = &aml_dvb_device;\
+ struct dvb_demux *dmx = &dvb->dmx[i].demux;\
+ int count;\
+ ssize_t ret = 0;\
+ if (mutex_lock_interruptible(&dmx->mutex)) \
+ return -ERESTARTSYS; \
+ count = dvb->dmx[i].dmxdev.dvbdev->users -1;\
+ mutex_unlock(&dmx->mutex);\
+ ret = sprintf(buf, "%d\n", count);\
+ return ret;\
+}
+
+
static ssize_t demux_state_show(struct class *class,
struct class_attribute *attr, char *buf)
{
@@ -1274,7 +1292,8 @@ static ssize_t demux_state_show(struct class *class,
if (!dmx->filter[fid].state != DMX_STATE_FREE)
count++;
else {
- r = sprintf(buf, "fid:%d, pid:0x%0x\n",fid,dmx->filter[fid].feed->pid);
+ r = sprintf(buf, "fid:%d, pid:0x%0x, state:%d\n", fid, dmx->filter[fid].feed->pid,
+ dmx->filter[fid].state);
buf += r;
ret += r;
}
@@ -1283,6 +1302,10 @@ static ssize_t demux_state_show(struct class *class,
buf += r;
ret += r;
+ r = sprintf(buf, "file users:%d\n", dvb->dmx[i].dmxdev.dvbdev->users);
+ buf += r;
+ ret += r;
+
r = sprintf(buf, "chan:\n");
buf += r;
ret += r;
@@ -1451,6 +1474,7 @@ static ssize_t dvr##i##_store_mode(struct class *class, \
DEMUX_SOURCE_FUNC_DECL(0)
DEMUX_FREE_FILTERS_FUNC_DECL(0)
DEMUX_FILTER_USERS_FUNC_DECL(0)
+ DEMUX_DEV_USERS_FUNC_DECL(0)
DVR_MODE_FUNC_DECL(0)
DEMUX_TS_HEADER_FUNC_DECL(0)
DEMUX_CHANNEL_ACTIVITY_FUNC_DECL(0)
@@ -1461,6 +1485,7 @@ static ssize_t dvr##i##_store_mode(struct class *class, \
DEMUX_SOURCE_FUNC_DECL(1)
DEMUX_FREE_FILTERS_FUNC_DECL(1)
DEMUX_FILTER_USERS_FUNC_DECL(1)
+ DEMUX_DEV_USERS_FUNC_DECL(1)
DVR_MODE_FUNC_DECL(1)
DEMUX_TS_HEADER_FUNC_DECL(1)
DEMUX_CHANNEL_ACTIVITY_FUNC_DECL(1)
@@ -1471,6 +1496,7 @@ static ssize_t dvr##i##_store_mode(struct class *class, \
DEMUX_SOURCE_FUNC_DECL(2)
DEMUX_FREE_FILTERS_FUNC_DECL(2)
DEMUX_FILTER_USERS_FUNC_DECL(2)
+ DEMUX_DEV_USERS_FUNC_DECL(2)
DVR_MODE_FUNC_DECL(2)
DEMUX_TS_HEADER_FUNC_DECL(2)
DEMUX_CHANNEL_ACTIVITY_FUNC_DECL(2)
@@ -2044,6 +2070,9 @@ static struct class_attribute aml_stb_class_attrs[] = {
#define DEMUX_FILTER_USERS_ATTR_DECL(i)\
__ATTR(demux##i##_filter_users, 0644, \
demux##i##_show_filter_users, demux##i##_store_filter_used)
+#define DEMUX_DEV_USERS_ATTR_DECL(i)\
+ __ATTR(demux##i##_dev_users, 0644, \
+ demux##i##_show_dev_users, NULL)
#define DVR_MODE_ATTR_DECL(i)\
__ATTR(dvr##i##_mode, 0644, dvr##i##_show_mode, \
dvr##i##_store_mode)
@@ -2062,6 +2091,7 @@ static struct class_attribute aml_stb_class_attrs[] = {
DEMUX_SOURCE_ATTR_DECL(0),
DEMUX_FREE_FILTERS_ATTR_DECL(0),
DEMUX_FILTER_USERS_ATTR_DECL(0),
+ DEMUX_DEV_USERS_ATTR_DECL(0),
DVR_MODE_ATTR_DECL(0),
DEMUX_TS_HEADER_ATTR_DECL(0),
DEMUX_CHANNEL_ACTIVITY_ATTR_DECL(0),
@@ -2072,6 +2102,7 @@ static struct class_attribute aml_stb_class_attrs[] = {
DEMUX_SOURCE_ATTR_DECL(1),
DEMUX_FREE_FILTERS_ATTR_DECL(1),
DEMUX_FILTER_USERS_ATTR_DECL(1),
+ DEMUX_DEV_USERS_ATTR_DECL(1),
DVR_MODE_ATTR_DECL(1),
DEMUX_TS_HEADER_ATTR_DECL(1),
DEMUX_CHANNEL_ACTIVITY_ATTR_DECL(1),
@@ -2082,6 +2113,7 @@ static struct class_attribute aml_stb_class_attrs[] = {
DEMUX_SOURCE_ATTR_DECL(2),
DEMUX_FREE_FILTERS_ATTR_DECL(2),
DEMUX_FILTER_USERS_ATTR_DECL(2),
+ DEMUX_DEV_USERS_ATTR_DECL(2),
DVR_MODE_ATTR_DECL(2),
DEMUX_TS_HEADER_ATTR_DECL(2),
DEMUX_CHANNEL_ACTIVITY_ATTR_DECL(2),