Mercurial > pt1
diff driver/pt1_i2c.c @ 142:1e7718cc2556
use utf-8 instead of euc-jp
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Wed, 30 Apr 2014 11:26:24 +0900 |
parents | 2dc994610477 |
children |
line wrap: on
line diff
--- a/driver/pt1_i2c.c Tue Oct 01 16:36:12 2013 +0900 +++ b/driver/pt1_i2c.c Wed Apr 30 11:26:24 2014 +0900 @@ -1,5 +1,5 @@ /***************************************************************************/ -/* I2C */ +/* I2C情報作成 */ /***************************************************************************/ #include <linux/module.h> #include <linux/kernel.h> @@ -34,7 +34,7 @@ static void stop_i2c(void __iomem *, __u32 *, __u32 *, __u32, __u32); -// PCI˽I2Cǡ +// PCIに書き込むI2Cデータ生成 void makei2c(void __iomem *regs, __u32 base_addr, __u32 i2caddr, __u32 writemode, __u32 data_en, __u32 clock, __u32 busy) { @@ -60,17 +60,17 @@ BIT 16, 16+8 ON BIT 17, 17+8 ON */ - // XC3S + // XC3S初期化 for(lp = 0 ; lp < PROGRAM_ADDRESS ; lp++){ makei2c(regs, lp, 0, READ_EN, DATA_DIS, CLOCK_DIS, BUSY_DIS); } - // XC3S Ԥ (512 PCI Clocks) + // XC3S 初期化待ち (512 PCI Clocks) for(lp = 0 ; lp < XC3S_PCI_CLOCK ; lp++){ makei2c(regs, 0, 0, READ_EN, DATA_DIS, CLOCK_DIS, BUSY_DIS); } - // ץƥȲ - // ϲտޤƤ - // ɤɤȽʤ + // プロテクト解除 + // これは何を意図しているんだろう? + // 元コードが良く判らない for(lp = 0 ; lp < 57 ; lp++){ val = readl(regs); if(val & I2C_READ_SYNC){ @@ -120,7 +120,7 @@ } } - // ȥऴȤž(OFF) + // ストリームごとの転送制御(OFF) for(lp = 0 ; lp < MAX_CHANNEL ; lp++){ SetStream(regs, lp, 0); SetStream(regs, lp, 0); @@ -129,8 +129,8 @@ } // // -//BIT 0. 1 : Tunerֹ (Enable/Disable) -//BIT 8. 9 : Tunerֹ +//BIT 0. 1 : Tuner番号 (Enable/Disable) +//BIT 8. 9 : Tuner番号 // // void SetStream(void __iomem *regs, __u32 channel, __u32 enable) @@ -153,7 +153,7 @@ writel(firstval, regs); writel(secondval, regs); - // RAMå줿 + // RAMがロックされた? for(lp = 0 ; lp < XC3S_PCI_CLOCK ; lp++){ val = readl(regs); if((val & lockval)){ @@ -174,11 +174,11 @@ val = (readl(regs) & lockval); writel(firstval, regs); - // RAMå줿 + // RAMがロックされた? for(lp = 0 ; lp < 10 ; lp++){ for(lp = 0 ; lp < 1024 ; lp++){ val2 = readl(regs); - // ǽ˼ǡȵդˤʤOK + // 最初に取得したデータと逆になればOK if(((val2 & lockval) != val)){ return 0 ; } @@ -224,26 +224,26 @@ start_i2c(regs, &address, &clock, old_bits); old_bits = 0 ; - // ޤɥ쥹 + // まずアドレスを書く for(bitpos = 0 ; bitpos < 7 ; bitpos++){ bits = ((wblock->addr >> (6 - bitpos)) & 1); writebits(regs, &address, old_bits, bits); old_bits = bits ; } - // סWRT + // タイプ:WRT writebits(regs, &address, old_bits, 0); - // ACK/NACK(ɬ1) + // ACK/NACK用(必ず1) writebits(regs, &address, 0, 1); old_bits = 1 ; - // ºݤΥǡ + // 実際のデータを書く for (lp = 0 ; lp < wblock->count ; lp++){ for(bitpos = 0 ; bitpos < 8 ; bitpos++){ bits = ((wblock->value[lp] >> (7 - bitpos)) & 1); writebits(regs, &address, old_bits, bits); old_bits = bits ; } - // ACK/NACK(ɬ1) + // ACK/NACK用(必ず1) writebits(regs, &address, old_bits, 1); old_bits = 1 ; } @@ -276,26 +276,26 @@ start_i2c(regs, &address, &clock, old_bits); old_bits = 0 ; - // ޤɥ쥹 + // まずアドレスを書く for(bitpos = 0 ; bitpos < 7 ; bitpos++){ bits = ((wblock->addr >> (6 - bitpos)) & 1); writebits(regs, &address, old_bits, bits); old_bits = bits ; } - // סWRT + // タイプ:WRT writebits(regs, &address, old_bits, 0); - // ACK/NACK(ɬ1) + // ACK/NACK用(必ず1) writebits(regs, &address, 0, 1); old_bits = 1 ; - // ºݤΥǡ + // 実際のデータを書く for (lp = 0 ; lp < wblock->count ; lp++){ for(bitpos = 0 ; bitpos < 8 ; bitpos++){ bits = ((wblock->value[lp] >> (7 - bitpos)) & 1); writebits(regs, &address, old_bits, bits); old_bits = bits ; } - // ACK/NACK(ɬ1) + // ACK/NACK用(必ず1) writebits(regs, &address, old_bits, 1); old_bits = 1 ; } @@ -305,22 +305,22 @@ clock = TRUE ; address += 1 ; - // Read + // ここから Read start_i2c(regs, &address, &clock, old_bits); old_bits = 0 ; - // ޤɥ쥹 + // まずアドレスを書く for(bitpos = 0 ; bitpos < 7 ; bitpos++){ bits = ((wblock->addr >> (6 - bitpos)) & 1); writebits(regs, &address, old_bits, bits); old_bits = bits ; } - // סRD + // タイプ:RD writebits(regs, &address, old_bits, 1); - // ACK/NACK(ɬ1) + // ACK/NACK用(必ず1) writebits(regs, &address, 1, 1); old_bits = 1 ; - // ºݤΥǡ + // 実際のデータを書く for (lp = 0 ; lp < count ; lp++){ for(bitpos = 0 ; bitpos < 8 ; bitpos++){ writebits(regs, &address, old_bits, 1); @@ -330,11 +330,11 @@ old_bits = 1 ; } if(lp >= (count - 1)){ - // ACK/NACK(ɬ1) + // ACK/NACK用(必ず1) writebits(regs, &address, old_bits, 1); old_bits = 0 ; }else{ - // ACK/NACK(ɬ1) + // ACK/NACK用(必ず1) writebits(regs, &address, old_bits, 0); old_bits = 1 ; } @@ -377,9 +377,9 @@ static void start_i2c(void __iomem *regs, __u32 *address, __u32 *clock, __u32 data) { - // ǡĤäƤʤХǡ + // データが残っていなければデータを下げる if(!data){ - // CLOCKCLOCK + // CLOCKがあればCLOCKを下げる if(*clock != TRUE){ *clock = TRUE ; makei2c(regs, *address, *address + 1, 0, 1, 1, 1); @@ -401,9 +401,9 @@ static void stop_i2c(void __iomem *regs, __u32 *address, __u32 *clock, __u32 data, __u32 end) { - // ǡĤäƤ + // データが残っていて if(data){ - // å + // クロックがあれば if(*clock != TRUE){ *clock = TRUE ; makei2c(regs, *address, *address + 1, 0, 0, 1, 1); @@ -412,7 +412,7 @@ makei2c(regs, *address, *address + 1, 0, 1, 1, 1); *address += 1 ; } - // åƤ + // クロックが落ちていれば if(*clock){ *clock = FALSE ; makei2c(regs, *address, *address + 1, 0, 1, 0, 1); @@ -433,7 +433,7 @@ int lp; __u32 val ; - // å + // ロックする mutex_lock(lock); #if 0 printk(KERN_INFO "Addr=%x(%d)\n", wblock->addr, wblock->count); @@ -445,7 +445,7 @@ blockwrite(regs, wblock); writel(FIFO_GO, regs + FIFO_GO_ADDR); - //Ȥꤢåʤ褦ˡ + //とりあえずロックしないように。 for(lp = 0 ; lp < 100 ; lp++){ val = readl(regs + FIFO_RESULT_ADDR); if(!(val & FIFO_DONE)){ @@ -462,7 +462,7 @@ int lp; __u32 val ; - // å + // ロックする mutex_lock(lock); #if 0 printk(KERN_INFO "Addr=%x:%d:%d\n", wblock->addr, wblock->count, size);