public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [linux-dvb] Saa7134 with Avermedia M1155 hybrid card on Ubuntu 8.04
@ 2008-08-14 16:00 Tim Farrington
  2008-08-14 23:10 ` hermann pitton
  0 siblings, 1 reply; 4+ messages in thread
From: Tim Farrington @ 2008-08-14 16:00 UTC (permalink / raw)
  To: linux-dvb, John.Chajecki

[-- Attachment #1: Type: text/plain, Size: 4652 bytes --]

Hi John,

I will try and help.

Try this and see if you get anywhere.

First, you need to install these:

sudo apt-get install build-essential mercurial

Next, you need to download v4l-dvb from Linuxtv.org into your home 
directory:

hg clone http://linuxtv.org/hg/v4l-dvb

Next, in Ubuntu 8.04, you will have to remove conflicting modules:
(beware this may affect things such as a webcam)

cd /lib/modules/`uname -r`/ubuntu
sudo rm -rf media
cd

Next, modify the source code in ~/v4l-dvb

In ~/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c

Find this section:

    [SAA7134_BOARD_AVERMEDIA_M115] = {
        .name           = "Avermedia M115",
        .audio_clock    = 0x187de7,
        .tuner_type     = TUNER_XC2028,
        .radio_type     = UNSET,
        .tuner_addr    = ADDR_UNSET,
        .radio_addr    = ADDR_UNSET,
/*add this line*/.mpeg           = SAA7134_MPEG_DVB,
        .inputs         = {{
            .name = name_tv,
            .vmux = 1,
            .amux = TV,
            .tv   = 1,
        }, {
            .name = name_comp1,
            .vmux = 3,
            .amux = LINE1,
        }, {
            .name = name_svideo,
            .vmux = 8,
            .amux = LINE2,
        } },
    },

Find this section:

static int saa7134_xc2028_callback(struct saa7134_dev *dev,
                   int command, int arg)
{
    switch (command) {
    case XC2028_TUNER_RESET:
        saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00000000);
        saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
        switch (dev->board) {
        case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
        case SAA7134_BOARD_AVERMEDIA_M103:
            saa7134_set_gpio(dev, 23, 0);
            msleep(10);
            saa7134_set_gpio(dev, 23, 1);
        break;
        case SAA7134_BOARD_AVERMEDIA_A16D:
/*add this line*/case SAA7134_BOARD_AVERMEDIA_M115:
            saa7134_set_gpio(dev, 21, 0);
            msleep(10);
            saa7134_set_gpio(dev, 21, 1);
        break;
        }
    return 0;
    }
    return -EINVAL;
}

Find this section:

int saa7134_board_init1(struct saa7134_dev *dev)
...
    case SAA7134_BOARD_AVERMEDIA_CARDBUS:
/*    case SAA7134_BOARD_AVERMEDIA_M115: */ /*comment this line out*/
#if 1
        /* power-down tuner chip */
        saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0);
        saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0);
#endif
        msleep(10);
        /* power-up tuner chip */
        saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
        saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
        msleep(10);
        break;

Find this section:

    case SAA7134_BOARD_AVERMEDIA_A16D:
        saa7134_set_gpio(dev, 21, 0);
        msleep(10);
        saa7134_set_gpio(dev, 21, 1);
        msleep(1);
        dev->has_remote = SAA7134_REMOTE_GPIO;
        break;

Create a new case entry below it:

    case SAA7134_BOARD_AVERMEDIA_M115:
        saa7134_set_gpio(dev, 21, 0);
        msleep(10);
        saa7134_set_gpio(dev, 21, 1);
        break;

Find this section:

        switch (dev->board) {
        case SAA7134_BOARD_AVERMEDIA_A16D:
        case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
        case SAA7134_BOARD_AVERMEDIA_M103:
/*add this line*/case SAA7134_BOARD_AVERMEDIA_M115:
            ctl.demod = XC3028_FE_ZARLINK456;
            break;


In ~/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c

Find this section:

    case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
        dprintk("AverMedia E506R dvb setup\n");
        saa7134_set_gpio(dev, 25, 0);
        msleep(10);
        saa7134_set_gpio(dev, 25, 1);
        dev->dvb.frontend = dvb_attach(mt352_attach,
                        &avermedia_xc3028_mt352_dev,
                        &dev->i2c_adap);
        attach_xc3028 = 1;
        break;

Create a new case entry below it:

    case SAA7134_BOARD_AVERMEDIA_M115:
        saa7134_set_gpio(dev, 25, 0);
        msleep(10);
        saa7134_set_gpio(dev, 25, 1);
        dev->dvb.frontend = dvb_attach(mt352_attach,
                        &avermedia_xc3028_mt352_dev,
                        &dev->i2c_adap);
        attach_xc3028 = 1;
        break;

Save these files.
Next, use make to build the modules:

cd
cd v4l-dvb
make
sudo make install

Next, you need to extract and install the firmware:

In ~/v4l-dvb/linux/Documentation/video4linux/extract_xc3028.pl

you will find instructions on how to use this file to obtain the firmware.

Then, copy the firmware to /lib:

sudo cp xc3028-v27.fw /lib/firmware/`uname -r`

reboot

check dmesg.

See if that gets anywhere.

Regards,
Timf

[-- Attachment #2: m115.txt --]
[-- Type: text/plain, Size: 3918 bytes --]


First, you need to install these:

sudo apt-get install build-essential mercurial

Next, you need to download v4l-dvb from Linuxtv.org into your home directory:

hg clone http://linuxtv.org/hg/v4l-dvb

Next, in Ubuntu 8.04, you will have to remove conflicting modules:
(beware this may affect things such as a webcam)

cd /lib/modules/`uname -r`/ubuntu
sudo rm -rf media
cd

Next, modify the source code in ~/v4l-dvb

In ~/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c

Find this section:

	[SAA7134_BOARD_AVERMEDIA_M115] = {
		.name           = "Avermedia M115",
		.audio_clock    = 0x187de7,
		.tuner_type     = TUNER_XC2028,
		.radio_type     = UNSET,
		.tuner_addr	= ADDR_UNSET,
		.radio_addr	= ADDR_UNSET,
/*add this line*/.mpeg           = SAA7134_MPEG_DVB,
		.inputs         = {{
			.name = name_tv,
			.vmux = 1,
			.amux = TV,
			.tv   = 1,
		}, {
			.name = name_comp1,
			.vmux = 3,
			.amux = LINE1,
		}, {
			.name = name_svideo,
			.vmux = 8,
			.amux = LINE2,
		} },
	},

Find this section:

static int saa7134_xc2028_callback(struct saa7134_dev *dev,
				   int command, int arg)
{
	switch (command) {
	case XC2028_TUNER_RESET:
		saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00000000);
		saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
		switch (dev->board) {
		case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
		case SAA7134_BOARD_AVERMEDIA_M103:
			saa7134_set_gpio(dev, 23, 0);
			msleep(10);
			saa7134_set_gpio(dev, 23, 1);
		break;
		case SAA7134_BOARD_AVERMEDIA_A16D:
/*add this line*/case SAA7134_BOARD_AVERMEDIA_M115:
			saa7134_set_gpio(dev, 21, 0);
			msleep(10);
			saa7134_set_gpio(dev, 21, 1);
		break;
		}
	return 0;
	}
	return -EINVAL;
}

Find this section:

int saa7134_board_init1(struct saa7134_dev *dev)
...
	case SAA7134_BOARD_AVERMEDIA_CARDBUS:
/*	case SAA7134_BOARD_AVERMEDIA_M115: */ /*comment this line out*/
#if 1
		/* power-down tuner chip */
		saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0);
		saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0);
#endif
		msleep(10);
		/* power-up tuner chip */
		saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
		saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
		msleep(10);
		break;

Find this section:

	case SAA7134_BOARD_AVERMEDIA_A16D:
		saa7134_set_gpio(dev, 21, 0);
		msleep(10);
		saa7134_set_gpio(dev, 21, 1);
		msleep(1);
		dev->has_remote = SAA7134_REMOTE_GPIO;
		break;

Create a new case entry below it:

	case SAA7134_BOARD_AVERMEDIA_M115:
		saa7134_set_gpio(dev, 21, 0);
		msleep(10);
		saa7134_set_gpio(dev, 21, 1);
		break;

Find this section:

		switch (dev->board) {
		case SAA7134_BOARD_AVERMEDIA_A16D:
		case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
		case SAA7134_BOARD_AVERMEDIA_M103:
/*add this line*/case SAA7134_BOARD_AVERMEDIA_M115:
			ctl.demod = XC3028_FE_ZARLINK456;
			break;


In ~/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c

Find this section:

	case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
		dprintk("AverMedia E506R dvb setup\n");
		saa7134_set_gpio(dev, 25, 0);
		msleep(10);
		saa7134_set_gpio(dev, 25, 1);
		dev->dvb.frontend = dvb_attach(mt352_attach,
						&avermedia_xc3028_mt352_dev,
						&dev->i2c_adap);
		attach_xc3028 = 1;
		break;

Create a new case entry below it:

	case SAA7134_BOARD_AVERMEDIA_M115:
		saa7134_set_gpio(dev, 25, 0);
		msleep(10);
		saa7134_set_gpio(dev, 25, 1);
		dev->dvb.frontend = dvb_attach(mt352_attach,
						&avermedia_xc3028_mt352_dev,
						&dev->i2c_adap);
		attach_xc3028 = 1;
		break;

Save these files.
Next, use make to build the modules:

cd
cd v4l-dvb
make
sudo make install

Next, you need to extract and install the firmware:

In ~/v4l-dvb/linux/Documentation/video4linux/extract_xc3028.pl

you will find instructions on how to use this file to obtain the firmware.

Then, copy the firmware to /lib:

sudo cp xc3028-v27.fw /lib/firmware/`uname -r`

reboot

check dmesg.


[-- Attachment #3: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 4+ messages in thread
* [linux-dvb] Saa7134 with Avermedia M1155 hybrid card on Ubuntu 8.04
@ 2008-08-12 14:08 John Chajecki
  2008-08-12 20:39 ` hermann pitton
  0 siblings, 1 reply; 4+ messages in thread
From: John Chajecki @ 2008-08-12 14:08 UTC (permalink / raw)
  To: linux-dvb

Hi, I'm trying to get an Avermedia M1155 Hybrid Aalogue/DVB tuner card to work with my Ubuntu Linux 8.04 (hardy) installation on a Sony VGX-TP1E media centre PC. In dmesg the card is identified as a Philips saa1733/1735:

  
[17205.851529] saa7130/34: v4l2 driver version 0.2.14 loaded
[17205.851785] saa7133[0]: found at 0000:04:05.0, rev: 209, irq: 20, latency: 32
, mmio: 0xf0207800
[17205.851830] saa7133[0]: subsystem: 1461:e836, board: UNKNOWN/GENERIC [card=0,
insmod option]
[17205.851845] saa7133[0]: board init: gpio is effffff
[17206.006586] saa7133[0]: i2c eeprom 00: 61 14 36 e8 00 00 00 00 00 00 00 00 00
 00 00 00
[17206.006611] saa7133[0]: i2c eeprom 10: ff ff ff ff ff 20 ff ff ff ff ff ff ff
 ff ff ff
[17206.006629] saa7133[0]: i2c eeprom 20: 01 40 01 02 02 01 01 03 08 ff 00 00 ff
 ff ff ff
etc

However the board is shown as GENERIC, board=0. lsmod shows this:

Module                  Size  Used by
tuner                  28872  0
saa7134               147924  0
ir_common              42244  1 saa7134
compat_ioctl32          2304  1 saa7134
videobuf_dma_sg        14980  1 saa7134
videobuf_core          19716  2 saa7134,videobuf_dma_sg
tveeprom               13444  1 saa7134
mt352                   7684  0
videodev               36864  2 tuner,saa7134
v4l1_compat            15748  1 videodev
v4l2_common            12672  2 tuner,saa7134
i2c_core               24832  5 tuner,saa7134,tveeprom,mt352,v4l2_common


I've had a look at the supported board list at http://gentoo-wiki.com/HARDWARE_saa7134#i2c_Scan but my card does not seem to be present.

The saa1734 driver is loading, but there is no /dev/dvb or /dev//v4l directory.

Is this card not supported yet, or does it need to be manually loaded with the appropriate parameters?

I am quite willing to help with development and testing.



_
John Chajecki
Senior Infrastructure Engineer
Information Division
Resources Department
Leicester City Council

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-08-14 23:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-14 16:00 [linux-dvb] Saa7134 with Avermedia M1155 hybrid card on Ubuntu 8.04 Tim Farrington
2008-08-14 23:10 ` hermann pitton
  -- strict thread matches above, loose matches on Subject: below --
2008-08-12 14:08 John Chajecki
2008-08-12 20:39 ` hermann pitton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox