Hi everyone,
First a little background. I have a Pinnacle PCTV-80e tuner, and have patched the video-4-linux code to allow it to work. However, when I restart my computer with it plugged in, it fails to load properly. Essentially it loads, but it fails to set up a frontend for the tuner.
Here are the applicable messages from dmesg:
Code:
[ 36.579949] DVB: Unable to find symbol drx39xxj_attach()
[ 36.579965] em28xx #0: /2: frontend initialization failed
[ 36.579973] Em28xx: Initialized (Em28xx dvb Extension) extension
The DVB portion refers to em28xx-dvb.c which has the following lines of code (relevant to this)
Code:
#include "drx39xxj.h"
struct dvb_frontend *fe;
dvb->fe[0] = dvb_attach(drx39xxj_attach, &dev->i2c_adap);
The (drx39xxj_attach) is located in the drx39xxj.h file, which is located in another directory under the tree (linux/drivers/media/dvb/frontends/drx39xxy/), where this file is located in linux/drivers/media/video/em28xx/).
In the drx39xxj.h file, the code looks like this:
Code:
#ifndef DRX39XXJ_H
#define DRX39XXJ_H
#include <linux/dvb/frontend.h>
#include "dvb_frontend.h"
#include "drx_driver.h"
struct drx39xxj_state {
struct i2c_adapter *i2c;
DRXDemodInstance_t *demod;
DRXStandard_t current_standard;
struct dvb_frontend frontend;
int powered_up:1;
unsigned int i2c_gate_open:1;
};
extern struct dvb_frontend* drx39xxj_attach(struct i2c_adapter *i2c);
#endif // DVB_DUMMY_FE_H
So my questions are these...
1. Would the fact that in the em28xx-dvb.c file, the frontend is declared as "dvb_frontend *fe;" and in the drx39xxj.h file, the frontend is declared as "dvb_frontend frontend;" be enough to cause it to fail to find the drx39xxj_attach method?
2. Even though this compiles (make and make install), do I need ot change the #include statement in the em28xx-dvb.c file to reflect the directory location of the drx39xxj.h file? (the linux/drivers/media/dvb/frontends/drx39xxy directory instead of just listing the file name)?
3. How would I trace through this to find out whether it's not finding the drx39xxj.h file when it tries to install the drivers and initialize the frontend, fails to find the drx39xxj_attach method itself from the .h file, or some other issue?
I have the files uploaded to a github repository, if someone needs to see the entire codebase to help me. Or I can post the entire code for each file, if necessary (although the em28xx-dvb.c file is pretty large).
Also, any other suggestions besides where I'm looking are greatly appreciated.
Thanks for any help with this, and have a great day
Patrick.