Mercurial > pt1.oyama
comparison driver/pt1_i2c.c @ 160:ee69ddb11f93
When it takes too much time to lock the RAM, addresses the problem of failed to initialize.
author | Naoya OYAMA <naoya.oyama@gmail.com> |
---|---|
date | Mon, 10 Sep 2012 20:56:14 +0900 |
parents | 4303bbfd5d37 |
children |
comparison
equal
deleted
inserted
replaced
159:38f79bcba50d | 160:ee69ddb11f93 |
---|---|
163 static int i2c_lock_one(void __iomem *regs, __u32 firstval, __u32 lockval) | 163 static int i2c_lock_one(void __iomem *regs, __u32 firstval, __u32 lockval) |
164 { | 164 { |
165 | 165 |
166 __u32 val ; | 166 __u32 val ; |
167 __u32 val2 ; | 167 __u32 val2 ; |
168 int lp ; | 168 int lp,lp2 ; |
169 | 169 |
170 val = (readl(regs) & lockval); | 170 val = (readl(regs) & lockval); |
171 writel(firstval, regs); | 171 writel(firstval, regs); |
172 | 172 |
173 // RAMがロックされた? | 173 // RAMがロックされた? |
174 for(lp = 0 ; lp < 10 ; lp++){ | 174 for(lp = 0 ; lp < 10 ; lp++){ |
175 for(lp = 0 ; lp < 1024 ; lp++){ | 175 for(lp2 = 0 ; lp2 < 1024 ; lp2++){ |
176 val2 = readl(regs); | 176 val2 = readl(regs); |
177 // 最初に取得したデータと逆になればOK | 177 // 最初に取得したデータと逆になればOK |
178 if(((val2 & lockval) != val)){ | 178 if(((val2 & lockval) != val)){ |
179 return 0 ; | 179 return 0 ; |
180 } | 180 } |