diff options
author | Ramon Fried <ramon.fried@gmail.com> | 2018-08-03 16:25:35 +0300 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-08-13 14:04:04 -0400 |
commit | 86e5e429468310d0f1716a1ebb95159aba3b61b4 (patch) | |
tree | 708157e64164c6a07d2d21d5e84f86a4760e35b6 /arch/arm | |
parent | 8ff21d6d9c26e1aca5a6d0df9a43519d24948f69 (diff) |
snapdragon: added msm_board_serial() func
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>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-snapdragon/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-snapdragon/include/mach/misc.h | 12 | ||||
-rw-r--r-- | arch/arm/mach-snapdragon/misc.c | 37 |
3 files changed, 50 insertions, 0 deletions
diff --git a/arch/arm/mach-snapdragon/Makefile b/arch/arm/mach-snapdragon/Makefile index f375d07d03..2d94083600 100644 --- a/arch/arm/mach-snapdragon/Makefile +++ b/arch/arm/mach-snapdragon/Makefile @@ -8,5 +8,6 @@ obj-$(CONFIG_TARGET_DRAGONBOARD410C) += clock-apq8016.o obj-$(CONFIG_TARGET_DRAGONBOARD410C) += sysmap-apq8016.o obj-$(CONFIG_TARGET_DRAGONBOARD410C) += pinctrl-apq8016.o obj-$(CONFIG_TARGET_DRAGONBOARD410C) += pinctrl-snapdragon.o +obj-y += misc.o obj-y += clock-snapdragon.o obj-y += dram.o diff --git a/arch/arm/mach-snapdragon/include/mach/misc.h b/arch/arm/mach-snapdragon/include/mach/misc.h new file mode 100644 index 0000000000..5af6ae8da4 --- /dev/null +++ b/arch/arm/mach-snapdragon/include/mach/misc.h @@ -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 diff --git a/arch/arm/mach-snapdragon/misc.c b/arch/arm/mach-snapdragon/misc.c new file mode 100644 index 0000000000..678bd69f83 --- /dev/null +++ b/arch/arm/mach-snapdragon/misc.c @@ -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); +} |