mirror of
https://github.com/torvalds/linux.git
synced 2024-12-24 11:51:27 +00:00
[media] patch for Asus My Cinema PS3-100 (1043:48cd)
Signed-off-by: Remi Schwartz <remi.schwartz@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
711e1bfb5b
commit
75c7dbcab4
@ -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
drivers/media/rc/keymaps/rc-asus-ps3-100.c
Normal file
91
drivers/media/rc/keymaps/rc-asus-ps3-100.c
Normal file
@ -0,0 +1,91 @@
|
||||
/* 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>");
|
@ -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;
|
||||
|
@ -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
|
||||
*/
|
||||
@ -1647,6 +1661,31 @@ static int dvb_init(struct saa7134_dev *dev)
|
||||
&dev->i2c_adap, 0, 0) == NULL) {
|
||||
wprintk("%s: Asus Tiger 3in1, no lnbp21"
|
||||
" found!\n", __func__);
|
||||
goto dettach_frontend;
|
||||
}
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -332,6 +332,7 @@ struct saa7134_card_ir {
|
||||
#define SAA7134_BOARD_BEHOLD_503FM 187
|
||||
#define SAA7134_BOARD_SENSORAY811_911 188
|
||||
#define SAA7134_BOARD_KWORLD_PC150U 189
|
||||
#define SAA7134_BOARD_ASUSTeK_PS3_100 190
|
||||
|
||||
#define SAA7134_MAXBOARDS 32
|
||||
#define SAA7134_INPUT_MAX 8
|
||||
|
@ -62,6 +62,7 @@ void rc_map_init(void);
|
||||
#define RC_MAP_ANYSEE "rc-anysee"
|
||||
#define RC_MAP_APAC_VIEWCOMP "rc-apac-viewcomp"
|
||||
#define RC_MAP_ASUS_PC39 "rc-asus-pc39"
|
||||
#define RC_MAP_ASUS_PS3_100 "rc-asus-ps3-100"
|
||||
#define RC_MAP_ATI_TV_WONDER_HD_600 "rc-ati-tv-wonder-hd-600"
|
||||
#define RC_MAP_ATI_X10 "rc-ati-x10"
|
||||
#define RC_MAP_AVERMEDIA_A16D "rc-avermedia-a16d"
|
||||
|
Loading…
Reference in New Issue
Block a user