Re: [PATCH v2 25/29] arc: use common of_flat_dt_match_machine
On 10/09/2013 10:35 PM, Rob Herring wrote: > Thanks. I've added this in and updated my branch. Please double check > it when you have a chance. I also made __arch_info_begin[] and > __arch_info_end[] const. Works great ! Thx, -Vineet -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v2 25/29] arc: use common of_flat_dt_match_machine
On Tue, Oct 8, 2013 at 12:42 AM, Vineet Gupta wrote: > Hi Rob, > > On 10/07/2013 09:59 PM, Rob Herring wrote: >> From: Rob Herring >> >> Convert arc to use the common of_flat_dt_match_machine function. >> >> Signed-off-by: Rob Herring >> >> Acked-by: Vineet Gupta > > Can you please fold the following into this patch. This removes the const > warning > and also gets rid of some dead code. Thanks. I've added this in and updated my branch. Please double check it when you have a chance. I also made __arch_info_begin[] and __arch_info_end[] const. Rob -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v2 25/29] arc: use common of_flat_dt_match_machine
On Tue, Oct 8, 2013 at 12:42 AM, Vineet Gupta vineet.gup...@synopsys.com wrote: Hi Rob, On 10/07/2013 09:59 PM, Rob Herring wrote: From: Rob Herring rob.herring-bsGFqQB8/dxbdgjk7y7...@public.gmane.org Convert arc to use the common of_flat_dt_match_machine function. Signed-off-by: Rob Herring rob.herring-bsGFqQB8/dxbdgjk7y7...@public.gmane.org Acked-by: Vineet Gupta vgupta-HKixBCOQz3hWk0Htik3J/w...@public.gmane.org Can you please fold the following into this patch. This removes the const warning and also gets rid of some dead code. Thanks. I've added this in and updated my branch. Please double check it when you have a chance. I also made __arch_info_begin[] and __arch_info_end[] const. Rob -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v2 25/29] arc: use common of_flat_dt_match_machine
On 10/09/2013 10:35 PM, Rob Herring wrote: Thanks. I've added this in and updated my branch. Please double check it when you have a chance. I also made __arch_info_begin[] and __arch_info_end[] const. Works great ! Thx, -Vineet -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v2 25/29] arc: use common of_flat_dt_match_machine
Hi Rob, On 10/07/2013 09:59 PM, Rob Herring wrote: > From: Rob Herring > > Convert arc to use the common of_flat_dt_match_machine function. > > Signed-off-by: Rob Herring > > Acked-by: Vineet Gupta > --- > arch/arc/kernel/devtree.c | 65 > +-- > 1 file changed, 18 insertions(+), 47 deletions(-) > > diff --git a/arch/arc/kernel/devtree.c b/arch/arc/kernel/devtree.c > index 1ab6f35..12de555 100644 > --- a/arch/arc/kernel/devtree.c > +++ b/arch/arc/kernel/devtree.c > @@ -18,6 +18,19 @@ > #include > #include > > +static const void * __init arch_get_next_mach(const char *const **match) > +{ > + static const struct machine_desc *mdesc = __arch_info_begin; > + const struct machine_desc *m = mdesc; > + > + if (m >= __arch_info_end) > + return NULL; > + > + mdesc++; > + *match = m->dt_compat; > + return m; > +} > + > /** > * setup_machine_fdt - Machine setup when an dtb was passed to the kernel > * @dt: virtual address pointer to dt blob > @@ -27,64 +40,22 @@ > */ > struct machine_desc * __init setup_machine_fdt(void *dt) > { > - struct machine_desc *mdesc = NULL, *mdesc_best = NULL; > - unsigned int score, mdesc_score = ~1; > + struct machine_desc *mdesc; > unsigned long dt_root; > - const char *model, *compat; > void *clk; > - char manufacturer[16]; > unsigned long len; > > if (!early_init_dt_scan(dt)) > return NULL; > > - dt_root = of_get_flat_dt_root(); > - > - /* > - * The kernel could be multi-platform enabled, thus could have many > - * "baked-in" machine descriptors. Search thru all for the best > - * "compatible" string match. > - */ > - for_each_machine_desc(mdesc) { > - score = of_flat_dt_match(dt_root, mdesc->dt_compat); > - if (score > 0 && score < mdesc_score) { > - mdesc_best = mdesc; > - mdesc_score = score; > - } > - } > - if (!mdesc_best) { > - const char *prop; > - long size; > - > - pr_err("\n unrecognized device tree list:\n[ "); > - > - prop = of_get_flat_dt_prop(dt_root, "compatible", ); > - if (prop) { > - while (size > 0) { > - printk("'%s' ", prop); > - size -= strlen(prop) + 1; > - prop += strlen(prop) + 1; > - } > - } > - printk("]\n\n"); > - > + mdesc = of_flat_dt_match_machine(NULL, arch_get_next_mach); > + if (!mdesc) > machine_halt(); > - } > - > - /* compat = "," */ > - compat = mdesc_best->dt_compat[0]; > - > - model = strchr(compat, ','); > - if (model) > - model++; > - > - strlcpy(manufacturer, compat, model ? model - compat : strlen(compat)); > - > - pr_info("Board \"%s\" from %s (Manufacturer)\n", model, manufacturer); > > + dt_root = of_get_flat_dt_root(); > clk = of_get_flat_dt_prop(dt_root, "clock-frequency", ); > if (clk) > arc_set_core_freq(of_read_ulong(clk, len/4)); > > - return mdesc_best; > + return mdesc; > } > Can you please fold the following into this patch. This removes the const warning and also gets rid of some dead code. Thx, -Vineet ---> >From 3cd48b4955e9763248e306fff7ddf420b126ebab Mon Sep 17 00:00:00 2001 From: Vineet Gupta Date: Tue, 8 Oct 2013 09:53:17 +0530 Subject: [PATCH] ARC: Addendum to "use common of_flat_dt_match_machine" Signed-off-by: Vineet Gupta --- arch/arc/include/asm/mach_desc.h | 14 ++ arch/arc/kernel/devtree.c| 4 ++-- arch/arc/kernel/setup.c | 2 +- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/arch/arc/include/asm/mach_desc.h b/arch/arc/include/asm/mach_desc.h index d3e9c0a05be8..c88c59c4183c 100644 --- a/arch/arc/include/asm/mach_desc.h +++ b/arch/arc/include/asm/mach_desc.h @@ -51,22 +51,12 @@ struct machine_desc { /* * Current machine - only accessible during boot. */ -extern struct machine_desc *machine_desc; +extern const struct machine_desc *machine_desc; /* * Machine type table - also only accessible during boot */ extern struct machine_desc __arch_info_begin[], __arch_info_end[]; -#define for_each_machine_desc(p)\ -for (p = __arch_info_begin; p < __arch_info_end; p++) - -static inline struct machine_desc *default_machine_desc(void) -{ -/* the default machine is the last one linked in */ -if (__arch_info_end - 1 < __arch_info_begin) -return NULL; -return __arch_info_end - 1; -} /* * Set of macros to define architecture features. @@ -81,6 +71,6 @@ __attribute__((__section__(".arch.info.init"))) = {\ #define MACHINE_END\ }; -extern struct machine_desc *setup_machine_fdt(void *dt);
[PATCH v2 25/29] arc: use common of_flat_dt_match_machine
From: Rob Herring Convert arc to use the common of_flat_dt_match_machine function. Signed-off-by: Rob Herring Acked-by: Vineet Gupta --- arch/arc/kernel/devtree.c | 65 +-- 1 file changed, 18 insertions(+), 47 deletions(-) diff --git a/arch/arc/kernel/devtree.c b/arch/arc/kernel/devtree.c index 1ab6f35..12de555 100644 --- a/arch/arc/kernel/devtree.c +++ b/arch/arc/kernel/devtree.c @@ -18,6 +18,19 @@ #include #include +static const void * __init arch_get_next_mach(const char *const **match) +{ + static const struct machine_desc *mdesc = __arch_info_begin; + const struct machine_desc *m = mdesc; + + if (m >= __arch_info_end) + return NULL; + + mdesc++; + *match = m->dt_compat; + return m; +} + /** * setup_machine_fdt - Machine setup when an dtb was passed to the kernel * @dt:virtual address pointer to dt blob @@ -27,64 +40,22 @@ */ struct machine_desc * __init setup_machine_fdt(void *dt) { - struct machine_desc *mdesc = NULL, *mdesc_best = NULL; - unsigned int score, mdesc_score = ~1; + struct machine_desc *mdesc; unsigned long dt_root; - const char *model, *compat; void *clk; - char manufacturer[16]; unsigned long len; if (!early_init_dt_scan(dt)) return NULL; - dt_root = of_get_flat_dt_root(); - - /* -* The kernel could be multi-platform enabled, thus could have many -* "baked-in" machine descriptors. Search thru all for the best -* "compatible" string match. -*/ - for_each_machine_desc(mdesc) { - score = of_flat_dt_match(dt_root, mdesc->dt_compat); - if (score > 0 && score < mdesc_score) { - mdesc_best = mdesc; - mdesc_score = score; - } - } - if (!mdesc_best) { - const char *prop; - long size; - - pr_err("\n unrecognized device tree list:\n[ "); - - prop = of_get_flat_dt_prop(dt_root, "compatible", ); - if (prop) { - while (size > 0) { - printk("'%s' ", prop); - size -= strlen(prop) + 1; - prop += strlen(prop) + 1; - } - } - printk("]\n\n"); - + mdesc = of_flat_dt_match_machine(NULL, arch_get_next_mach); + if (!mdesc) machine_halt(); - } - - /* compat = "," */ - compat = mdesc_best->dt_compat[0]; - - model = strchr(compat, ','); - if (model) - model++; - - strlcpy(manufacturer, compat, model ? model - compat : strlen(compat)); - - pr_info("Board \"%s\" from %s (Manufacturer)\n", model, manufacturer); + dt_root = of_get_flat_dt_root(); clk = of_get_flat_dt_prop(dt_root, "clock-frequency", ); if (clk) arc_set_core_freq(of_read_ulong(clk, len/4)); - return mdesc_best; + return mdesc; } -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v2 25/29] arc: use common of_flat_dt_match_machine
From: Rob Herring rob.herr...@calxeda.com Convert arc to use the common of_flat_dt_match_machine function. Signed-off-by: Rob Herring rob.herr...@calxeda.com Acked-by: Vineet Gupta vgu...@synopsys.com --- arch/arc/kernel/devtree.c | 65 +-- 1 file changed, 18 insertions(+), 47 deletions(-) diff --git a/arch/arc/kernel/devtree.c b/arch/arc/kernel/devtree.c index 1ab6f35..12de555 100644 --- a/arch/arc/kernel/devtree.c +++ b/arch/arc/kernel/devtree.c @@ -18,6 +18,19 @@ #include asm/clk.h #include asm/mach_desc.h +static const void * __init arch_get_next_mach(const char *const **match) +{ + static const struct machine_desc *mdesc = __arch_info_begin; + const struct machine_desc *m = mdesc; + + if (m = __arch_info_end) + return NULL; + + mdesc++; + *match = m-dt_compat; + return m; +} + /** * setup_machine_fdt - Machine setup when an dtb was passed to the kernel * @dt:virtual address pointer to dt blob @@ -27,64 +40,22 @@ */ struct machine_desc * __init setup_machine_fdt(void *dt) { - struct machine_desc *mdesc = NULL, *mdesc_best = NULL; - unsigned int score, mdesc_score = ~1; + struct machine_desc *mdesc; unsigned long dt_root; - const char *model, *compat; void *clk; - char manufacturer[16]; unsigned long len; if (!early_init_dt_scan(dt)) return NULL; - dt_root = of_get_flat_dt_root(); - - /* -* The kernel could be multi-platform enabled, thus could have many -* baked-in machine descriptors. Search thru all for the best -* compatible string match. -*/ - for_each_machine_desc(mdesc) { - score = of_flat_dt_match(dt_root, mdesc-dt_compat); - if (score 0 score mdesc_score) { - mdesc_best = mdesc; - mdesc_score = score; - } - } - if (!mdesc_best) { - const char *prop; - long size; - - pr_err(\n unrecognized device tree list:\n[ ); - - prop = of_get_flat_dt_prop(dt_root, compatible, size); - if (prop) { - while (size 0) { - printk('%s' , prop); - size -= strlen(prop) + 1; - prop += strlen(prop) + 1; - } - } - printk(]\n\n); - + mdesc = of_flat_dt_match_machine(NULL, arch_get_next_mach); + if (!mdesc) machine_halt(); - } - - /* compat = manufacturer,model */ - compat = mdesc_best-dt_compat[0]; - - model = strchr(compat, ','); - if (model) - model++; - - strlcpy(manufacturer, compat, model ? model - compat : strlen(compat)); - - pr_info(Board \%s\ from %s (Manufacturer)\n, model, manufacturer); + dt_root = of_get_flat_dt_root(); clk = of_get_flat_dt_prop(dt_root, clock-frequency, len); if (clk) arc_set_core_freq(of_read_ulong(clk, len/4)); - return mdesc_best; + return mdesc; } -- 1.8.1.2 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v2 25/29] arc: use common of_flat_dt_match_machine
Hi Rob, On 10/07/2013 09:59 PM, Rob Herring wrote: From: Rob Herring rob.herring-bsGFqQB8/dxbdgjk7y7...@public.gmane.org Convert arc to use the common of_flat_dt_match_machine function. Signed-off-by: Rob Herring rob.herring-bsGFqQB8/dxbdgjk7y7...@public.gmane.org Acked-by: Vineet Gupta vgupta-HKixBCOQz3hWk0Htik3J/w...@public.gmane.org --- arch/arc/kernel/devtree.c | 65 +-- 1 file changed, 18 insertions(+), 47 deletions(-) diff --git a/arch/arc/kernel/devtree.c b/arch/arc/kernel/devtree.c index 1ab6f35..12de555 100644 --- a/arch/arc/kernel/devtree.c +++ b/arch/arc/kernel/devtree.c @@ -18,6 +18,19 @@ #include asm/clk.h #include asm/mach_desc.h +static const void * __init arch_get_next_mach(const char *const **match) +{ + static const struct machine_desc *mdesc = __arch_info_begin; + const struct machine_desc *m = mdesc; + + if (m = __arch_info_end) + return NULL; + + mdesc++; + *match = m-dt_compat; + return m; +} + /** * setup_machine_fdt - Machine setup when an dtb was passed to the kernel * @dt: virtual address pointer to dt blob @@ -27,64 +40,22 @@ */ struct machine_desc * __init setup_machine_fdt(void *dt) { - struct machine_desc *mdesc = NULL, *mdesc_best = NULL; - unsigned int score, mdesc_score = ~1; + struct machine_desc *mdesc; unsigned long dt_root; - const char *model, *compat; void *clk; - char manufacturer[16]; unsigned long len; if (!early_init_dt_scan(dt)) return NULL; - dt_root = of_get_flat_dt_root(); - - /* - * The kernel could be multi-platform enabled, thus could have many - * baked-in machine descriptors. Search thru all for the best - * compatible string match. - */ - for_each_machine_desc(mdesc) { - score = of_flat_dt_match(dt_root, mdesc-dt_compat); - if (score 0 score mdesc_score) { - mdesc_best = mdesc; - mdesc_score = score; - } - } - if (!mdesc_best) { - const char *prop; - long size; - - pr_err(\n unrecognized device tree list:\n[ ); - - prop = of_get_flat_dt_prop(dt_root, compatible, size); - if (prop) { - while (size 0) { - printk('%s' , prop); - size -= strlen(prop) + 1; - prop += strlen(prop) + 1; - } - } - printk(]\n\n); - + mdesc = of_flat_dt_match_machine(NULL, arch_get_next_mach); + if (!mdesc) machine_halt(); - } - - /* compat = manufacturer,model */ - compat = mdesc_best-dt_compat[0]; - - model = strchr(compat, ','); - if (model) - model++; - - strlcpy(manufacturer, compat, model ? model - compat : strlen(compat)); - - pr_info(Board \%s\ from %s (Manufacturer)\n, model, manufacturer); + dt_root = of_get_flat_dt_root(); clk = of_get_flat_dt_prop(dt_root, clock-frequency, len); if (clk) arc_set_core_freq(of_read_ulong(clk, len/4)); - return mdesc_best; + return mdesc; } Can you please fold the following into this patch. This removes the const warning and also gets rid of some dead code. Thx, -Vineet --- From 3cd48b4955e9763248e306fff7ddf420b126ebab Mon Sep 17 00:00:00 2001 From: Vineet Gupta vgu...@synopsys.com Date: Tue, 8 Oct 2013 09:53:17 +0530 Subject: [PATCH] ARC: Addendum to use common of_flat_dt_match_machine Signed-off-by: Vineet Gupta vgu...@synopsys.com --- arch/arc/include/asm/mach_desc.h | 14 ++ arch/arc/kernel/devtree.c| 4 ++-- arch/arc/kernel/setup.c | 2 +- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/arch/arc/include/asm/mach_desc.h b/arch/arc/include/asm/mach_desc.h index d3e9c0a05be8..c88c59c4183c 100644 --- a/arch/arc/include/asm/mach_desc.h +++ b/arch/arc/include/asm/mach_desc.h @@ -51,22 +51,12 @@ struct machine_desc { /* * Current machine - only accessible during boot. */ -extern struct machine_desc *machine_desc; +extern const struct machine_desc *machine_desc; /* * Machine type table - also only accessible during boot */ extern struct machine_desc __arch_info_begin[], __arch_info_end[]; -#define for_each_machine_desc(p)\ -for (p = __arch_info_begin; p __arch_info_end; p++) - -static inline struct machine_desc *default_machine_desc(void) -{ -/* the default machine is the last one linked in */ -if (__arch_info_end - 1 __arch_info_begin) -return NULL; -return __arch_info_end - 1; -} /* * Set of macros to define architecture features. @@ -81,6 +71,6 @@ __attribute__((__section__(.arch.info.init))) = {\ #define