This commit adds a function to get the board serial number. In snapdragon it's actually the eMMC serial number. Function added in a new file misc.c that will include further snapdragon miscellaneous functions. Signed-off-by: Ramon Fried <ramon.fried@gmail.com>lime2-spi
parent
8ff21d6d9c
commit
86e5e42946
@ -0,0 +1,12 @@ |
||||
/* SPDX-License-Identifier: GPL-2.0+ */ |
||||
/*
|
||||
* Snapdragon DRAM |
||||
* Copyright (C) 2018 Ramon Fried <ramon.fried@gmail.com> |
||||
*/ |
||||
|
||||
#ifndef MISC_H |
||||
#define MISC_H |
||||
|
||||
u32 msm_board_serial(void); |
||||
|
||||
#endif |
@ -0,0 +1,37 @@ |
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Miscellaneous Snapdragon functionality |
||||
* |
||||
* (C) Copyright 2018 Ramon Fried <ramon.fried@gmail.com> |
||||
* |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <mmc.h> |
||||
#include <asm/arch/misc.h> |
||||
|
||||
/* UNSTUFF_BITS macro taken from Linux Kernel: drivers/mmc/core/sd.c */ |
||||
#define UNSTUFF_BITS(resp, start, size) \ |
||||
({ \
|
||||
const int __size = size; \
|
||||
const u32 __mask = (__size < 32 ? 1 << __size : 0) - 1; \
|
||||
const int __off = 3 - ((start) / 32); \
|
||||
const int __shft = (start) & 31; \
|
||||
u32 __res; \
|
||||
\
|
||||
__res = resp[__off] >> __shft; \
|
||||
if (__size + __shft > 32) \
|
||||
__res |= resp[__off - 1] << ((32 - __shft) % 32); \
|
||||
__res & __mask; \
|
||||
}) |
||||
|
||||
u32 msm_board_serial(void) |
||||
{ |
||||
struct mmc *mmc_dev; |
||||
|
||||
mmc_dev = find_mmc_device(0); |
||||
if (!mmc_dev) |
||||
return 0; |
||||
|
||||
return UNSTUFF_BITS(mmc_dev->cid, 16, 32); |
||||
} |
Loading…
Reference in new issue