diff driver/pt1_tuner.c @ 69:272a8fba970b

added very rough support for PT2.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 26 Oct 2009 19:46:49 +0900
parents c701bbc532b4
children 28f25ec7f962
line wrap: on
line diff
--- a/driver/pt1_tuner.c	Sat Oct 24 20:40:11 2009 +0900
+++ b/driver/pt1_tuner.c	Mon Oct 26 19:46:49 2009 +0900
@@ -72,16 +72,27 @@
 	else if(cardtype == PT2) {
 		switch(tuner){
 		case TUNER_POWER_ON_RESET_ENABLE:
-			val |= (1 << BIT_TUNER) | (1 << BIT_FRONTEND);
+			val |= (1 << BIT_TUNER)
+				| (1 << BIT_33A1)
+				| (1 << BIT_33A2)
+				| (1 << BIT_5A_)
+				| (1 << BIT_5A1)
+				| (1 << BIT_5A2);
 			break;
 		case TUNER_POWER_ON_RESET_DISABLE:
-			val |= (1 << BIT_TUNER) | (1 << BIT_FRONTEND) | (1 << BIT_RESET);
+			val |= (1 << BIT_TUNER)
+				| (1 << BIT_RESET)
+				| (1 << BIT_33A1)
+				| (1 << BIT_33A2)
+				| (1 << BIT_5A_)
+				| (1 << BIT_5A1)
+				| (1 << BIT_5A2);
 			break ;
 		}
 	}
 	writel(val, (regs + CFG_REGS_ADDR));
 }
-static	int		init_isdb_s(void __iomem *regs, struct mutex *lock, __u32 addr)
+static	int		init_isdb_s(void __iomem *regs, int cardtype, struct mutex *lock, __u32 addr)
 {
 
 	WBLOCK	wk;
@@ -100,28 +111,34 @@
 		return -EIO ;
 	}
 	for(lp = 0 ; lp < MAX_ISDB_S_INIT ; lp++){
-		memcpy(&wk, isdb_s_initial[lp], sizeof(WBLOCK));
+		if(cardtype == PT1)
+			memcpy(&wk, isdb_s_initial_pt1[lp], sizeof(WBLOCK));
+		if(cardtype == PT2)
+			memcpy(&wk, isdb_s_initial_pt2[lp], sizeof(WBLOCK));
 		wk.addr = addr;
 		i2c_write(regs, lock, &wk);
 	}
 
 	return 0 ;
 }
-static	void	init_isdb_t(void __iomem *regs, struct mutex *lock, __u32 addr)
+static	void	init_isdb_t(void __iomem *regs, int cardtype, struct mutex *lock, __u32 addr)
 {
 	int		lp ;
 	WBLOCK	wk;
 
 	// ISDB-S/T½é´ü²½
 	for(lp = 0 ; lp < MAX_ISDB_T_INIT ; lp++){
-		memcpy(&wk, isdb_t_initial[lp], sizeof(WBLOCK));
+		if(cardtype == PT1)
+			memcpy(&wk, isdb_t_initial_pt1[lp], sizeof(WBLOCK));
+		if(cardtype == PT2)
+			memcpy(&wk, isdb_t_initial_pt2[lp], sizeof(WBLOCK));
 		wk.addr = addr;
 		i2c_write(regs, lock, &wk);
 	}
 
 
 }
-int		tuner_init(void __iomem *regs, struct mutex *lock, int tuner_no)
+int		tuner_init(void __iomem *regs, int cardtype, struct mutex *lock, int tuner_no)
 {
 
 	int		rc ;
@@ -136,11 +153,11 @@
 	wk.addr = tuner_info[tuner_no].isdb_s ;
 	i2c_write(regs, lock, &wk);
 
-	rc = init_isdb_s(regs, lock, tuner_info[tuner_no].isdb_s);
+	rc = init_isdb_s(regs, cardtype, lock, tuner_info[tuner_no].isdb_s);
 	if(rc < 0){
 		return rc ;
 	}
-	init_isdb_t(regs, lock, tuner_info[tuner_no].isdb_t);
+	init_isdb_t(regs, cardtype, lock, tuner_info[tuner_no].isdb_t);
 
 	memcpy(&wk, &isdb_s_init21, sizeof(WBLOCK));
 	wk.addr = tuner_info[tuner_no].isdb_s ;