All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dirk Brandewie <dirk.brandewie@gmail.com>
To: dirk.brandewie@gmail.com
Cc: linux-kernel@vger.kernel.org, Randy Dunlap <rdunlap@xenotime.net>,
	Grant Likely <grant.likely@secretlab.ca>,
	linux-doc@vger.kernel.org, devicetree-discuss@lists.ozlabs.org
Subject: Re: [PATCH] of/fdt: add kernel command line option for dtb_compat string
Date: Wed, 22 Dec 2010 12:04:56 -0800	[thread overview]
Message-ID: <4D1259E8.9030706@gmail.com> (raw)
In-Reply-To: <1291658059-383-1-git-send-email-dirk.brandewie@gmail.com>

On 12/06/2010 09:54 AM, dirk.brandewie@gmail.com wrote:
> From: Dirk Brandewie<dirk.brandewie@gmail.com>
>
> Adds a kernel command line option "dtb_compat=<string>".  This string
> will be used to select the first compatible device tree blob linked
> into the kernel if a device tree blob is was *not* passed in by the
> bootloader.
>
> Signed-off-by: Dirk Brandewie<dirk.brandewie@gmail.com>
> ---
>   Documentation/kernel-parameters.txt |    8 ++++++
>   drivers/of/fdt.c                    |   48 +++++++++++++++++++++++++++++++++++
>   2 files changed, 56 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index 92e83e5..64093e5 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -655,6 +655,14 @@ and is between 256 and 4096 characters. It is defined in the file
>
>   	dscc4.setup=	[NET]
>
> +	dtb_compat=	[KNL]
> +			Specify the "compatible" string for the device
> +			tree blob present in the vmlinux image.  This
> +			string will be used to select the first device
> +			tree blob whose compatible property matches
> +			the string if a dtb was NOT passed in by the
> +			bootloader.
> +
>   	dynamic_printk	Enables pr_debug()/dev_dbg() calls if
>   			CONFIG_DYNAMIC_PRINTK_DEBUG has been enabled.
>   			These can also be switched on/off via
> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index c1360e0..ca1318c 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c
> @@ -15,6 +15,8 @@
>   #include<linux/of_fdt.h>
>   #include<linux/string.h>
>   #include<linux/errno.h>
> +#include<asm-generic/vmlinux.lds.h>
> +
>
>   #ifdef CONFIG_PPC
>   #include<asm/machdep.h>
> @@ -604,3 +606,49 @@ void __init unflatten_device_tree(void)
>
>   	pr_debug("<- unflatten_device_tree()\n");
>   }
> +
> +extern uint8_t __dtb_start[];
> +extern uint8_t __dtb_end[];
> +static void __init *of_flat_dt_find_compatible_dtb(char *name)
> +{
> +	void *rc = NULL;
> +	unsigned long root, size;
> +	struct boot_param_header  *orig_initial_boot_params;
> +	uint8_t *blob;
> +
> +	orig_initial_boot_params = initial_boot_params;
> +	blob = __dtb_start;
> +	initial_boot_params = (struct boot_param_header *)blob;
> +
> +	while (blob<  __dtb_end) {
> +		if (be32_to_cpu(initial_boot_params->magic) != OF_DT_HEADER) {
> +			WARN(1, "Invalid device tree blob in vmlinux\n");
> +			break;
> +		}
> +
> +		root = of_get_flat_dt_root();
> +		if (of_flat_dt_is_compatible(root, name)>  0) {
> +			rc = blob;
> +			break;
> +		}
> +
> +		size =  be32_to_cpu(initial_boot_params->totalsize);
> +		blob =  PTR_ALIGN(blob + size, STRUCT_ALIGNMENT);
> +		initial_boot_params = (struct boot_param_header *)blob;
> +	}
> +
> +	if (rc == NULL)
> +		initial_boot_params = orig_initial_boot_params;
> +	return rc;
> +}
> +
> +
> +static int __init of_flat_dtb_compat_setup(char *line)
> +{
> +	if (!initial_boot_params)
> +		initial_boot_params = of_flat_dt_find_compatible_dtb(line);
> +	return 1;
> +}
> +
> +early_param("dtb_compat", of_flat_dtb_compat_setup);
> +
Any more comments on this patch? Is it good to go or DOA?

Thanks
--Dirk


  parent reply	other threads:[~2010-12-22 20:05 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-06 17:54 [PATCH] of/fdt: add kernel command line option for dtb_compat string dirk.brandewie
2010-12-06 18:37 ` Stephen Neuendorffer
2010-12-06 18:37   ` Stephen Neuendorffer
2010-12-06 19:01   ` Dirk Brandewie
2010-12-06 19:03     ` Dirk Brandewie
2010-12-06 21:50       ` Stephen Neuendorffer
2010-12-06 21:50         ` Stephen Neuendorffer
2010-12-07  3:08         ` Dirk Brandewie
2010-12-08 15:03         ` Dirk Brandewie
2010-12-30 21:32         ` Grant Likely
2010-12-30 21:32           ` Grant Likely
2010-12-14 17:33 ` Dirk Brandewie
2010-12-22 20:04 ` Dirk Brandewie [this message]
2010-12-30 21:34   ` Grant Likely

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D1259E8.9030706@gmail.com \
    --to=dirk.brandewie@gmail.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdunlap@xenotime.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.