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

V4L/DVB (8395): saa7134: Fix Kbuild dependency of ir-kbd-i2c

Currently, saa7134 is dependent of ir-kbd-i2c, since it uses a symbol that is
defined there. However, as this symbol is used only on saa7134, there's no
sense on keeping it defined there (or on ir-commons).

So, let's move it to saa7134 and remove one symbol for being exported.

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

+78 -85
-82
drivers/media/video/ir-kbd-i2c.c
··· 194 194 return 1; 195 195 } 196 196 197 - /* Common (grey or coloured) pinnacle PCTV remote handling 198 - * 199 - */ 200 - static int get_key_pinnacle(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw, 201 - int parity_offset, int marker, int code_modulo) 202 - { 203 - unsigned char b[4]; 204 - unsigned int start = 0,parity = 0,code = 0; 205 - 206 - /* poll IR chip */ 207 - if (4 != i2c_master_recv(&ir->c,b,4)) { 208 - dprintk(2,"read error\n"); 209 - return -EIO; 210 - } 211 - 212 - for (start = 0; start < ARRAY_SIZE(b); start++) { 213 - if (b[start] == marker) { 214 - code=b[(start+parity_offset+1)%4]; 215 - parity=b[(start+parity_offset)%4]; 216 - } 217 - } 218 - 219 - /* Empty Request */ 220 - if (parity==0) 221 - return 0; 222 - 223 - /* Repeating... */ 224 - if (ir->old == parity) 225 - return 0; 226 - 227 - ir->old = parity; 228 - 229 - /* drop special codes when a key is held down a long time for the grey controller 230 - In this case, the second bit of the code is asserted */ 231 - if (marker == 0xfe && (code & 0x40)) 232 - return 0; 233 - 234 - code %= code_modulo; 235 - 236 - *ir_raw = code; 237 - *ir_key = code; 238 - 239 - dprintk(1,"Pinnacle PCTV key %02x\n", code); 240 - 241 - return 1; 242 - } 243 - 244 - /* The grey pinnacle PCTV remote 245 - * 246 - * There are one issue with this remote: 247 - * - I2c packet does not change when the same key is pressed quickly. The workaround 248 - * is to hold down each key for about half a second, so that another code is generated 249 - * in the i2c packet, and the function can distinguish key presses. 250 - * 251 - * Sylvain Pasche <sylvain.pasche@gmail.com> 252 - */ 253 - int get_key_pinnacle_grey(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw) 254 - { 255 - 256 - return get_key_pinnacle(ir, ir_key, ir_raw, 1, 0xfe, 0xff); 257 - } 258 - 259 - EXPORT_SYMBOL_GPL(get_key_pinnacle_grey); 260 - 261 - 262 - /* The new pinnacle PCTV remote (with the colored buttons) 263 - * 264 - * Ricardo Cerqueira <v4l@cerqueira.org> 265 - */ 266 - int get_key_pinnacle_color(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw) 267 - { 268 - /* code_modulo parameter (0x88) is used to reduce code value to fit inside IR_KEYTAB_SIZE 269 - * 270 - * this is the only value that results in 42 unique 271 - * codes < 128 272 - */ 273 - 274 - return get_key_pinnacle(ir, ir_key, ir_raw, 2, 0x80, 0x88); 275 - } 276 - 277 - EXPORT_SYMBOL_GPL(get_key_pinnacle_color); 278 - 279 197 /* ----------------------------------------------------------------------- */ 280 198 281 199 static void ir_key_poll(struct IR_i2c *ir)
+78
drivers/media/video/saa7134/saa7134-input.c
··· 198 198 return 1; 199 199 } 200 200 201 + /* Common (grey or coloured) pinnacle PCTV remote handling 202 + * 203 + */ 204 + static int get_key_pinnacle(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw, 205 + int parity_offset, int marker, int code_modulo) 206 + { 207 + unsigned char b[4]; 208 + unsigned int start = 0,parity = 0,code = 0; 209 + 210 + /* poll IR chip */ 211 + if (4 != i2c_master_recv(&ir->c, b, 4)) { 212 + i2cdprintk("read error\n"); 213 + return -EIO; 214 + } 215 + 216 + for (start = 0; start < ARRAY_SIZE(b); start++) { 217 + if (b[start] == marker) { 218 + code=b[(start+parity_offset + 1) % 4]; 219 + parity=b[(start+parity_offset) % 4]; 220 + } 221 + } 222 + 223 + /* Empty Request */ 224 + if (parity == 0) 225 + return 0; 226 + 227 + /* Repeating... */ 228 + if (ir->old == parity) 229 + return 0; 230 + 231 + ir->old = parity; 232 + 233 + /* drop special codes when a key is held down a long time for the grey controller 234 + In this case, the second bit of the code is asserted */ 235 + if (marker == 0xfe && (code & 0x40)) 236 + return 0; 237 + 238 + code %= code_modulo; 239 + 240 + *ir_raw = code; 241 + *ir_key = code; 242 + 243 + i2cdprintk("Pinnacle PCTV key %02x\n", code); 244 + 245 + return 1; 246 + } 247 + 248 + /* The grey pinnacle PCTV remote 249 + * 250 + * There are one issue with this remote: 251 + * - I2c packet does not change when the same key is pressed quickly. The workaround 252 + * is to hold down each key for about half a second, so that another code is generated 253 + * in the i2c packet, and the function can distinguish key presses. 254 + * 255 + * Sylvain Pasche <sylvain.pasche@gmail.com> 256 + */ 257 + static int get_key_pinnacle_grey(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw) 258 + { 259 + 260 + return get_key_pinnacle(ir, ir_key, ir_raw, 1, 0xfe, 0xff); 261 + } 262 + 263 + 264 + /* The new pinnacle PCTV remote (with the colored buttons) 265 + * 266 + * Ricardo Cerqueira <v4l@cerqueira.org> 267 + */ 268 + static int get_key_pinnacle_color(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw) 269 + { 270 + /* code_modulo parameter (0x88) is used to reduce code value to fit inside IR_KEYTAB_SIZE 271 + * 272 + * this is the only value that results in 42 unique 273 + * codes < 128 274 + */ 275 + 276 + return get_key_pinnacle(ir, ir_key, ir_raw, 2, 0x80, 0x88); 277 + } 278 + 201 279 void saa7134_input_irq(struct saa7134_dev *dev) 202 280 { 203 281 struct card_ir *ir = dev->remote;
-3
include/media/ir-kbd-i2c.h
··· 19 19 char phys[32]; 20 20 int (*get_key)(struct IR_i2c*, u32*, u32*); 21 21 }; 22 - 23 - int get_key_pinnacle_grey(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw); 24 - int get_key_pinnacle_color(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw); 25 22 #endif