Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75c7dbca authored by remi schwartz's avatar remi schwartz Committed by Mauro Carvalho Chehab
Browse files

[media] patch for Asus My Cinema PS3-100 (1043:48cd)

parent 711e1bfb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
			rc-anysee.o \
			rc-apac-viewcomp.o \
			rc-asus-pc39.o \
			rc-asus-ps3-100.o \
			rc-ati-tv-wonder-hd-600.o \
			rc-ati-x10.o \
			rc-avermedia-a16d.o \
+91 −0
Original line number Diff line number Diff line
/* asus-ps3-100.h - Keytable for asus_ps3_100 Remote Controller
 *
 * Copyright (c) 2012 by Mauro Carvalho Chehab <mchehab@redhat.com>
 *
 * Based on a previous patch from Remi Schwartz <remi.schwartz@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#include <media/rc-map.h>
#include <linux/module.h>

static struct rc_map_table asus_ps3_100[] = {
	{ 0x081c, KEY_HOME },             /* home */
	{ 0x081e, KEY_TV },               /* tv */
	{ 0x0803, KEY_TEXT },             /* teletext */
	{ 0x0829, KEY_POWER },            /* close */

	{ 0x080b, KEY_RED },              /* red */
	{ 0x080d, KEY_YELLOW },           /* yellow */
	{ 0x0806, KEY_BLUE },             /* blue */
	{ 0x0807, KEY_GREEN },            /* green */

	/* Keys 0 to 9 */
	{ 0x082a, KEY_0 },
	{ 0x0816, KEY_1 },
	{ 0x0812, KEY_2 },
	{ 0x0814, KEY_3 },
	{ 0x0836, KEY_4 },
	{ 0x0832, KEY_5 },
	{ 0x0834, KEY_6 },
	{ 0x080e, KEY_7 },
	{ 0x080a, KEY_8 },
	{ 0x080c, KEY_9 },

	{ 0x0815, KEY_VOLUMEUP },
	{ 0x0826, KEY_VOLUMEDOWN },
	{ 0x0835, KEY_CHANNELUP },        /* channel / program + */
	{ 0x0824, KEY_CHANNELDOWN },      /* channel / program - */

	{ 0x0808, KEY_UP },
	{ 0x0804, KEY_DOWN },
	{ 0x0818, KEY_LEFT },
	{ 0x0810, KEY_RIGHT },
	{ 0x0825, KEY_ENTER },            /* enter */

	{ 0x0822, KEY_EXIT },             /* back */
	{ 0x082c, KEY_AB },               /* recall */

	{ 0x0820, KEY_AUDIO },            /* TV audio */
	{ 0x0837, KEY_SCREEN },           /* snapshot */
	{ 0x082e, KEY_ZOOM },             /* full screen */
	{ 0x0802, KEY_MUTE },             /* mute */

	{ 0x0831, KEY_REWIND },           /* backward << */
	{ 0x0811, KEY_RECORD },           /* recording */
	{ 0x0809, KEY_STOP },
	{ 0x0805, KEY_FASTFORWARD },      /* forward >> */
	{ 0x0821, KEY_PREVIOUS },         /* rew */
	{ 0x081a, KEY_PAUSE },            /* pause */
	{ 0x0839, KEY_PLAY },             /* play */
	{ 0x0819, KEY_NEXT },             /* forward */
};

static struct rc_map_list asus_ps3_100_map = {
.map = {
	.scan    = asus_ps3_100,
	.size    = ARRAY_SIZE(asus_ps3_100),
	.rc_type = RC_TYPE_RC5,
	.name    = RC_MAP_ASUS_PS3_100,
}
};

static int __init init_rc_map_asus_ps3_100(void)
{
return rc_map_register(&asus_ps3_100_map);
}

static void __exit exit_rc_map_asus_ps3_100(void)
{
rc_map_unregister(&asus_ps3_100_map);
}

module_init(init_rc_map_asus_ps3_100)
module_exit(exit_rc_map_asus_ps3_100)

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@redhat.com>");
+51 −0
Original line number Diff line number Diff line
@@ -5080,6 +5080,36 @@ struct saa7134_board saa7134_boards[] = {
			.gpio = 0x0200000,
		},
	},
	[SAA7134_BOARD_ASUSTeK_PS3_100] = {
		.name           = "Asus My Cinema PS3-100",
		.audio_clock    = 0x00187de7,
		.tuner_type     = TUNER_PHILIPS_TDA8290,
		.radio_type     = UNSET,
		.tuner_addr     = ADDR_UNSET,
		.radio_addr     = ADDR_UNSET,
		.tuner_config   = 2,
		.gpiomask       = 1 << 21,
		.mpeg           = SAA7134_MPEG_DVB,
		.inputs         = {{
			.name = name_tv,
			.vmux = 1,
			.amux = TV,
			.tv   = 1,
		}, {
			.name = name_comp,
			.vmux = 0,
			.amux = LINE2,
		}, {
			.name = name_svideo,
			.vmux = 8,
			.amux = LINE2,
		} },
		.radio = {
			.name = name_radio,
			.amux = TV,
			.gpio = 0x0200000,
		},
	},
	[SAA7134_BOARD_REAL_ANGEL_220] = {
		.name           = "Zogis Real Angel 220",
		.audio_clock    = 0x00187de7,
@@ -6875,6 +6905,18 @@ struct pci_device_id saa7134_pci_tbl[] = {
		.subvendor    = 0x1043,
		.subdevice    = 0x4878, /* REV:1.02G */
		.driver_data  = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
	}, {
		.vendor       = PCI_VENDOR_ID_PHILIPS,
		.device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
		.subvendor    = 0x1043,
		.subdevice    = 0x48cd,
		.driver_data  = SAA7134_BOARD_ASUSTeK_PS3_100,
	}, {
		.vendor       = PCI_VENDOR_ID_PHILIPS,
		.device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
		.subvendor    = 0x17de,
		.subdevice    = 0x7128,
		.driver_data  = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
	}, {
		.vendor       = PCI_VENDOR_ID_PHILIPS,
		.device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
@@ -7347,6 +7389,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
	case SAA7134_BOARD_KWORLD_TERMINATOR:
	case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
	case SAA7134_BOARD_FLYDVBT_LR301:
	case SAA7134_BOARD_ASUSTeK_PS3_100:
	case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
	case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
	case SAA7134_BOARD_ASUSTeK_P7131_ANALOG:
@@ -7811,6 +7854,14 @@ int saa7134_board_init2(struct saa7134_dev *dev)
		i2c_transfer(&dev->i2c_adap, &msg, 1);
		break;
	}
	case SAA7134_BOARD_ASUSTeK_PS3_100:
	{
		u8 data[] = { 0x3c, 0x33, 0x60};
		struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
						       .len = sizeof(data)};
		i2c_transfer(&dev->i2c_adap, &msg, 1);
		break;
	}
	case SAA7134_BOARD_FLYDVB_TRIO:
	{
		u8 temp = 0;
+39 −0
Original line number Diff line number Diff line
@@ -881,6 +881,20 @@ static struct tda1004x_config asus_tiger_3in1_config = {
	.request_firmware = philips_tda1004x_request_firmware
};

static struct tda1004x_config asus_ps3_100_config = {
	.demod_address = 0x0b,
	.invert        = 1,
	.invert_oclk   = 0,
	.xtal_freq     = TDA10046_XTAL_16M,
	.agc_config    = TDA10046_AGC_TDA827X,
	.gpio_config   = TDA10046_GP11_I,
	.if_freq       = TDA10046_FREQ_045,
	.i2c_gate      = 0x4b,
	.tuner_address = 0x61,
	.antenna_switch = 1,
	.request_firmware = philips_tda1004x_request_firmware
};

/* ------------------------------------------------------------------
 * special case: this card uses saa713x GPIO22 for the mode switch
 */
@@ -1652,6 +1666,31 @@ static int dvb_init(struct saa7134_dev *dev)
		       }
	       }
	       break;
	case SAA7134_BOARD_ASUSTeK_PS3_100:
		if (!use_frontend) {     /* terrestrial */
			if (configure_tda827x_fe(dev, &asus_ps3_100_config,
						 &tda827x_cfg_2) < 0)
				goto dettach_frontend;
	       } else {                /* satellite */
			fe0->dvb.frontend = dvb_attach(tda10086_attach,
						       &flydvbs, &dev->i2c_adap);
			if (fe0->dvb.frontend) {
				if (dvb_attach(tda826x_attach,
					       fe0->dvb.frontend, 0x60,
					       &dev->i2c_adap, 0) == NULL) {
					wprintk("%s: Asus My Cinema PS3-100, no "
						"tda826x found!\n", __func__);
					goto dettach_frontend;
				}
				if (dvb_attach(lnbp21_attach, fe0->dvb.frontend,
					       &dev->i2c_adap, 0, 0) == NULL) {
					wprintk("%s: Asus My Cinema PS3-100, no lnbp21"
						" found!\n", __func__);
					goto dettach_frontend;
				}
			}
		}
		break;
	case SAA7134_BOARD_ASUSTeK_TIGER:
		if (configure_tda827x_fe(dev, &philips_tiger_config,
					 &tda827x_cfg_0) < 0)
+7 −0
Original line number Diff line number Diff line
@@ -753,6 +753,13 @@ int saa7134_input_init1(struct saa7134_dev *dev)
		mask_keycode = 0xffff;
		raw_decode   = true;
		break;
	case SAA7134_BOARD_ASUSTeK_PS3_100:
		ir_codes     = RC_MAP_ASUS_PS3_100;
		mask_keydown = 0x0040000;
		mask_keyup   = 0x0040000;
		mask_keycode = 0xffff;
		raw_decode   = true;
		break;
	case SAA7134_BOARD_ENCORE_ENLTV:
	case SAA7134_BOARD_ENCORE_ENLTV_FM:
		ir_codes     = RC_MAP_ENCORE_ENLTV;
Loading