[media] saa7164: monitor the RISC cpu load via a thread
Signed-off-by: Steven Toth <stoth@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
0b62ceb035
commit
1247ff5c0a
|
@ -24,6 +24,31 @@
|
|||
|
||||
#include "saa7164.h"
|
||||
|
||||
int saa7164_api_get_load_info(struct saa7164_dev *dev, tmFwInfoStruct_t *i)
|
||||
{
|
||||
int ret, debug;
|
||||
|
||||
if (!(debug & DBGLVL_CPU))
|
||||
return 0;
|
||||
|
||||
dprintk(DBGLVL_API, "%s()\n", __func__);
|
||||
|
||||
i->deviceinst = 0;
|
||||
i->devicespec = 0;
|
||||
i->mode = 0;
|
||||
i->status = 0;
|
||||
|
||||
ret = saa7164_cmd_send(dev, 0, GET_CUR,
|
||||
GET_FW_STATUS_CONTROL, sizeof(tmFwInfoStruct_t), i);
|
||||
if (ret != SAA_OK) {
|
||||
printk(KERN_ERR "%s() error, ret = 0x%x\n", __func__, ret);
|
||||
}
|
||||
|
||||
printk(KERN_INFO "saa7164[%d]-CPU: %d percent", dev->nr, i->CPULoad);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int saa7164_api_collect_debug(struct saa7164_dev *dev)
|
||||
{
|
||||
tmComResDebugGetData_t d;
|
||||
|
|
|
@ -1191,6 +1191,8 @@ static int saa7164_proc_create(void)
|
|||
static int saa7164_thread_function(void *data)
|
||||
{
|
||||
struct saa7164_dev *dev = data;
|
||||
tmFwInfoStruct_t fwinfo;
|
||||
u64 last_poll_time = 0;
|
||||
|
||||
dprintk(DBGLVL_THR, "thread started\n");
|
||||
|
||||
|
@ -1205,8 +1207,16 @@ static int saa7164_thread_function(void *data)
|
|||
dprintk(DBGLVL_THR, "thread running\n");
|
||||
|
||||
/* Dump the firmware debug message to console */
|
||||
/* Polling this costs us 1-2% of the arm CPU */
|
||||
/* convert this into a respnde to interrupt 0x7a */
|
||||
saa7164_api_collect_debug(dev);
|
||||
|
||||
/* Monitor CPU load every 1 second */
|
||||
if ((last_poll_time + 1000 /* ms */) < jiffies_to_msecs(jiffies)) {
|
||||
saa7164_api_get_load_info(dev, &fwinfo);
|
||||
last_poll_time = jiffies_to_msecs(jiffies);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dprintk(DBGLVL_THR, "thread exiting\n");
|
||||
|
|
|
@ -60,6 +60,7 @@
|
|||
#define GET_STRING_CONTROL 0x03
|
||||
#define GET_LANGUAGE_CONTROL 0x05
|
||||
#define SET_POWER_CONTROL 0x07
|
||||
#define GET_FW_STATUS_CONTROL 0x08
|
||||
#define GET_FW_VERSION_CONTROL 0x09
|
||||
#define SET_DEBUG_LEVEL_CONTROL 0x0B
|
||||
#define GET_DEBUG_DATA_CONTROL 0x0C
|
||||
|
|
|
@ -446,3 +446,15 @@ typedef struct
|
|||
u8 ucDebugData[256];
|
||||
} __attribute__((packed)) tmComResDebugGetData_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 status;
|
||||
u32 mode;
|
||||
u32 devicespec;
|
||||
u32 deviceinst;
|
||||
u32 CPULoad;
|
||||
u32 RemainHeap;
|
||||
u32 CPUClock;
|
||||
u32 RAMSpeed;
|
||||
} __attribute__((packed)) tmFwInfoStruct_t;
|
||||
|
||||
|
|
|
@ -112,6 +112,7 @@
|
|||
#define DBGLVL_ENC 1024
|
||||
#define DBGLVL_VBI 2048
|
||||
#define DBGLVL_THR 4096
|
||||
#define DBGLVL_CPU 8192
|
||||
|
||||
#define SAA7164_NORMS ( V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_443 )
|
||||
|
||||
|
@ -551,6 +552,7 @@ int saa7164_api_get_videomux(struct saa7164_port *port);
|
|||
int saa7164_api_set_vbi_format(struct saa7164_port *port);
|
||||
int saa7164_api_set_debug(struct saa7164_dev *dev, u8 level);
|
||||
int saa7164_api_collect_debug(struct saa7164_dev *dev);
|
||||
int saa7164_api_get_load_info(struct saa7164_dev *dev, tmFwInfoStruct_t *i);
|
||||
|
||||
/* ----------------------------------------------------------- */
|
||||
/* saa7164-cards.c */
|
||||
|
|
Loading…
Reference in a new issue