| .. | .. |
|---|
| 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 | } |
|---|