@@ -155,6 +155,7 @@ extern struct ir_scancode_table ir_codes
extern struct ir_scancode_table ir_codes_proteus_2309_table;
extern struct ir_scancode_table ir_codes_budget_ci_old_table;
extern struct ir_scancode_table ir_codes_asus_pc39_table;
+extern struct ir_scancode_table ir_codes_asus_ps3_100_table;
extern struct ir_scancode_table ir_codes_encore_enltv_table;
extern struct ir_scancode_table ir_codes_encore_enltv2_table;
extern struct ir_scancode_table ir_codes_tt_1500_table;
@@ -2064,6 +2064,70 @@ struct ir_scancode_table ir_codes_asus_p
EXPORT_SYMBOL_GPL(ir_codes_asus_pc39_table);
+/*
+ * Remzouille <remzouille@free.fr>
+ * this is the remote control that comes with the asus my cinema ps3-100
+ * base taken from pc39 one
+ */
+static struct ir_scancode ir_codes_asus_ps3_100[] = {
+ { 0x23, KEY_HOME }, /* home */
+ { 0x21, KEY_TV }, /* tv */
+ { 0x3c, KEY_TEXT }, /* teletext */
+ { 0x16, KEY_POWER }, /* close */
+
+ { 0x34, KEY_RED }, /* red */
+ { 0x32, KEY_YELLOW }, /* yellow */
+ { 0x39, KEY_BLUE }, /* blue */
+ { 0x38, KEY_GREEN }, /* green */
+
+ /* Keys 0 to 9 */
+ { 0x15, KEY_0 },
+ { 0x29, KEY_1 },
+ { 0x2d, KEY_2 },
+ { 0x2b, KEY_3 },
+ { 0x09, KEY_4 },
+ { 0x0d, KEY_5 },
+ { 0x0b, KEY_6 },
+ { 0x31, KEY_7 },
+ { 0x35, KEY_8 },
+ { 0x33, KEY_9 },
+
+ { 0x2a, KEY_VOLUMEUP },
+ { 0x19, KEY_VOLUMEDOWN },
+ { 0x0a, KEY_CHANNELUP }, /* channel / program + */
+ { 0x1b, KEY_CHANNELDOWN }, /* channel / program - */
+
+ { 0x37, KEY_UP },
+ { 0x3b, KEY_DOWN },
+ { 0x27, KEY_LEFT },
+ { 0x2f, KEY_RIGHT },
+ { 0x1a, KEY_ENTER }, /* enter */
+
+ { 0x1d, KEY_EXIT }, /* back */
+ { 0x13, KEY_AB }, /* recall */
+
+ { 0x1f, KEY_AUDIO }, /* TV audio */
+ { 0x08, KEY_SCREEN }, /* snapshot */
+ { 0x11, KEY_ZOOM }, /* full screen */
+ { 0x3d, KEY_MUTE }, /* mute */
+
+ { 0x0e, KEY_REWIND }, /* backward << */
+ { 0x2e, KEY_RECORD }, /* recording */
+ { 0x36, KEY_STOP },
+ { 0x3a, KEY_FASTFORWARD }, /* forward >> */
+ { 0x1e, KEY_PREVIOUS }, /* rew */
+ { 0x25, KEY_PAUSE }, /* pause */
+ { 0x06, KEY_PLAY }, /* play */
+ { 0x26, KEY_NEXT }, /* forward */
+};
+
+struct ir_scancode_table ir_codes_asus_ps3_100_table = {
+ .scan = ir_codes_asus_ps3_100,
+ .size = ARRAY_SIZE(ir_codes_asus_ps3_100),
+};
+EXPORT_SYMBOL_GPL(ir_codes_asus_ps3_100_table);
+
+
/* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons
Juan Pablo Sormani <sorman@gmail.com> */
static struct ir_scancode ir_codes_encore_enltv[] = {
@@ -575,6 +575,11 @@ int saa7134_input_init1(struct saa7134_d
mask_keydown = 0x0040000;
rc5_gpio = 1;
break;
+ case SAA7134_BOARD_ASUSTeK_PS3_100:
+ ir_codes = &ir_codes_asus_ps3_100_table;
+ mask_keydown = 0x0040000;
+ rc5_gpio = 1;
+ break;
case SAA7134_BOARD_ENCORE_ENLTV:
case SAA7134_BOARD_ENCORE_ENLTV_FM:
ir_codes = &ir_codes_encore_enltv_table;
@@ -824,6 +824,20 @@ static struct tda1004x_config asus_tiger
.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
*/
@@ -1465,6 +1479,31 @@ static int dvb_init(struct saa7134_dev *
" 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;
+ }
}
}
break;
@@ -5012,6 +5012,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,
@@ -6407,6 +6437,12 @@ struct pci_device_id saa7134_pci_tbl[] =
.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,
@@ -6753,6 +6789,7 @@ int saa7134_board_init1(struct saa7134_d
case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
case SAA7134_BOARD_ASUSTeK_P7131_ANALOG:
+ case SAA7134_BOARD_ASUSTeK_PS3_100:
case SAA7134_BOARD_FLYDVBTDUO:
case SAA7134_BOARD_PROTEUS_2309:
case SAA7134_BOARD_AVERMEDIA_A16AR:
@@ -7181,6 +7218,14 @@ int saa7134_board_init2(struct saa7134_d
{
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_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;
@@ -271,6 +271,7 @@ struct saa7134_format {
#define SAA7134_BOARD_AVERMEDIA_M103 145
#define SAA7134_BOARD_ASUSTeK_P7131_ANALOG 146
#define SAA7134_BOARD_ASUSTeK_TIGER_3IN1 147
+#define SAA7134_BOARD_ASUSTeK_PS3_100 1470
#define SAA7134_BOARD_ENCORE_ENLTV_FM53 148
#define SAA7134_BOARD_AVERMEDIA_M135A 149
#define SAA7134_BOARD_REAL_ANGEL_220 150