[PATCH v2 13/32] board: dragonboard410c: import board code from mach-snapdragon
Ramon Fried
rfried.dev at gmail.com
Thu Jan 18 22:50:28 CET 2024
On Tue, Dec 19, 2023 at 6:04 PM Caleb Connolly
<caleb.connolly at linaro.org> wrote:
>
> Some of the db410c board support code was written to be generic and
> placed in mach-snapdragon. However, as the db410c is the only board
> using this, move the code out of mach-snapdragon. This makes is more
> obvious what code is relevant for which targets and helps tidy things up
> a little more.
>
> Signed-off-by: Caleb Connolly <caleb.connolly at linaro.org>
> ---
> arch/arm/mach-snapdragon/Makefile | 2 -
> arch/arm/mach-snapdragon/include/mach/dram.h | 12 -----
> arch/arm/mach-snapdragon/misc.c | 55 ----------------------
> board/qualcomm/dragonboard410c/Makefile | 3 +-
> board/qualcomm/dragonboard410c/dragonboard410c.c | 4 +-
> .../qualcomm/dragonboard410c/misc.c | 51 +++++++++++++++++++-
> .../mach => board/qualcomm/dragonboard410c}/misc.h | 1 +
> 7 files changed, 54 insertions(+), 74 deletions(-)
>
> diff --git a/arch/arm/mach-snapdragon/Makefile b/arch/arm/mach-snapdragon/Makefile
> index 3a3a297c1768..d02432df8b04 100644
> --- a/arch/arm/mach-snapdragon/Makefile
> +++ b/arch/arm/mach-snapdragon/Makefile
> @@ -6,6 +6,4 @@ obj-$(CONFIG_SDM845) += sysmap-sdm845.o
> obj-$(CONFIG_SDM845) += init_sdm845.o
> obj-$(CONFIG_TARGET_DRAGONBOARD820C) += sysmap-apq8096.o
> obj-$(CONFIG_TARGET_DRAGONBOARD410C) += sysmap-apq8016.o
> -obj-y += misc.o
> -obj-y += dram.o
> obj-$(CONFIG_TARGET_QCS404EVB) += sysmap-qcs404.o
> diff --git a/arch/arm/mach-snapdragon/include/mach/dram.h b/arch/arm/mach-snapdragon/include/mach/dram.h
> deleted file mode 100644
> index 0a9eedda414c..000000000000
> --- a/arch/arm/mach-snapdragon/include/mach/dram.h
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0+ */
> -/*
> - * Snapdragon DRAM
> - * Copyright (C) 2018 Ramon Fried <ramon.fried at gmail.com>
> - */
> -
> -#ifndef DRAM_H
> -#define DRAM_H
> -
> -int msm_fixup_memory(void *blob);
> -
> -#endif
> diff --git a/arch/arm/mach-snapdragon/misc.c b/arch/arm/mach-snapdragon/misc.c
> deleted file mode 100644
> index 7d452f4529b7..000000000000
> --- a/arch/arm/mach-snapdragon/misc.c
> +++ /dev/null
> @@ -1,55 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -/*
> - * Miscellaneous Snapdragon functionality
> - *
> - * (C) Copyright 2018 Ramon Fried <ramon.fried at gmail.com>
> - *
> - */
> -
> -#include <common.h>
> -#include <mmc.h>
> -#include <asm/arch/misc.h>
> -#include <asm/unaligned.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;
> -
> - if (mmc_init(mmc_dev))
> - return 0;
> -
> - return UNSTUFF_BITS(mmc_dev->cid, 16, 32);
> -}
> -
> -void msm_generate_mac_addr(u8 *mac)
> -{
> - /* use locally adminstrated pool */
> - mac[0] = 0x02;
> - mac[1] = 0x00;
> -
> - /*
> - * Put the 32-bit serial number in the last 32-bit of the MAC address.
> - * Use big endian order so it is consistent with the serial number
> - * written as a hexadecimal string, e.g. 0x1234abcd -> 02:00:12:34:ab:cd
> - */
> - put_unaligned_be32(msm_board_serial(), &mac[2]);
> -}
> diff --git a/board/qualcomm/dragonboard410c/Makefile b/board/qualcomm/dragonboard410c/Makefile
> index 1b99c8b0efef..a3ae1a5f9136 100644
> --- a/board/qualcomm/dragonboard410c/Makefile
> +++ b/board/qualcomm/dragonboard410c/Makefile
> @@ -2,4 +2,5 @@
> #
> # (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski at gmail.com>
>
> -obj-y := dragonboard410c.o
> +obj-y += dragonboard410c.o
> +obj-y += misc.o
> diff --git a/board/qualcomm/dragonboard410c/dragonboard410c.c b/board/qualcomm/dragonboard410c/dragonboard410c.c
> index 1adac07569ae..eea603a4148d 100644
> --- a/board/qualcomm/dragonboard410c/dragonboard410c.c
> +++ b/board/qualcomm/dragonboard410c/dragonboard410c.c
> @@ -18,10 +18,10 @@
> #include <asm/global_data.h>
> #include <asm/gpio.h>
> #include <fdt_support.h>
> -#include <asm/arch/dram.h>
> -#include <asm/arch/misc.h>
> #include <linux/delay.h>
>
> +#include "misc.h"
> +
> DECLARE_GLOBAL_DATA_PTR;
>
> #define USB_HUB_RESET_GPIO 2
> diff --git a/arch/arm/mach-snapdragon/dram.c b/board/qualcomm/dragonboard410c/misc.c
> similarity index 64%
> rename from arch/arm/mach-snapdragon/dram.c
> rename to board/qualcomm/dragonboard410c/misc.c
> index 499dfdf0da6e..27d51ef78914 100644
> --- a/arch/arm/mach-snapdragon/dram.c
> +++ b/board/qualcomm/dragonboard410c/misc.c
> @@ -1,6 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0+
> /*
> - * Onboard memory detection for Snapdragon boards
> + * Miscellaneous Snapdragon functionality
> *
> * (C) Copyright 2018 Ramon Fried <ramon.fried at gmail.com>
> *
> @@ -9,10 +9,56 @@
> #include <common.h>
> #include <dm.h>
> #include <log.h>
> +#include <mmc.h>
> #include <part.h>
> #include <smem.h>
> #include <fdt_support.h>
> -#include <asm/arch/dram.h>
> +#include <asm/unaligned.h>
> +
> +#include "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;
> +
> + if (mmc_init(mmc_dev))
> + return 0;
> +
> + return UNSTUFF_BITS(mmc_dev->cid, 16, 32);
> +}
> +
> +void msm_generate_mac_addr(u8 *mac)
> +{
> + /* use locally adminstrated pool */
> + mac[0] = 0x02;
> + mac[1] = 0x00;
> +
> + /*
> + * Put the 32-bit serial number in the last 32-bit of the MAC address.
> + * Use big endian order so it is consistent with the serial number
> + * written as a hexadecimal string, e.g. 0x1234abcd -> 02:00:12:34:ab:cd
> + */
> + put_unaligned_be32(msm_board_serial(), &mac[2]);
> +}
>
> #define SMEM_USABLE_RAM_PARTITION_TABLE 402
> #define RAM_PART_NAME_LENGTH 16
> @@ -97,3 +143,4 @@ int msm_fixup_memory(void *blob)
>
> return 0;
> }
> +
> diff --git a/arch/arm/mach-snapdragon/include/mach/misc.h b/board/qualcomm/dragonboard410c/misc.h
> similarity index 87%
> rename from arch/arm/mach-snapdragon/include/mach/misc.h
> rename to board/qualcomm/dragonboard410c/misc.h
> index c60e3e472470..fe44caf51b18 100644
> --- a/arch/arm/mach-snapdragon/include/mach/misc.h
> +++ b/board/qualcomm/dragonboard410c/misc.h
> @@ -9,5 +9,6 @@
>
> u32 msm_board_serial(void);
> void msm_generate_mac_addr(u8 *mac);
> +int msm_fixup_memory(void *blob);
>
> #endif
>
> --
> 2.42.1
>
Reviewed-by: Ramon Fried <rfried.dev at gmail.com>
More information about the U-Boot
mailing list