Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] tda18271: Use printk extension %pV

Deduplicate printk formats to save ~20KB text.

$ size drivers/media/common/tuners/tda18271*o.*
text data bss dec hex filename
10747 56 1920 12723 31b3 drivers/media/common/tuners/tda18271-common.o.new
18889 56 3112 22057 5629 drivers/media/common/tuners/tda18271-common.o.old
20561 204 4264 25029 61c5 drivers/media/common/tuners/tda18271-fe.o.new
31093 204 6000 37297 91b1 drivers/media/common/tuners/tda18271-fe.o.old
3681 6760 440 10881 2a81 drivers/media/common/tuners/tda18271-maps.o.new
5631 6760 680 13071 330f drivers/media/common/tuners/tda18271-maps.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Joe Perches and committed by
Mauro Carvalho Chehab
be85fefe f68baeff

+43 -28
+25 -7
drivers/media/common/tuners/tda18271-common.c
··· 676 676 return ret; 677 677 } 678 678 679 - /* 680 - * Overrides for Emacs so that we follow Linus's tabbing style. 681 - * --------------------------------------------------------------------------- 682 - * Local variables: 683 - * c-basic-offset: 8 684 - * End: 685 - */ 679 + int _tda_printk(struct tda18271_priv *state, const char *level, 680 + const char *func, const char *fmt, ...) 681 + { 682 + struct va_format vaf; 683 + va_list args; 684 + int rtn; 685 + 686 + va_start(args, fmt); 687 + 688 + vaf.fmt = fmt; 689 + vaf.va = &args; 690 + 691 + if (state) 692 + rtn = printk("%s%s: [%d-%04x|%c] %pV", 693 + level, func, i2c_adapter_id(state->i2c_props.adap), 694 + state->i2c_props.addr, 695 + (state->role == TDA18271_MASTER) ? 'M' : 'S', 696 + &vaf); 697 + else 698 + rtn = printk("%s%s: %pV", level, func, &vaf); 699 + 700 + va_end(args); 701 + 702 + return rtn; 703 + }
+18 -21
drivers/media/common/tuners/tda18271-priv.h
··· 136 136 #define DBG_ADV 8 137 137 #define DBG_CAL 16 138 138 139 - #define tda_printk(st, kern, fmt, arg...) do {\ 140 - if (st) { \ 141 - struct tda18271_priv *state = st; \ 142 - printk(kern "%s: [%d-%04x|%s] " fmt, __func__, \ 143 - i2c_adapter_id(state->i2c_props.adap), \ 144 - state->i2c_props.addr, \ 145 - (state->role == TDA18271_MASTER) \ 146 - ? "M" : "S", ##arg); \ 147 - } else \ 148 - printk(kern "%s: " fmt, __func__, ##arg); \ 139 + __attribute__((format(printf, 4, 5))) 140 + int _tda_printk(struct tda18271_priv *state, const char *level, 141 + const char *func, const char *fmt, ...); 142 + 143 + #define tda_printk(st, lvl, fmt, arg...) \ 144 + _tda_printk(st, lvl, __func__, fmt, ##arg) 145 + 146 + #define tda_dprintk(st, lvl, fmt, arg...) \ 147 + do { \ 148 + if (tda18271_debug & lvl) \ 149 + tda_printk(st, KERN_DEBUG, fmt, ##arg); \ 149 150 } while (0) 150 151 151 - #define tda_dprintk(st, lvl, fmt, arg...) do {\ 152 - if (tda18271_debug & lvl) \ 153 - tda_printk(st, KERN_DEBUG, fmt, ##arg); } while (0) 154 - 155 - #define tda_info(fmt, arg...) printk(KERN_INFO fmt, ##arg) 156 - #define tda_warn(fmt, arg...) tda_printk(priv, KERN_WARNING, fmt, ##arg) 157 - #define tda_err(fmt, arg...) tda_printk(priv, KERN_ERR, fmt, ##arg) 158 - #define tda_dbg(fmt, arg...) tda_dprintk(priv, DBG_INFO, fmt, ##arg) 159 - #define tda_map(fmt, arg...) tda_dprintk(priv, DBG_MAP, fmt, ##arg) 160 - #define tda_reg(fmt, arg...) tda_dprintk(priv, DBG_REG, fmt, ##arg) 161 - #define tda_cal(fmt, arg...) tda_dprintk(priv, DBG_CAL, fmt, ##arg) 152 + #define tda_info(fmt, arg...) pr_info(fmt, ##arg) 153 + #define tda_warn(fmt, arg...) tda_printk(priv, KERN_WARNING, fmt, ##arg) 154 + #define tda_err(fmt, arg...) tda_printk(priv, KERN_ERR, fmt, ##arg) 155 + #define tda_dbg(fmt, arg...) tda_dprintk(priv, DBG_INFO, fmt, ##arg) 156 + #define tda_map(fmt, arg...) tda_dprintk(priv, DBG_MAP, fmt, ##arg) 157 + #define tda_reg(fmt, arg...) tda_dprintk(priv, DBG_REG, fmt, ##arg) 158 + #define tda_cal(fmt, arg...) tda_dprintk(priv, DBG_CAL, fmt, ##arg) 162 159 163 160 #define tda_fail(ret) \ 164 161 ({ \