Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

remi schwartz and committed by
Mauro Carvalho Chehab
75c7dbca 711e1bfb

+191
+1
drivers/media/rc/keymaps/Makefile
··· 3 3 rc-anysee.o \ 4 4 rc-apac-viewcomp.o \ 5 5 rc-asus-pc39.o \ 6 + rc-asus-ps3-100.o \ 6 7 rc-ati-tv-wonder-hd-600.o \ 7 8 rc-ati-x10.o \ 8 9 rc-avermedia-a16d.o \
+91
drivers/media/rc/keymaps/rc-asus-ps3-100.c
··· 1 + /* asus-ps3-100.h - Keytable for asus_ps3_100 Remote Controller 2 + * 3 + * Copyright (c) 2012 by Mauro Carvalho Chehab <mchehab@redhat.com> 4 + * 5 + * Based on a previous patch from Remi Schwartz <remi.schwartz@gmail.com> 6 + * 7 + * This program is free software; you can redistribute it and/or modify 8 + * it under the terms of the GNU General Public License as published by 9 + * the Free Software Foundation; either version 2 of the License, or 10 + * (at your option) any later version. 11 + */ 12 + 13 + #include <media/rc-map.h> 14 + #include <linux/module.h> 15 + 16 + static struct rc_map_table asus_ps3_100[] = { 17 + { 0x081c, KEY_HOME }, /* home */ 18 + { 0x081e, KEY_TV }, /* tv */ 19 + { 0x0803, KEY_TEXT }, /* teletext */ 20 + { 0x0829, KEY_POWER }, /* close */ 21 + 22 + { 0x080b, KEY_RED }, /* red */ 23 + { 0x080d, KEY_YELLOW }, /* yellow */ 24 + { 0x0806, KEY_BLUE }, /* blue */ 25 + { 0x0807, KEY_GREEN }, /* green */ 26 + 27 + /* Keys 0 to 9 */ 28 + { 0x082a, KEY_0 }, 29 + { 0x0816, KEY_1 }, 30 + { 0x0812, KEY_2 }, 31 + { 0x0814, KEY_3 }, 32 + { 0x0836, KEY_4 }, 33 + { 0x0832, KEY_5 }, 34 + { 0x0834, KEY_6 }, 35 + { 0x080e, KEY_7 }, 36 + { 0x080a, KEY_8 }, 37 + { 0x080c, KEY_9 }, 38 + 39 + { 0x0815, KEY_VOLUMEUP }, 40 + { 0x0826, KEY_VOLUMEDOWN }, 41 + { 0x0835, KEY_CHANNELUP }, /* channel / program + */ 42 + { 0x0824, KEY_CHANNELDOWN }, /* channel / program - */ 43 + 44 + { 0x0808, KEY_UP }, 45 + { 0x0804, KEY_DOWN }, 46 + { 0x0818, KEY_LEFT }, 47 + { 0x0810, KEY_RIGHT }, 48 + { 0x0825, KEY_ENTER }, /* enter */ 49 + 50 + { 0x0822, KEY_EXIT }, /* back */ 51 + { 0x082c, KEY_AB }, /* recall */ 52 + 53 + { 0x0820, KEY_AUDIO }, /* TV audio */ 54 + { 0x0837, KEY_SCREEN }, /* snapshot */ 55 + { 0x082e, KEY_ZOOM }, /* full screen */ 56 + { 0x0802, KEY_MUTE }, /* mute */ 57 + 58 + { 0x0831, KEY_REWIND }, /* backward << */ 59 + { 0x0811, KEY_RECORD }, /* recording */ 60 + { 0x0809, KEY_STOP }, 61 + { 0x0805, KEY_FASTFORWARD }, /* forward >> */ 62 + { 0x0821, KEY_PREVIOUS }, /* rew */ 63 + { 0x081a, KEY_PAUSE }, /* pause */ 64 + { 0x0839, KEY_PLAY }, /* play */ 65 + { 0x0819, KEY_NEXT }, /* forward */ 66 + }; 67 + 68 + static struct rc_map_list asus_ps3_100_map = { 69 + .map = { 70 + .scan = asus_ps3_100, 71 + .size = ARRAY_SIZE(asus_ps3_100), 72 + .rc_type = RC_TYPE_RC5, 73 + .name = RC_MAP_ASUS_PS3_100, 74 + } 75 + }; 76 + 77 + static int __init init_rc_map_asus_ps3_100(void) 78 + { 79 + return rc_map_register(&asus_ps3_100_map); 80 + } 81 + 82 + static void __exit exit_rc_map_asus_ps3_100(void) 83 + { 84 + rc_map_unregister(&asus_ps3_100_map); 85 + } 86 + 87 + module_init(init_rc_map_asus_ps3_100) 88 + module_exit(exit_rc_map_asus_ps3_100) 89 + 90 + MODULE_LICENSE("GPL"); 91 + MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@redhat.com>");
+51
drivers/media/video/saa7134/saa7134-cards.c
··· 5080 5080 .gpio = 0x0200000, 5081 5081 }, 5082 5082 }, 5083 + [SAA7134_BOARD_ASUSTeK_PS3_100] = { 5084 + .name = "Asus My Cinema PS3-100", 5085 + .audio_clock = 0x00187de7, 5086 + .tuner_type = TUNER_PHILIPS_TDA8290, 5087 + .radio_type = UNSET, 5088 + .tuner_addr = ADDR_UNSET, 5089 + .radio_addr = ADDR_UNSET, 5090 + .tuner_config = 2, 5091 + .gpiomask = 1 << 21, 5092 + .mpeg = SAA7134_MPEG_DVB, 5093 + .inputs = {{ 5094 + .name = name_tv, 5095 + .vmux = 1, 5096 + .amux = TV, 5097 + .tv = 1, 5098 + }, { 5099 + .name = name_comp, 5100 + .vmux = 0, 5101 + .amux = LINE2, 5102 + }, { 5103 + .name = name_svideo, 5104 + .vmux = 8, 5105 + .amux = LINE2, 5106 + } }, 5107 + .radio = { 5108 + .name = name_radio, 5109 + .amux = TV, 5110 + .gpio = 0x0200000, 5111 + }, 5112 + }, 5083 5113 [SAA7134_BOARD_REAL_ANGEL_220] = { 5084 5114 .name = "Zogis Real Angel 220", 5085 5115 .audio_clock = 0x00187de7, ··· 6907 6877 .driver_data = SAA7134_BOARD_ASUSTeK_TIGER_3IN1, 6908 6878 }, { 6909 6879 .vendor = PCI_VENDOR_ID_PHILIPS, 6880 + .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 6881 + .subvendor = 0x1043, 6882 + .subdevice = 0x48cd, 6883 + .driver_data = SAA7134_BOARD_ASUSTeK_PS3_100, 6884 + }, { 6885 + .vendor = PCI_VENDOR_ID_PHILIPS, 6886 + .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 6887 + .subvendor = 0x17de, 6888 + .subdevice = 0x7128, 6889 + .driver_data = SAA7134_BOARD_ASUSTeK_TIGER_3IN1, 6890 + }, { 6891 + .vendor = PCI_VENDOR_ID_PHILIPS, 6910 6892 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 6911 6893 .subvendor = 0x17de, 6912 6894 .subdevice = 0x7128, ··· 7389 7347 case SAA7134_BOARD_KWORLD_TERMINATOR: 7390 7348 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS: 7391 7349 case SAA7134_BOARD_FLYDVBT_LR301: 7350 + case SAA7134_BOARD_ASUSTeK_PS3_100: 7392 7351 case SAA7134_BOARD_ASUSTeK_P7131_DUAL: 7393 7352 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA: 7394 7353 case SAA7134_BOARD_ASUSTeK_P7131_ANALOG: ··· 7851 7808 u8 data[] = { 0x3c, 0x33, 0x60}; 7852 7809 struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data, 7853 7810 .len = sizeof(data)}; 7811 + i2c_transfer(&dev->i2c_adap, &msg, 1); 7812 + break; 7813 + } 7814 + case SAA7134_BOARD_ASUSTeK_PS3_100: 7815 + { 7816 + u8 data[] = { 0x3c, 0x33, 0x60}; 7817 + struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data, 7818 + .len = sizeof(data)}; 7854 7819 i2c_transfer(&dev->i2c_adap, &msg, 1); 7855 7820 break; 7856 7821 }
+39
drivers/media/video/saa7134/saa7134-dvb.c
··· 881 881 .request_firmware = philips_tda1004x_request_firmware 882 882 }; 883 883 884 + static struct tda1004x_config asus_ps3_100_config = { 885 + .demod_address = 0x0b, 886 + .invert = 1, 887 + .invert_oclk = 0, 888 + .xtal_freq = TDA10046_XTAL_16M, 889 + .agc_config = TDA10046_AGC_TDA827X, 890 + .gpio_config = TDA10046_GP11_I, 891 + .if_freq = TDA10046_FREQ_045, 892 + .i2c_gate = 0x4b, 893 + .tuner_address = 0x61, 894 + .antenna_switch = 1, 895 + .request_firmware = philips_tda1004x_request_firmware 896 + }; 897 + 884 898 /* ------------------------------------------------------------------ 885 899 * special case: this card uses saa713x GPIO22 for the mode switch 886 900 */ ··· 1660 1646 if (dvb_attach(lnbp21_attach, fe0->dvb.frontend, 1661 1647 &dev->i2c_adap, 0, 0) == NULL) { 1662 1648 wprintk("%s: Asus Tiger 3in1, no lnbp21" 1649 + " found!\n", __func__); 1650 + goto dettach_frontend; 1651 + } 1652 + } 1653 + } 1654 + break; 1655 + case SAA7134_BOARD_ASUSTeK_PS3_100: 1656 + if (!use_frontend) { /* terrestrial */ 1657 + if (configure_tda827x_fe(dev, &asus_ps3_100_config, 1658 + &tda827x_cfg_2) < 0) 1659 + goto dettach_frontend; 1660 + } else { /* satellite */ 1661 + fe0->dvb.frontend = dvb_attach(tda10086_attach, 1662 + &flydvbs, &dev->i2c_adap); 1663 + if (fe0->dvb.frontend) { 1664 + if (dvb_attach(tda826x_attach, 1665 + fe0->dvb.frontend, 0x60, 1666 + &dev->i2c_adap, 0) == NULL) { 1667 + wprintk("%s: Asus My Cinema PS3-100, no " 1668 + "tda826x found!\n", __func__); 1669 + goto dettach_frontend; 1670 + } 1671 + if (dvb_attach(lnbp21_attach, fe0->dvb.frontend, 1672 + &dev->i2c_adap, 0, 0) == NULL) { 1673 + wprintk("%s: Asus My Cinema PS3-100, no lnbp21" 1663 1674 " found!\n", __func__); 1664 1675 goto dettach_frontend; 1665 1676 }
+7
drivers/media/video/saa7134/saa7134-input.c
··· 753 753 mask_keycode = 0xffff; 754 754 raw_decode = true; 755 755 break; 756 + case SAA7134_BOARD_ASUSTeK_PS3_100: 757 + ir_codes = RC_MAP_ASUS_PS3_100; 758 + mask_keydown = 0x0040000; 759 + mask_keyup = 0x0040000; 760 + mask_keycode = 0xffff; 761 + raw_decode = true; 762 + break; 756 763 case SAA7134_BOARD_ENCORE_ENLTV: 757 764 case SAA7134_BOARD_ENCORE_ENLTV_FM: 758 765 ir_codes = RC_MAP_ENCORE_ENLTV;
+1
drivers/media/video/saa7134/saa7134.h
··· 332 332 #define SAA7134_BOARD_BEHOLD_503FM 187 333 333 #define SAA7134_BOARD_SENSORAY811_911 188 334 334 #define SAA7134_BOARD_KWORLD_PC150U 189 335 + #define SAA7134_BOARD_ASUSTeK_PS3_100 190 335 336 336 337 #define SAA7134_MAXBOARDS 32 337 338 #define SAA7134_INPUT_MAX 8
+1
include/media/rc-map.h
··· 62 62 #define RC_MAP_ANYSEE "rc-anysee" 63 63 #define RC_MAP_APAC_VIEWCOMP "rc-apac-viewcomp" 64 64 #define RC_MAP_ASUS_PC39 "rc-asus-pc39" 65 + #define RC_MAP_ASUS_PS3_100 "rc-asus-ps3-100" 65 66 #define RC_MAP_ATI_TV_WONDER_HD_600 "rc-ati-tv-wonder-hd-600" 66 67 #define RC_MAP_ATI_X10 "rc-ati-x10" 67 68 #define RC_MAP_AVERMEDIA_A16D "rc-avermedia-a16d"