.. | .. |
---|
167 | 167 | static const char *db8500_read_soc_id(struct device_node *backupram) |
---|
168 | 168 | { |
---|
169 | 169 | void __iomem *base; |
---|
170 | | - void __iomem *uid; |
---|
171 | 170 | const char *retstr; |
---|
| 171 | + u32 uid[5]; |
---|
172 | 172 | |
---|
173 | 173 | base = of_iomap(backupram, 0); |
---|
174 | 174 | if (!base) |
---|
175 | 175 | return NULL; |
---|
176 | | - uid = base + 0x1fc0; |
---|
| 176 | + memcpy_fromio(uid, base + 0x1fc0, sizeof(uid)); |
---|
177 | 177 | |
---|
178 | 178 | /* Throw these device-specific numbers into the entropy pool */ |
---|
179 | | - add_device_randomness(uid, 0x14); |
---|
| 179 | + add_device_randomness(uid, sizeof(uid)); |
---|
180 | 180 | retstr = kasprintf(GFP_KERNEL, "%08x%08x%08x%08x%08x", |
---|
181 | | - readl((u32 *)uid+0), |
---|
182 | | - readl((u32 *)uid+1), readl((u32 *)uid+2), |
---|
183 | | - readl((u32 *)uid+3), readl((u32 *)uid+4)); |
---|
| 181 | + uid[0], uid[1], uid[2], uid[3], uid[4]); |
---|
184 | 182 | iounmap(base); |
---|
185 | 183 | return retstr; |
---|
186 | 184 | } |
---|