2009-12-11 20:41:07 -03:00
/*
Mantis PCI bridge driver
Copyright ( C ) Manu Abraham ( abraham . manu @ 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 .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
2010-11-17 13:28:38 -03:00
# include <media/rc-core.h>
2009-12-11 20:41:07 -03:00
# include <linux/pci.h>
# include "dmxdev.h"
# include "dvbdev.h"
# include "dvb_demux.h"
# include "dvb_frontend.h"
# include "dvb_net.h"
# include "mantis_common.h"
# include "mantis_reg.h"
# include "mantis_uart.h"
2010-03-12 21:18:14 -03:00
# define MODULE_NAME "mantis_core"
2010-10-29 16:08:23 -03:00
# define RC_MAP_MANTIS "rc-mantis"
2010-03-12 21:18:14 -03:00
[media] rc: Name RC keymap tables as rc_map_table
Remote keytables had different names all over the place. Part of the fault
is due to a bad naming when rc subsystem was created, but there were lots
of old names that were still here.
Use a common standard for everything.
Patch generated by this script:
for i in `find drivers/staging -type f -name *.[ch]` `find include/media -type f -name *.[ch]` `find drivers/media -type f -name *.[ch]`; do sed s,ir_scancode,rc_map_table,g <$i >a && mv a $i; done
for i in `find drivers/staging -type f -name *.[ch]` `find include/media -type f -name *.[ch]` `find drivers/media -type f -name *.[ch]`; do sed s,ir_codes_,rc_map_,g <$i >a && mv a $i; done
for i in `find drivers/staging -type f -name *.[ch]` `find include/media -type f -name *.[ch]` `find drivers/media -type f -name *.[ch]`; do sed s,rc_key_map,rc_map_table,g <$i >a && mv a $i; done
for i in `find drivers/staging -type f -name *.[ch]` `find include/media -type f -name *.[ch]` `find drivers/media -type f -name *.[ch]`; do sed s,rc_map_table_size,rc_map_size,g <$i >a && mv a $i; done
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2010-11-17 15:46:09 -03:00
static struct rc_map_table mantis_ir_table [ ] = {
2009-12-11 20:41:07 -03:00
{ 0x29 , KEY_POWER } ,
{ 0x28 , KEY_FAVORITES } ,
{ 0x30 , KEY_TEXT } ,
2009-12-15 08:47:21 -03:00
{ 0x17 , KEY_INFO } , /* Preview */
2009-12-11 20:41:07 -03:00
{ 0x23 , KEY_EPG } ,
2009-12-15 08:47:21 -03:00
{ 0x3b , KEY_F22 } , /* Record List */
2009-12-11 20:41:07 -03:00
{ 0x3c , KEY_1 } ,
{ 0x3e , KEY_2 } ,
{ 0x39 , KEY_3 } ,
{ 0x36 , KEY_4 } ,
{ 0x22 , KEY_5 } ,
{ 0x20 , KEY_6 } ,
{ 0x32 , KEY_7 } ,
{ 0x26 , KEY_8 } ,
{ 0x24 , KEY_9 } ,
{ 0x2a , KEY_0 } ,
{ 0x33 , KEY_CANCEL } ,
{ 0x2c , KEY_BACK } ,
{ 0x15 , KEY_CLEAR } ,
{ 0x3f , KEY_TAB } ,
{ 0x10 , KEY_ENTER } ,
{ 0x14 , KEY_UP } ,
{ 0x0d , KEY_RIGHT } ,
{ 0x0e , KEY_DOWN } ,
{ 0x11 , KEY_LEFT } ,
{ 0x21 , KEY_VOLUMEUP } ,
{ 0x35 , KEY_VOLUMEDOWN } ,
{ 0x3d , KEY_CHANNELDOWN } ,
{ 0x3a , KEY_CHANNELUP } ,
{ 0x2e , KEY_RECORD } ,
{ 0x2b , KEY_PLAY } ,
{ 0x13 , KEY_PAUSE } ,
{ 0x25 , KEY_STOP } ,
{ 0x1f , KEY_REWIND } ,
{ 0x2d , KEY_FASTFORWARD } ,
2009-12-15 08:47:21 -03:00
{ 0x1e , KEY_PREVIOUS } , /* Replay |< */
{ 0x1d , KEY_NEXT } , /* Skip >| */
2009-12-11 20:41:07 -03:00
2009-12-15 08:47:21 -03:00
{ 0x0b , KEY_CAMERA } , /* Capture */
{ 0x0f , KEY_LANGUAGE } , /* SAP */
{ 0x18 , KEY_MODE } , /* PIP */
{ 0x12 , KEY_ZOOM } , /* Full screen */
2009-12-11 20:41:07 -03:00
{ 0x1c , KEY_SUBTITLE } ,
{ 0x2f , KEY_MUTE } ,
2009-12-15 08:47:21 -03:00
{ 0x16 , KEY_F20 } , /* L/R */
{ 0x38 , KEY_F21 } , /* Hibernate */
2009-12-11 20:41:07 -03:00
2009-12-15 08:47:21 -03:00
{ 0x37 , KEY_SWITCHVIDEOMODE } , /* A/V */
{ 0x31 , KEY_AGAIN } , /* Recall */
{ 0x1a , KEY_KPPLUS } , /* Zoom+ */
{ 0x19 , KEY_KPMINUS } , /* Zoom- */
2009-12-11 20:41:07 -03:00
{ 0x27 , KEY_RED } ,
{ 0x0C , KEY_GREEN } ,
{ 0x01 , KEY_YELLOW } ,
{ 0x00 , KEY_BLUE } ,
} ;
2010-11-17 15:56:53 -03:00
static struct rc_map_list ir_mantis_map = {
2010-10-29 16:08:23 -03:00
. map = {
. scan = mantis_ir_table ,
. size = ARRAY_SIZE ( mantis_ir_table ) ,
2010-11-17 14:20:52 -03:00
. rc_type = RC_TYPE_UNKNOWN ,
2010-10-29 16:08:23 -03:00
. name = RC_MAP_MANTIS ,
}
2009-12-11 20:41:07 -03:00
} ;
int mantis_input_init ( struct mantis_pci * mantis )
{
2010-10-29 16:08:23 -03:00
struct rc_dev * dev ;
2009-12-11 20:41:07 -03:00
int err ;
2010-11-17 15:56:53 -03:00
err = rc_map_register ( & ir_mantis_map ) ;
2010-10-29 16:08:23 -03:00
if ( err )
goto out ;
2009-12-11 20:41:07 -03:00
2010-10-29 16:08:23 -03:00
dev = rc_allocate_device ( ) ;
if ( ! dev ) {
dprintk ( MANTIS_ERROR , 1 , " Remote device allocation failed " ) ;
err = - ENOMEM ;
goto out_map ;
}
2009-12-11 20:41:07 -03:00
2010-10-29 16:08:23 -03:00
sprintf ( mantis - > input_name , " Mantis %s IR receiver " , mantis - > hwconfig - > model_name ) ;
sprintf ( mantis - > input_phys , " pci-%s/ir0 " , pci_name ( mantis - > pdev ) ) ;
2009-12-11 20:41:07 -03:00
2010-10-29 16:08:23 -03:00
dev - > input_name = mantis - > input_name ;
dev - > input_phys = mantis - > input_phys ;
dev - > input_id . bustype = BUS_PCI ;
dev - > input_id . vendor = mantis - > vendor_id ;
dev - > input_id . product = mantis - > device_id ;
dev - > input_id . version = 1 ;
dev - > driver_name = MODULE_NAME ;
dev - > map_name = RC_MAP_MANTIS ;
dev - > dev . parent = & mantis - > pdev - > dev ;
2009-12-11 20:41:07 -03:00
2010-10-29 16:08:23 -03:00
err = rc_register_device ( dev ) ;
2009-12-11 20:41:07 -03:00
if ( err ) {
dprintk ( MANTIS_ERROR , 1 , " IR device registration failed, ret = %d " , err ) ;
2010-10-29 16:08:23 -03:00
goto out_dev ;
2009-12-11 20:41:07 -03:00
}
2010-10-29 16:08:23 -03:00
mantis - > rc = dev ;
2009-12-11 20:41:07 -03:00
return 0 ;
2010-10-29 16:08:23 -03:00
out_dev :
rc_free_device ( dev ) ;
out_map :
2010-11-17 15:56:53 -03:00
rc_map_unregister ( & ir_mantis_map ) ;
2010-10-29 16:08:23 -03:00
out :
return err ;
2009-12-11 20:41:07 -03:00
}
int mantis_exit ( struct mantis_pci * mantis )
{
2010-10-29 16:08:23 -03:00
rc_unregister_device ( mantis - > rc ) ;
2010-11-17 15:56:53 -03:00
rc_map_unregister ( & ir_mantis_map ) ;
2009-12-11 20:41:07 -03:00
return 0 ;
}
2010-10-29 16:08:23 -03:00