Revision 2d9401aa

b/hw/i2c.h
101 101
void tmp105_set(i2c_slave *i2c, int temp);
102 102

  
103 103
/* lm832x.c */
104
struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq);
105
void lm832x_key_event(struct i2c_slave *i2c, int key, int state);
104
void lm832x_key_event(i2c_slave *i2c, int key, int state);
106 105

  
107 106
#endif
b/hw/lm832x.c
378 378

  
379 379
static void lm_i2c_event(i2c_slave *i2c, enum i2c_event event)
380 380
{
381
    LM823KbdState *s = (LM823KbdState *) i2c;
381
    LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, i2c);
382 382

  
383 383
    switch (event) {
384 384
    case I2C_START_RECV:
......
394 394

  
395 395
static int lm_i2c_rx(i2c_slave *i2c)
396 396
{
397
    LM823KbdState *s = (LM823KbdState *) i2c;
397
    LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, i2c);
398 398

  
399 399
    return lm_kbd_read(s, s->reg, s->i2c_cycle ++);
400 400
}
......
489 489
    return 0;
490 490
}
491 491

  
492
i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq)
492
static void lm8323_init(i2c_slave *i2c)
493 493
{
494
    LM823KbdState *s;
494
    LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, i2c);
495 495

  
496
    s = (LM823KbdState *) i2c_slave_init(bus, 0, sizeof(LM823KbdState));
497 496
    s->model = 0x8323;
498 497
    s->pwm.tm[0] = qemu_new_timer(vm_clock, lm_kbd_pwm0_tick, s);
499 498
    s->pwm.tm[1] = qemu_new_timer(vm_clock, lm_kbd_pwm1_tick, s);
500 499
    s->pwm.tm[2] = qemu_new_timer(vm_clock, lm_kbd_pwm2_tick, s);
501
    s->nirq = nirq;
502

  
503
    s->i2c.event = lm_i2c_event;
504
    s->i2c.recv = lm_i2c_rx;
505
    s->i2c.send = lm_i2c_tx;
500
    qdev_init_gpio_out(&i2c->qdev, &s->nirq, 1);
506 501

  
507 502
    lm_kbd_reset(s);
508 503

  
509 504
    qemu_register_reset((void *) lm_kbd_reset, s);
510 505
    register_savevm("LM8323", -1, 0, lm_kbd_save, lm_kbd_load, s);
511

  
512
    return &s->i2c;
513 506
}
514 507

  
515 508
void lm832x_key_event(struct i2c_slave *i2c, int key, int state)
......
531 524
    s->status |= INT_KEYPAD;
532 525
    lm_kbd_irq_update(s);
533 526
}
527

  
528
static I2CSlaveInfo lm8323_info = {
529
    .init = lm8323_init,
530
    .event = lm_i2c_event,
531
    .recv = lm_i2c_rx,
532
    .send = lm_i2c_tx
533
};
534

  
535
static void lm832x_register_devices(void)
536
{
537
    i2c_register_slave("lm8323", sizeof(LM823KbdState), &lm8323_info);
538
}
539

  
540
device_init(lm832x_register_devices)
b/hw/nseries.c
362 362
static void n810_kbd_setup(struct n800_s *s)
363 363
{
364 364
    qemu_irq kbd_irq = omap2_gpio_in_get(s->cpu->gpif, N810_KEYBOARD_GPIO)[0];
365
    DeviceState *dev;
365 366
    int i;
366 367

  
367 368
    for (i = 0; i < 0x80; i ++)
......
374 375

  
375 376
    /* Attach the LM8322 keyboard to the I2C bus,
376 377
     * should happen in n8x0_i2c_setup and s->kbd be initialised here.  */
377
    s->kbd = lm8323_init(s->i2c, kbd_irq);
378
    i2c_set_slave_address(s->kbd, N810_LM8323_ADDR);
378
    dev = i2c_create_slave(s->i2c, "lm8323", N810_LM8323_ADDR);
379
    qdev_connect_gpio_out(dev, 0, kbd_irq);
379 380
}
380 381

  
381 382
/* LCD MIPI DBI-C controller (URAL) */

Also available in: Unified diff