• R/O
  • SSH
  • HTTPS

pt1dvr: 提交


Commit MetaInfo

修订版73 (tree)
时间2010-07-10 13:41:04
作者tomy

Log Message

for PT2 Support

更改概述

差异

--- current/driver/pt1_pci.c (revision 72)
+++ current/driver/pt1_pci.c (revision 73)
@@ -9,7 +9,6 @@
99 #include <linux/errno.h>
1010 #include <linux/pci.h>
1111 #include <linux/init.h>
12-#include <linux/interrupt.h>
1312
1413 #include <asm/system.h>
1514 #include <asm/io.h>
@@ -19,6 +18,9 @@
1918 #include <linux/mutex.h>
2019 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
2120 #include <linux/freezer.h>
21+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)
22+#include <linux/sched.h>
23+#endif
2224 #else
2325 #define set_freezable()
2426 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11)
@@ -60,7 +62,8 @@
6062 MODULE_PARM_DESC(debug, "LNB level (0:OFF 1:+11V 2:+15V)");
6163
6264 static struct pci_device_id pt1_pci_tbl[] = {
63- { 0x10ee, 0x211a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
65+ { 0x10ee, 0x211a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PT1 },
66+ { 0x10ee, 0x222a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PT2 },
6467 { 0, }
6568 };
6669 MODULE_DEVICE_TABLE(pci, pt1_pci_tbl);
@@ -95,6 +98,7 @@
9598 __u32 base_minor ;
9699 struct cdev cdev[MAX_CHANNEL];
97100 wait_queue_head_t dma_wait_q ;// for poll on reading
101+ int cardtype ;
98102 DMA_CONTROL *dmactl[DMA_RING_SIZE];
99103 PT1_CHANNEL *channel[MAX_CHANNEL];
100104 }PT1_DEVICE;
@@ -111,7 +115,7 @@
111115 int type ; // チャネルタイプ
112116 __u32 packet_size ; // パケットサイズ
113117 __u32 drop ; // パケットドロップ数
114- struct mutex lock ; // CH別mutex_lock用
118+ struct mutex lock ; // CH別mutex_lock用
115119 __u32 size ; // DMAされたサイズ
116120 __u32 maxsize ; // DMA用バッファサイズ
117121 __u32 bufsize ; // チャネルに割り振られたサイズ
@@ -181,7 +185,6 @@
181185 int lp2 ;
182186 int dma_channel ;
183187 int packet_pos ;
184- __u32 addr ;
185188 __u32 *dataptr ;
186189 __u32 *curdataptr ;
187190 __u32 val ;
@@ -340,6 +343,11 @@
340343 mutex_unlock(&device[lp]->lock);
341344 return -EIO ;
342345 }
346+ set_sleepmode(channel->ptr->regs, &channel->lock,
347+ channel->address, channel->type, TYPE_WAKEUP);
348+
349+ schedule_timeout_interruptible(msecs_to_jiffies(50));
350+
343351 channel->drop = 0 ;
344352 channel->valid = TRUE ;
345353 channel->overflow = 0 ;
@@ -379,6 +387,10 @@
379387 channel->req_dma = FALSE ;
380388 wake_up(&channel->ptr->dma_wait_q);
381389 }
390+ set_sleepmode(channel->ptr->regs, &channel->lock,
391+ channel->address, channel->type, TYPE_SLEEP);
392+
393+ schedule_timeout_interruptible(msecs_to_jiffies(50));
382394 mutex_unlock(&channel->ptr->lock);
383395 return 0;
384396 }
@@ -515,12 +527,12 @@
515527 return 0 ;
516528 case LNB_ENABLE:
517529 if(lnb){
518- settuner_reset(channel->ptr->regs, lnb, TUNER_POWER_ON_RESET_DISABLE);
530+ settuner_reset(channel->ptr->regs, lnb, TUNER_POWER_ON_RESET_DISABLE, channel->ptr->cardtype);
519531 }
520532 return 0 ;
521533 case LNB_DISABLE:
522534 if(lnb){
523- settuner_reset(channel->ptr->regs, LNB_OFF, TUNER_POWER_ON_RESET_DISABLE);
535+ settuner_reset(channel->ptr->regs, LNB_OFF, TUNER_POWER_ON_RESET_DISABLE, channel->ptr->cardtype);
524536 }
525537 return 0 ;
526538 }
@@ -652,6 +664,7 @@
652664 printk(KERN_ERR "PT1:out of memory !");
653665 return -ENOMEM ;
654666 }
667+ dev_conf->cardtype = ent->driver_data ;
655668 for (i = 0; i < DMA_RING_SIZE; i++) {
656669 dev_conf->dmactl[i] = kzalloc(sizeof(DMA_CONTROL), GFP_KERNEL);
657670 if(!dev_conf->dmactl[i]){
@@ -679,21 +692,21 @@
679692 goto out_err_regbase;
680693 }
681694 // 初期化処理
682- if(xc3s_init(dev_conf->regs)){
695+ if(xc3s_init(dev_conf->regs, dev_conf->cardtype)){
683696 printk(KERN_ERR "Error xc3s_init\n");
684697 goto out_err_fpga;
685698 }
686699 // チューナリセット
687- settuner_reset(dev_conf->regs, LNB_OFF, TUNER_POWER_ON_RESET_ENABLE);
700+ settuner_reset(dev_conf->regs, LNB_OFF, TUNER_POWER_ON_RESET_ENABLE, dev_conf->cardtype);
688701 schedule_timeout_interruptible(msecs_to_jiffies(50));
689702
690- settuner_reset(dev_conf->regs, LNB_OFF, TUNER_POWER_ON_RESET_DISABLE);
703+ settuner_reset(dev_conf->regs, LNB_OFF, TUNER_POWER_ON_RESET_DISABLE, dev_conf->cardtype);
691704 schedule_timeout_interruptible(msecs_to_jiffies(10));
692705 mutex_init(&dev_conf->lock);
693706
694707 // Tuner 初期化処理
695708 for(lp = 0 ; lp < MAX_TUNER ; lp++){
696- rc = tuner_init(dev_conf->regs, &dev_conf->lock, lp);
709+ rc = tuner_init(dev_conf->regs, &dev_conf->lock, lp, dev_conf->cardtype);
697710 if(rc < 0){
698711 printk(KERN_ERR "Error tuner_init\n");
699712 goto out_err_fpga;
@@ -851,7 +864,7 @@
851864 unregister_chrdev_region(dev_conf->dev, MAX_CHANNEL);
852865 writel(0xb0b0000, dev_conf->regs);
853866 writel(0, dev_conf->regs + 4);
854- settuner_reset(dev_conf->regs, LNB_OFF, TUNER_POWER_OFF);
867+ settuner_reset(dev_conf->regs, LNB_OFF, TUNER_POWER_OFF, dev_conf->cardtype);
855868 release_mem_region(dev_conf->mmio_start, dev_conf->mmio_len);
856869 iounmap(dev_conf->regs);
857870 for (i = 0; i < DMA_RING_SIZE; i++) {
--- current/driver/pt1_tuner_data.h (revision 72)
+++ current/driver/pt1_tuner_data.h (revision 73)
@@ -3,8 +3,6 @@
33 /***************************************************************************/
44 /* */
55 /***************************************************************************/
6-#define MAX_ISDB_S_INIT 19 // ISDB-S 初期化データ数
7-#define MAX_ISDB_T_INIT 16 // ISDB-S 初期化データ数
86 #define MAX_BS_CHANNEL 36 // 周波数テーブル数
97 #define MAX_ISDB_T_CHANNEL 113 // 周波数テーブル数(地デジタル)
108 #define MAX_BS_CHANNEL_PLL_COMMAND 3 // PLLロックするためのコマンド数
@@ -24,15 +22,18 @@
2422 /***************************************************************************/
2523 extern WBLOCK com_initdata; //初期化(共通)
2624 extern WBLOCK isdb_s_init1; //ISDB-S先頭
25+extern WBLOCK isdb_s_init_pt2_1; //ISDB-S先頭
2726 extern WBLOCK isdb_s_init21; //ISDB-S最終
2827 extern WBLOCK isdb_t_init17; //ISDB-T最終
2928 extern WBLOCK bs_pll_lock; //ISDB-S PLLロック確認
30-extern WBLOCK *isdb_s_initial[MAX_ISDB_S_INIT];
31-extern WBLOCK *isdb_t_initial[MAX_ISDB_T_INIT];
29+extern WBLOCK *isdb_s_initial[];
30+extern WBLOCK *isdb_s_initial_pt2[];
31+extern WBLOCK *isdb_t_initial[];
32+extern WBLOCK *isdb_t_initial_pt2[];
3233 /***************************************************************************/
3334 /* BS用データ定義 */
3435 /***************************************************************************/
35-extern WBLOCK_BS_PLL bs_pll[MAX_BS_CHANNEL] ; // 周波数テーブル
36+extern WBLOCK_BS_PLL bs_pll[] ; // 周波数テーブル
3637 extern WBLOCK *bs_get_ts_id[(MAX_BS_TS_ID / 2)] ; // TS-ID取得テーブル
3738 extern WBLOCK bs_tmcc_get_1; // TMCC取得テーブル
3839 extern WBLOCK bs_tmcc_get_2; // TMCC取得テーブル
@@ -49,7 +50,7 @@
4950 /***************************************************************************/
5051 extern WBLOCK isdb_t_pll_base; // 地デジ用周波数テーブルbase
5152 extern WBLOCK isdb_t_pll_lock;
52-extern WBLOCK_BS_PLL isdb_t_info[MAX_ISDB_T_INFO_LEN];
53+extern WBLOCK_BS_PLL isdb_t_info[];
5354 extern WBLOCK isdb_t_check_tune;
5455 extern WBLOCK isdb_t_tune_read;
5556 extern WBLOCK isdb_t_tmcc_read_1;
@@ -65,7 +66,9 @@
6566 /* 省電力用データ定義 */
6667 /***************************************************************************/
6768 extern WBLOCK isdb_s_wake;
69+extern WBLOCK isdb_s_wake2;
6870 extern WBLOCK isdb_t_wake;
71+extern WBLOCK isdb_t_wake2;
6972
7073 extern WBLOCK isdb_s_sleep;
7174 extern WBLOCK isdb_t_sleep;
--- current/driver/pt1_i2c.c (revision 72)
+++ current/driver/pt1_i2c.c (revision 73)
@@ -9,6 +9,12 @@
99 #include <linux/interrupt.h>
1010 #include <linux/mutex.h>
1111
12+#include <linux/version.h>
13+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)
14+#include <linux/sched.h>
15+#endif
16+
17+
1218 #include <asm/system.h>
1319 #include <asm/io.h>
1420 #include <asm/irq.h>
@@ -17,6 +23,7 @@
1723 #include "pt1_com.h"
1824 #include "pt1_i2c.h"
1925 #include "pt1_pci.h"
26+#include "pt1_tuner.h"
2027
2128 #define PROGRAM_ADDRESS 1024
2229 static int state = STATE_STOP ;
@@ -40,12 +47,13 @@
4047 writel(val, regs + FIFO_ADDR);
4148 }
4249
43-int xc3s_init(void __iomem *regs)
50+int xc3s_init(void __iomem *regs, int cardtype)
4451 {
4552
4653 __u32 val ;
4754 int lp ;
4855 int rc ;
56+ int phase ;
4957
5058 /*
5159 val = (1 << 19) | (1 << 27) | (1 << 16) | (1 << 24) | (1 << 17) | (1 << 25);
@@ -98,7 +106,16 @@
98106 if(rc){
99107 return -EIO ;
100108 }
101- for(lp = 0 ; lp < XC3S_PCI_CLOCK ; lp++){
109+ switch(cardtype) {
110+ case PT1:
111+ phase = XC3S_PCI_CLOCK;
112+ break;
113+ case PT2:
114+ phase = XC3S_PCI_CLOCK_PT2;
115+ break;
116+ }
117+
118+ for(lp = 0 ; lp < phase ; lp++){
102119 rc = i2c_lock_one(regs, WRITE_RAM_ENABLE, RAM_SHIFT);
103120 if(rc < 0){
104121 printk(KERN_ERR "PT1:LOCK FALUT\n");
--- current/driver/pt1_tuner.c (revision 72)
+++ current/driver/pt1_tuner.c (revision 73)
@@ -47,22 +47,52 @@
4747 {112, 0x80E4} // 101〜112迄
4848 };
4949
50-void settuner_reset(void __iomem *regs, __u32 lnb, __u32 tuner)
50+void settuner_reset(void __iomem *regs, __u32 lnb, __u32 tuner, int cardtype)
5151 {
52- __u32 val = 0;
52+ __u32 val = TUNER_POWER_OFF;
5353 switch(lnb){
54- case LNB_11V: val = (1 << BIT_LNB_DOWN); break ;
55- case LNB_15V: val = (1 << BIT_LNB_UP) | (1 << BIT_LNB_DOWN) ; break ;
54+ case LNB_11V:
55+ val = (1 << BIT_LNB_DOWN);
56+ break ;
57+ case LNB_15V:
58+ val = (1 << BIT_LNB_UP) | (1 << BIT_LNB_DOWN);
59+ break ;
5660 }
5761
58- switch(tuner){
59- case TUNER_POWER_ON_RESET_ENABLE: val |= (1 << BIT_TUNER) ; break ;
60- case TUNER_POWER_ON_RESET_DISABLE: val |= (1 << BIT_TUNER) | (1 << BIT_RESET) ; break ;
62+ if(cardtype == PT1) {
63+ switch(tuner){
64+ case TUNER_POWER_ON_RESET_ENABLE:
65+ val |= (1 << BIT_TUNER);
66+ break;
67+ case TUNER_POWER_ON_RESET_DISABLE:
68+ val |= (1 << BIT_TUNER) | (1 << BIT_RESET);
69+ break ;
70+ }
71+ } else if(cardtype == PT2) {
72+ switch(tuner){
73+ case TUNER_POWER_ON_RESET_ENABLE:
74+ val |= (1 << BIT_TUNER)
75+ | (1 << BIT_33A1)
76+ | (1 << BIT_33A2)
77+ | (1 << BIT_5A_)
78+ | (1 << BIT_5A1)
79+ | (1 << BIT_5A2);
80+ break;
81+ case TUNER_POWER_ON_RESET_DISABLE:
82+ val |= (1 << BIT_TUNER)
83+ | (1 << BIT_RESET)
84+ | (1 << BIT_33A1)
85+ | (1 << BIT_33A2)
86+ | (1 << BIT_5A_)
87+ | (1 << BIT_5A1)
88+ | (1 << BIT_5A2);
89+ break ;
90+ }
6191 }
92+ writel(val, (regs + CFG_REGS_ADDR));
6293
63- writel(val, (regs + 4));
6494 }
65-static int init_isdb_s(void __iomem *regs, struct mutex *lock, __u32 addr)
95+static int init_isdb_s(void __iomem *regs, struct mutex *lock, __u32 addr, int cardtype)
6696 {
6797
6898 WBLOCK wk;
@@ -72,37 +102,62 @@
72102 // ISDB-S/T初期化
73103 memcpy(&wk, &com_initdata, sizeof(WBLOCK));
74104
75- // 初期化1(なぜかREADなので)
76- memcpy(&wk, &isdb_s_init1, sizeof(WBLOCK));
77- wk.addr = addr;
78- val = i2c_read(regs, lock, &wk, 1);
79- if((val & 0xff) != 0x41){
105+ if(cardtype == PT1){
106+ // 初期化1(なぜかREADなので)
107+ memcpy(&wk, &isdb_s_init1, sizeof(WBLOCK));
108+ wk.addr = addr;
109+ val = i2c_read(regs, lock, &wk, 1);
80110 printk(KERN_INFO "PT1:ISDB-S Read(%x)\n", val);
111+ if((val & 0xff) != 0x41){
112+ return -EIO ;
113+ }
114+ for(lp = 0 ; isdb_s_initial[lp] != NULL ; lp++){
115+ memcpy(&wk, isdb_s_initial[lp], sizeof(WBLOCK));
116+ wk.addr = addr;
117+ i2c_write(regs, lock, &wk);
118+ }
119+ }else if(cardtype == PT2){
120+ // 初期化1(なぜかREADなので)
121+ memcpy(&wk, &isdb_s_init_pt2_1, sizeof(WBLOCK));
122+ wk.addr = addr;
123+ val = i2c_read(regs, lock, &wk, 1);
124+ printk(KERN_INFO "PT1:ISDB-S Read(%x)\n", val);
125+ if((val & 0xff) != 0x52){
126+ return -EIO ;
127+ }
128+ for(lp = 0 ; isdb_s_initial_pt2[lp] != NULL ; lp++){
129+ memcpy(&wk, isdb_s_initial_pt2[lp], sizeof(WBLOCK));
130+ wk.addr = addr;
131+ i2c_write(regs, lock, &wk);
132+ }
133+ }else{
81134 return -EIO ;
82135 }
83- for(lp = 0 ; lp < MAX_ISDB_S_INIT ; lp++){
84- memcpy(&wk, isdb_s_initial[lp], sizeof(WBLOCK));
85- wk.addr = addr;
86- i2c_write(regs, lock, &wk);
87- }
88-
89136 return 0 ;
90137 }
91-static void init_isdb_t(void __iomem *regs, struct mutex *lock, __u32 addr)
138+static void init_isdb_t(void __iomem *regs, struct mutex *lock, __u32 addr, int cardtype)
92139 {
93140 int lp ;
94141 WBLOCK wk;
95142
96- // ISDB-S/T初期化
97- for(lp = 0 ; lp < MAX_ISDB_T_INIT ; lp++){
98- memcpy(&wk, isdb_t_initial[lp], sizeof(WBLOCK));
99- wk.addr = addr;
100- i2c_write(regs, lock, &wk);
143+ if(cardtype == PT1){
144+ // ISDB-S/T初期化
145+ for(lp = 0 ; isdb_t_initial[lp] != NULL ; lp++){
146+ memcpy(&wk, isdb_t_initial[lp], sizeof(WBLOCK));
147+ wk.addr = addr;
148+ i2c_write(regs, lock, &wk);
149+ }
150+ }else if(cardtype == PT2){
151+ // ISDB-S/T初期化
152+ for(lp = 0 ; isdb_t_initial_pt2[lp] != NULL ; lp++){
153+ memcpy(&wk, isdb_t_initial_pt2[lp], sizeof(WBLOCK));
154+ wk.addr = addr;
155+ i2c_write(regs, lock, &wk);
156+ }
101157 }
102158
103-
104159 }
105-int tuner_init(void __iomem *regs, struct mutex *lock, int tuner_no)
160+int tuner_init(void __iomem *regs, struct mutex *lock, int tuner_no, int cardtype)
106161 {
107162
108163 int rc ;
@@ -117,11 +172,11 @@
117172 wk.addr = tuner_info[tuner_no].isdb_s ;
118173 i2c_write(regs, lock, &wk);
119174
120- rc = init_isdb_s(regs, lock, tuner_info[tuner_no].isdb_s);
175+ rc = init_isdb_s(regs, lock, tuner_info[tuner_no].isdb_s, cardtype);
121176 if(rc < 0){
122177 return rc ;
123178 }
124- init_isdb_t(regs, lock, tuner_info[tuner_no].isdb_t);
179+ init_isdb_t(regs, lock, tuner_info[tuner_no].isdb_t, cardtype);
125180
126181 memcpy(&wk, &isdb_s_init21, sizeof(WBLOCK));
127182 wk.addr = tuner_info[tuner_no].isdb_s ;
@@ -136,33 +191,46 @@
136191 void set_sleepmode(void __iomem *regs, struct mutex *lock, int address, int tuner_type, int type)
137192 {
138193 WBLOCK wk;
194+ if(type == TYPE_WAKEUP){
195+ switch(tuner_type){
196+ case CHANNEL_TYPE_ISDB_S:
197+ printk(KERN_INFO "PT1:ISDB-S Wakeup\n");
198+ memcpy(&wk, &isdb_s_wake, sizeof(WBLOCK));
199+ wk.addr = address;
200+ i2c_write(regs, lock, &wk);
139201
140- if(type == TYPE_WAKEUP){
202+ memcpy(&wk, &isdb_s_wake2, sizeof(WBLOCK));
203+ wk.addr = address;
204+ i2c_write(regs, lock, &wk);
205+ break ;
206+ case CHANNEL_TYPE_ISDB_T:
207+ printk(KERN_INFO "PT1:ISDB-T Wakeup\n");
208+ memcpy(&wk, &isdb_t_wake, sizeof(WBLOCK));
209+ wk.addr = address;
210+ i2c_write(regs, lock, &wk);
211+
212+ memcpy(&wk, &isdb_t_wake2, sizeof(WBLOCK));
213+ wk.addr = address;
214+ i2c_write(regs, lock, &wk);
215+ break ;
216+ }
217+ }
218+ if(type == TYPE_SLEEP){
141219 switch(tuner_type){
142- case CHANNEL_TYPE_ISDB_S:memcpy(&wk, &isdb_s_wake, sizeof(WBLOCK));break ;
143- case CHANNEL_TYPE_ISDB_T:memcpy(&wk, &isdb_t_wake, sizeof(WBLOCK));break ;
220+ case CHANNEL_TYPE_ISDB_S:
221+ printk(KERN_INFO "PT1:ISDB-S Sleep\n");
222+ memcpy(&wk, &isdb_s_sleep, sizeof(WBLOCK));
223+ wk.addr = address;
224+ i2c_write(regs, lock, &wk);
225+ break ;
226+ case CHANNEL_TYPE_ISDB_T:
227+ printk(KERN_INFO "PT1:ISDB-T Sleep\n");
228+ memcpy(&wk, &isdb_t_sleep, sizeof(WBLOCK));
229+ wk.addr = address;
230+ i2c_write(regs, lock, &wk);
231+ break ;
144232 }
145- wk.addr = address ;
146- i2c_write(regs, lock, &wk);
147233 }
148- switch(tuner_type){
149- case CHANNEL_TYPE_ISDB_S:
150- printk(KERN_INFO "PT1:ISDB-S Sleep\n");
151- memcpy(&wk, &isdb_s_sleep, sizeof(WBLOCK));
152- if(type == TYPE_WAKEUP){
153- wk.value[1] = 0x01 ;
154- }
155- break ;
156- case CHANNEL_TYPE_ISDB_T:
157- printk(KERN_INFO "PT1:ISDB-T Sleep\n");
158- memcpy(&wk, &isdb_t_sleep, sizeof(WBLOCK));
159- if(type == TYPE_WAKEUP){
160- wk.value[1] = 0x90 ;
161- }
162- break ;
163- }
164- wk.addr = address;
165- i2c_write(regs, lock, &wk);
166234 }
167235
168236 int bs_frequency(void __iomem *regs, struct mutex *lock, int addr, int channel)
--- current/driver/pt1_pci.h (revision 72)
+++ current/driver/pt1_pci.h (revision 73)
@@ -14,7 +14,9 @@
1414 #define FIFO_ADDR 0x10 // FIFOに書くアドレス
1515 #define DMA_ADDR 0x14 // DMA設定に書くアドレス
1616 #define TS_TEST_ENABLE_ADDR 0x08 //
17+#define CFG_REGS_ADDR 0x04
1718
19+
1820 /***************************************************************************/
1921 /* DMAエラー定義 */
2022 /***************************************************************************/
--- current/driver/pt1_i2c.h (revision 72)
+++ current/driver/pt1_i2c.h (revision 73)
@@ -52,6 +52,8 @@
5252 #define READ_UNLOCK (1 << 31)
5353
5454 #define XC3S_PCI_CLOCK (512 / 4)
55+#define XC3S_PCI_CLOCK_PT2 (166)
56+
5557 /***************************************************************************/
5658 /* I2Cアドレス定義 */
5759 /***************************************************************************/
@@ -74,7 +76,7 @@
7476 /* 関数定義 */
7577 /***************************************************************************/
7678 //extern __u32 makei2c(void __iomem *, __u32, __u32, __u32, __u32, __u32, __u32);
77-extern int xc3s_init(void __iomem *);
79+extern int xc3s_init(void __iomem *, int);
7880 extern void SetStream(void __iomem *, __u32, __u32);
7981 extern void blockwrite(void __iomem *, WBLOCK *);
8082 extern void i2c_write(void __iomem *, struct mutex *, WBLOCK *);
--- current/driver/pt1_tuner.h (revision 72)
+++ current/driver/pt1_tuner.h (revision 73)
@@ -4,6 +4,7 @@
44 /* チューナ状態定義 */
55 /***************************************************************************/
66 // SLEEPモード設定
7+
78 enum {
89 TYPE_SLEEP,
910 TYPE_WAKEUP
@@ -14,9 +15,15 @@
1415 BIT_TUNER,
1516 BIT_LNB_UP,
1617 BIT_LNB_DOWN,
17- BIT_RESET
18+ BIT_RESET,
19+ BIT_33A1,
20+ BIT_33A2,
21+ BIT_5A_,
22+ BIT_5A1,
23+ BIT_5A2
1824 };
1925
26+
2027 // LNBパワー設定
2128 enum{
2229 LNB_OFF, // LNB OFF
@@ -29,6 +36,11 @@
2936 TUNER_POWER_ON_RESET_ENABLE, // オン/イネーブル
3037 TUNER_POWER_ON_RESET_DISABLE // オン/ディセーブル
3138 };
39+// Card Type
40+enum {
41+ PT1,
42+ PT2,
43+};
3244 /***************************************************************************/
3345 /* チューナ状態定義 */
3446 /***************************************************************************/
@@ -98,8 +110,8 @@
98110 /***************************************************************************/
99111 /* チューナ状態定義 */
100112 /***************************************************************************/
101-extern void settuner_reset(void __iomem *, __u32, __u32);
102-extern int tuner_init(void __iomem *, struct mutex *, int);
113+extern void settuner_reset(void __iomem *, __u32, __u32, int);
114+extern int tuner_init(void __iomem *, struct mutex *, int, int);
103115 extern void set_sleepmode(void __iomem *, struct mutex *, int, int, int);
104116
105117 extern int bs_tune(void __iomem *, struct mutex *, int, int, ISDB_S_TMCC *);
--- current/driver/pt1_tuner_data.c (revision 72)
+++ current/driver/pt1_tuner_data.c (revision 73)
@@ -21,42 +21,49 @@
2121 /* 省電力テーブル */
2222 /***************************************************************************/
2323 /*
24-ISDB-Sの省電力設定
25- C0 C1
26-送信:7Bit Address Mode(1b/19):17:00
27-ISDB-Sの省電力無効(2コマンド)
28- C0 C1
29-送信:7Bit Address Mode(1B/19):fe:c0:f0:04
30-送信:7Bit Address Mode(1B/19):17:01
24+ISDB-S省電力
25+送信:7Bit Address Mode(1b):17:01
26+
27+ISDB-S省電力OFF
28+送信:7Bit Address Mode(1b):fe:c0:e4:fe:c0:f4:d6
29+送信:7Bit Address Mode(1b):17:00
3130 */
32-WBLOCK isdb_s_wake = {
31+WBLOCK isdb_s_sleep = {
32+ 0,
33+ 2,
34+ {0x17, 0x01}
35+};
36+WBLOCK isdb_s_wake = {
3337 0,
34- 4,
35- {0xFE, 0xC0, 0xF0, 0x04}
36-};
37-WBLOCK isdb_s_sleep = {
38- 0,
39- 2,
38+ 7,
39+ {0xFE, 0xC0, 0xE4, 0xFE, 0xC0, 0xF4, 0xD6}
40+};
41+WBLOCK isdb_s_wake2 = {
42+ 0,
43+ 2,
4044 {0x17, 0x00}
41-};
42-/*
43-ISDB-Tの省電力設定
44- C0 C1
45-送信:7Bit Address Mode(1A/18):03:80
46-
47-ISDB-Tの省電力無効(2コマンド)
48- C0 C1
49-送信:7Bit Address Mode(1A/18):fe:c2
50-送信:7Bit Address Mode(1A/18):03:90
45+};
46+
47+/*
48+ISDB-T省電力
49+送信:7Bit Address Mode(1a):03:90
50+
51+ISDB-T省電力OFF
52+送信:7Bit Address Mode(1a):fe:c2:0e:7f:c1:84:80
53+送信:7Bit Address Mode(1a):03:80
5154 */
52-
53-WBLOCK isdb_t_wake = {
55+WBLOCK isdb_t_sleep = {
5456 0,
5557 2,
56- {0xFE, 0xC2}
58+ {0x03, 0x90}
5759 };
58-WBLOCK isdb_t_sleep = {
60+WBLOCK isdb_t_wake = {
5961 0,
62+ 7,
63+ {0xFE, 0xC2, 0x0E, 0x7F, 0xC1, 0x84, 0x80}
64+};
65+WBLOCK isdb_t_wake2 = {
66+ 0,
6067 2,
6168 {0x03, 0x80}
6269 };
@@ -73,6 +80,12 @@
7380 /***************************************************************************/
7481 /* 初期化データ定義(ISDB-S) */
7582 /***************************************************************************/
83+// ISDB-S初期化値(PT2)1
84+WBLOCK isdb_s_init_pt2_1 ={
85+ 0,
86+ 1,
87+ {0x0f}
88+};
7689 // ISDB-S初期化値1
7790 WBLOCK isdb_s_init1 ={
7891 0,
@@ -309,24 +322,43 @@
309322 /***************************************************************************/
310323 /* 初期化データブロック定義(ISDB-S) */
311324 /***************************************************************************/
312-WBLOCK *isdb_s_initial[MAX_ISDB_S_INIT] =
325+WBLOCK *isdb_s_initial[] =
313326 {
314327 &isdb_s_init2, &isdb_s_init3, &isdb_s_init4, &isdb_s_init5,
315328 &isdb_s_init6, &isdb_s_init7, &isdb_s_init8, &isdb_s_init9,
316329 &isdb_s_init10, &isdb_s_init11, &isdb_s_init12, &isdb_s_init13,
317330 &isdb_s_init14, &isdb_s_init15, &isdb_s_init16, &isdb_s_init17,
318- &isdb_s_init18, &isdb_s_init19, &isdb_s_init20
331+ &isdb_s_init18, &isdb_s_init19, &isdb_s_init20, NULL
319332 };
333+WBLOCK *isdb_s_initial_pt2[] =
334+{
335+ &isdb_s_init2, &isdb_s_init4, &isdb_s_init5,
336+ &isdb_s_init6, &isdb_s_init7, &isdb_s_init8, &isdb_s_init9,
337+ &isdb_s_init10, &isdb_s_init11, &isdb_s_init12, &isdb_s_init13,
338+ &isdb_s_init14, &isdb_s_init15, &isdb_s_init16, &isdb_s_init17,
339+ &isdb_s_init18, &isdb_s_init19, &isdb_s_init20, NULL
340+};
341+
320342 /***************************************************************************/
321343 /* 初期化データブロック定義(ISDB-T) */
322344 /***************************************************************************/
323-WBLOCK *isdb_t_initial[MAX_ISDB_T_INIT] =
345+WBLOCK *isdb_t_initial[] =
324346 {
325347 &isdb_t_init1, &isdb_t_init2, &isdb_t_init3, &isdb_t_init4,
326348 &isdb_t_init5, &isdb_t_init6, &isdb_t_init7, &isdb_t_init8,
327349 &isdb_t_init9, &isdb_t_init10, &isdb_t_init11, &isdb_t_init12,
328- &isdb_t_init13, &isdb_t_init14, &isdb_t_init15, &isdb_t_init16
350+ &isdb_t_init13, &isdb_t_init14, &isdb_t_init15, &isdb_t_init16,
351+ NULL
329352 };
353+WBLOCK *isdb_t_initial_pt2[] =
354+{
355+ &isdb_t_init1, &isdb_t_init3, &isdb_t_init4,
356+ &isdb_t_init5, &isdb_t_init6,
357+ &isdb_t_init10, &isdb_t_init11, &isdb_t_init12,
358+ &isdb_t_init13, &isdb_t_init14, &isdb_t_init15, &isdb_t_init16,
359+ NULL
360+};
361+
330362 /***************************************************************************/
331363 /* 地上デジタル用データ */
332364 /***************************************************************************/
@@ -1029,7 +1061,7 @@
10291061 /***************************************************************************/
10301062 /* BS-周波数テーブル */
10311063 /***************************************************************************/
1032-WBLOCK_BS_PLL bs_pll[MAX_BS_CHANNEL] = {
1064+WBLOCK_BS_PLL bs_pll[] = {
10331065 {&bs_1_step1, &bs_com_step2, &bs_1_step3},
10341066 {&bs_3_step1, &bs_com_step2, &bs_3_step3},
10351067 {&bs_5_step1, &bs_com_step2, &bs_5_step3},
@@ -1065,7 +1097,8 @@
10651097 {&nd_17_step1, &bs_com_step2, &nd_17_step3},
10661098 {&nd_19_step1, &bs_com_step2, &nd_19_step3},
10671099 {&nd_21_step1, &bs_com_step2, &nd_21_step3},
1068- {&nd_23_step1, &bs_com_step2, &nd_23_step3}
1100+ {&nd_23_step1, &bs_com_step2, &nd_23_step3},
1101+ {NULL, NULL, NULL}
10691102 };
10701103 WBLOCK *bs_get_ts_id[(MAX_BS_TS_ID / 2)] = {
10711104 &bs_get_slot_ts_id_1,
Show on old repository browser