cx231xx-dvb.c (858a0d7eb5300b5f620d98ab3c4b96c9d5f19131) cx231xx-dvb.c (a096fd6492ea676570e621d972f68ff03042d0c4)
1/*
2 DVB device driver for cx231xx
3
4 Copyright (C) 2008 <srinivasa.deevi at conexant dot com>
5 Based on em28xx driver
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

--- 19 unchanged lines hidden (view full) ---

28#include <media/tuner.h>
29
30#include "xc5000.h"
31#include "s5h1432.h"
32#include "tda18271.h"
33#include "s5h1411.h"
34#include "lgdt3305.h"
35#include "si2165.h"
1/*
2 DVB device driver for cx231xx
3
4 Copyright (C) 2008 <srinivasa.deevi at conexant dot com>
5 Based on em28xx driver
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

--- 19 unchanged lines hidden (view full) ---

28#include <media/tuner.h>
29
30#include "xc5000.h"
31#include "s5h1432.h"
32#include "tda18271.h"
33#include "s5h1411.h"
34#include "lgdt3305.h"
35#include "si2165.h"
36#include "si2168.h"
36#include "mb86a20s.h"
37#include "si2157.h"
38#include "lgdt3306a.h"
39
40MODULE_DESCRIPTION("driver for cx231xx based DVB cards");
41MODULE_AUTHOR("Srinivasa Deevi <srinivasa.deevi@conexant.com>");
42MODULE_LICENSE("GPL");
43

--- 900 unchanged lines hidden (view full) ---

944 /* define general-purpose callback pointer */
945 dvb->frontend->callback = cx231xx_tuner_callback;
946
947 dvb_attach(tda18271_attach, dev->dvb->frontend,
948 0x60, tuner_i2c,
949 &pv_tda18271_config);
950 break;
951
37#include "mb86a20s.h"
38#include "si2157.h"
39#include "lgdt3306a.h"
40
41MODULE_DESCRIPTION("driver for cx231xx based DVB cards");
42MODULE_AUTHOR("Srinivasa Deevi <srinivasa.deevi@conexant.com>");
43MODULE_LICENSE("GPL");
44

--- 900 unchanged lines hidden (view full) ---

945 /* define general-purpose callback pointer */
946 dvb->frontend->callback = cx231xx_tuner_callback;
947
948 dvb_attach(tda18271_attach, dev->dvb->frontend,
949 0x60, tuner_i2c,
950 &pv_tda18271_config);
951 break;
952
953 case CX231XX_BOARD_EVROMEDIA_FULL_HYBRID_FULLHD:
954 {
955 struct si2157_config si2157_config = {};
956 struct si2168_config si2168_config = {};
957 struct i2c_board_info info = {};
958 struct i2c_client *client;
959 struct i2c_adapter *adapter;
960
961 /* attach demodulator chip */
962 si2168_config.ts_mode = SI2168_TS_SERIAL; /* from *.inf file */
963 si2168_config.fe = &dev->dvb->frontend;
964 si2168_config.i2c_adapter = &adapter;
965 si2168_config.ts_clock_inv = true;
966
967 strlcpy(info.type, "si2168", sizeof(info.type));
968 info.addr = dev->board.demod_addr;
969 info.platform_data = &si2168_config;
970
971 request_module(info.type);
972 client = i2c_new_device(demod_i2c, &info);
973
974 if (client == NULL || client->dev.driver == NULL) {
975 result = -ENODEV;
976 goto out_free;
977 }
978
979 if (!try_module_get(client->dev.driver->owner)) {
980 i2c_unregister_device(client);
981 result = -ENODEV;
982 goto out_free;
983 }
984
985 dvb->i2c_client_demod = client;
986
987 /* attach tuner chip */
988 si2157_config.fe = dev->dvb->frontend;
989#ifdef CONFIG_MEDIA_CONTROLLER_DVB
990 si2157_config.mdev = dev->media_dev;
991#endif
992 si2157_config.if_port = 1;
993 si2157_config.inversion = false;
994
995 memset(&info, 0, sizeof(info));
996 strlcpy(info.type, "si2157", sizeof(info.type));
997 info.addr = dev->board.tuner_addr;
998 info.platform_data = &si2157_config;
999
1000 request_module(info.type);
1001 client = i2c_new_device(tuner_i2c, &info);
1002
1003 if (client == NULL || client->dev.driver == NULL) {
1004 module_put(dvb->i2c_client_demod->dev.driver->owner);
1005 i2c_unregister_device(dvb->i2c_client_demod);
1006 result = -ENODEV;
1007 goto out_free;
1008 }
1009
1010 if (!try_module_get(client->dev.driver->owner)) {
1011 i2c_unregister_device(client);
1012 module_put(dvb->i2c_client_demod->dev.driver->owner);
1013 i2c_unregister_device(dvb->i2c_client_demod);
1014 result = -ENODEV;
1015 goto out_free;
1016 }
1017
1018 dev->cx231xx_reset_analog_tuner = NULL;
1019 dev->dvb->i2c_client_tuner = client;
1020 break;
1021 }
952 default:
953 dev_err(dev->dev,
954 "%s/2: The frontend of your DVB/ATSC card isn't supported yet\n",
955 dev->name);
956 break;
957 }
958 if (NULL == dvb->frontend) {
959 dev_err(dev->dev,

--- 59 unchanged lines hidden ---
1022 default:
1023 dev_err(dev->dev,
1024 "%s/2: The frontend of your DVB/ATSC card isn't supported yet\n",
1025 dev->name);
1026 break;
1027 }
1028 if (NULL == dvb->frontend) {
1029 dev_err(dev->dev,

--- 59 unchanged lines hidden ---