Re: [PATCH] OMAP2/3 clockdomains: combine pwrdm, pwrdm_name into union in struct clockdomain
* Paul Walmsley [EMAIL PROTECTED] [080718 11:22]: struct clockdomain contains a struct powerdomain *pwrdm and const char *pwrdm_name. The pwrdm_name is only used at initialization to look up the appropriate pwrdm pointer. Combining these into a union saves about 100 bytes on 3430SDP. This patch should not cause any change in kernel function. Boot-tested on 3430SDP ES2. Pushing today. Tony Signed-off-by: Paul Walmsley [EMAIL PROTECTED] size: textdata bss dec hex filename 3391587 157104 107136 3655827 37c893 vmlinux.3430sdp.orig 3391555 157032 107136 3655723 37c82b vmlinux.3430sdp --- arch/arm/mach-omap2/clockdomain.c | 58 ++- arch/arm/mach-omap2/clockdomains.h | 54 +++-- include/asm-arm/arch-omap/clockdomain.h | 22 +++- 3 files changed, 67 insertions(+), 67 deletions(-) diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c index 6e5f892..caa7992 100644 --- a/arch/arm/mach-omap2/clockdomain.c +++ b/arch/arm/mach-omap2/clockdomain.c @@ -71,14 +71,14 @@ static void _autodep_lookup(struct clkdm_pwrdm_autodep *autodep) if (!omap_chip_is(autodep-omap_chip)) return; - pwrdm = pwrdm_lookup(autodep-pwrdm_name); + pwrdm = pwrdm_lookup(autodep-pwrdm.name); if (!pwrdm) { pr_debug(clockdomain: _autodep_lookup: powerdomain %s - does not exist\n, autodep-pwrdm_name); + does not exist\n, autodep-pwrdm.name); WARN_ON(1); return; } - autodep-pwrdm = pwrdm; + autodep-pwrdm.ptr = pwrdm; return; } @@ -95,16 +95,13 @@ static void _clkdm_add_autodeps(struct clockdomain *clkdm) { struct clkdm_pwrdm_autodep *autodep; - for (autodep = autodeps; autodep-pwrdm_name; autodep++) { - if (!autodep-pwrdm) - continue; - + for (autodep = autodeps; autodep-pwrdm.ptr; autodep++) { pr_debug(clockdomain: adding %s sleepdep/wkdep for - pwrdm %s\n, autodep-pwrdm_name, - clkdm-pwrdm-name); + pwrdm %s\n, autodep-pwrdm.ptr-name, + clkdm-pwrdm.ptr-name); - pwrdm_add_sleepdep(clkdm-pwrdm, autodep-pwrdm); - pwrdm_add_wkdep(clkdm-pwrdm, autodep-pwrdm); + pwrdm_add_sleepdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); + pwrdm_add_wkdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); } } @@ -120,16 +117,13 @@ static void _clkdm_del_autodeps(struct clockdomain *clkdm) { struct clkdm_pwrdm_autodep *autodep; - for (autodep = autodeps; autodep-pwrdm_name; autodep++) { - if (!autodep-pwrdm) - continue; - + for (autodep = autodeps; autodep-pwrdm.ptr; autodep++) { pr_debug(clockdomain: removing %s sleepdep/wkdep for - pwrdm %s\n, autodep-pwrdm_name, - clkdm-pwrdm-name); + pwrdm %s\n, autodep-pwrdm.ptr-name, + clkdm-pwrdm.ptr-name); - pwrdm_del_sleepdep(clkdm-pwrdm, autodep-pwrdm); - pwrdm_del_wkdep(clkdm-pwrdm, autodep-pwrdm); + pwrdm_del_sleepdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); + pwrdm_del_wkdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); } } @@ -179,7 +173,7 @@ void clkdm_init(struct clockdomain **clkdms, autodeps = init_autodeps; if (autodeps) - for (autodep = autodeps; autodep-pwrdm_name; autodep++) + for (autodep = autodeps; autodep-pwrdm.ptr; autodep++) _autodep_lookup(autodep); } @@ -202,13 +196,13 @@ int clkdm_register(struct clockdomain *clkdm) if (!omap_chip_is(clkdm-omap_chip)) return -EINVAL; - pwrdm = pwrdm_lookup(clkdm-pwrdm_name); + pwrdm = pwrdm_lookup(clkdm-pwrdm.name); if (!pwrdm) { pr_debug(clockdomain: clkdm_register %s: powerdomain %s - does not exist\n, clkdm-name, clkdm-pwrdm_name); + does not exist\n, clkdm-name, clkdm-pwrdm.name); return -EINVAL; } - clkdm-pwrdm = pwrdm; + clkdm-pwrdm.ptr = pwrdm; mutex_lock(clkdm_mutex); /* Verify that the clockdomain is not already registered */ @@ -242,7 +236,7 @@ int clkdm_unregister(struct clockdomain *clkdm) if (!clkdm) return -EINVAL; - pwrdm_del_clkdm(clkdm-pwrdm, clkdm); + pwrdm_del_clkdm(clkdm-pwrdm.ptr, clkdm); mutex_lock(clkdm_mutex); list_del(clkdm-node); @@ -327,7 +321,7 @@ struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm) if (!clkdm) return NULL; - return clkdm-pwrdm; + return clkdm-pwrdm.ptr; }
[PATCH] OMAP2/3 clockdomains: combine pwrdm, pwrdm_name into union in struct clockdomain
struct clockdomain contains a struct powerdomain *pwrdm and const char *pwrdm_name. The pwrdm_name is only used at initialization to look up the appropriate pwrdm pointer. Combining these into a union saves about 100 bytes on 3430SDP. This patch should not cause any change in kernel function. Boot-tested on 3430SDP ES2. Signed-off-by: Paul Walmsley [EMAIL PROTECTED] size: textdata bss dec hex filename 3391587 157104 107136 3655827 37c893 vmlinux.3430sdp.orig 3391555 157032 107136 3655723 37c82b vmlinux.3430sdp --- arch/arm/mach-omap2/clockdomain.c | 58 ++- arch/arm/mach-omap2/clockdomains.h | 54 +++-- include/asm-arm/arch-omap/clockdomain.h | 22 +++- 3 files changed, 67 insertions(+), 67 deletions(-) diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c index 6e5f892..caa7992 100644 --- a/arch/arm/mach-omap2/clockdomain.c +++ b/arch/arm/mach-omap2/clockdomain.c @@ -71,14 +71,14 @@ static void _autodep_lookup(struct clkdm_pwrdm_autodep *autodep) if (!omap_chip_is(autodep-omap_chip)) return; - pwrdm = pwrdm_lookup(autodep-pwrdm_name); + pwrdm = pwrdm_lookup(autodep-pwrdm.name); if (!pwrdm) { pr_debug(clockdomain: _autodep_lookup: powerdomain %s -does not exist\n, autodep-pwrdm_name); +does not exist\n, autodep-pwrdm.name); WARN_ON(1); return; } - autodep-pwrdm = pwrdm; + autodep-pwrdm.ptr = pwrdm; return; } @@ -95,16 +95,13 @@ static void _clkdm_add_autodeps(struct clockdomain *clkdm) { struct clkdm_pwrdm_autodep *autodep; - for (autodep = autodeps; autodep-pwrdm_name; autodep++) { - if (!autodep-pwrdm) - continue; - + for (autodep = autodeps; autodep-pwrdm.ptr; autodep++) { pr_debug(clockdomain: adding %s sleepdep/wkdep for -pwrdm %s\n, autodep-pwrdm_name, -clkdm-pwrdm-name); +pwrdm %s\n, autodep-pwrdm.ptr-name, +clkdm-pwrdm.ptr-name); - pwrdm_add_sleepdep(clkdm-pwrdm, autodep-pwrdm); - pwrdm_add_wkdep(clkdm-pwrdm, autodep-pwrdm); + pwrdm_add_sleepdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); + pwrdm_add_wkdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); } } @@ -120,16 +117,13 @@ static void _clkdm_del_autodeps(struct clockdomain *clkdm) { struct clkdm_pwrdm_autodep *autodep; - for (autodep = autodeps; autodep-pwrdm_name; autodep++) { - if (!autodep-pwrdm) - continue; - + for (autodep = autodeps; autodep-pwrdm.ptr; autodep++) { pr_debug(clockdomain: removing %s sleepdep/wkdep for -pwrdm %s\n, autodep-pwrdm_name, -clkdm-pwrdm-name); +pwrdm %s\n, autodep-pwrdm.ptr-name, +clkdm-pwrdm.ptr-name); - pwrdm_del_sleepdep(clkdm-pwrdm, autodep-pwrdm); - pwrdm_del_wkdep(clkdm-pwrdm, autodep-pwrdm); + pwrdm_del_sleepdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); + pwrdm_del_wkdep(clkdm-pwrdm.ptr, autodep-pwrdm.ptr); } } @@ -179,7 +173,7 @@ void clkdm_init(struct clockdomain **clkdms, autodeps = init_autodeps; if (autodeps) - for (autodep = autodeps; autodep-pwrdm_name; autodep++) + for (autodep = autodeps; autodep-pwrdm.ptr; autodep++) _autodep_lookup(autodep); } @@ -202,13 +196,13 @@ int clkdm_register(struct clockdomain *clkdm) if (!omap_chip_is(clkdm-omap_chip)) return -EINVAL; - pwrdm = pwrdm_lookup(clkdm-pwrdm_name); + pwrdm = pwrdm_lookup(clkdm-pwrdm.name); if (!pwrdm) { pr_debug(clockdomain: clkdm_register %s: powerdomain %s -does not exist\n, clkdm-name, clkdm-pwrdm_name); +does not exist\n, clkdm-name, clkdm-pwrdm.name); return -EINVAL; } - clkdm-pwrdm = pwrdm; + clkdm-pwrdm.ptr = pwrdm; mutex_lock(clkdm_mutex); /* Verify that the clockdomain is not already registered */ @@ -242,7 +236,7 @@ int clkdm_unregister(struct clockdomain *clkdm) if (!clkdm) return -EINVAL; - pwrdm_del_clkdm(clkdm-pwrdm, clkdm); + pwrdm_del_clkdm(clkdm-pwrdm.ptr, clkdm); mutex_lock(clkdm_mutex); list_del(clkdm-node); @@ -327,7 +321,7 @@ struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm) if (!clkdm) return NULL; - return clkdm-pwrdm; + return clkdm-pwrdm.ptr; } @@ -348,7 +342,7 @@ static int omap2_clkdm_clktrctrl_read(struct