Lines Matching +full:brightness +full:- +full:level

8  * Contributions after 2012-01-13 are licensed under the terms of the
21 #include "hw/char/serial-mm.h"
24 #include "hw/qdev-properties.h"
30 #include "hw/or-irq.h"
32 #include "sysemu/block-backend.h"
40 #include "qemu/error-report.h"
41 #include "target/arm/cpu-qom.h"
119 uint32_t brightness; member
130 switch (s->brightness) { in scale_lcd_color()
136 return (col * s->brightness) / 7; in scale_lcd_color()
144 DisplaySurface *surface = qemu_console_surface(s->con); in set_lcd_pixel32()
165 if (s->video_ram[x + (y / 8) * 128] & (1 << (y % 8))) { in lcd_refresh()
173 dpy_gfx_update(s->con, 0, 0, 128*3, 64*3); in lcd_refresh()
180 static void musicpal_lcd_gpio_brightness_in(void *opaque, int irq, int level) in musicpal_lcd_gpio_brightness_in() argument
183 s->brightness &= ~(1 << irq); in musicpal_lcd_gpio_brightness_in()
184 s->brightness |= level << irq; in musicpal_lcd_gpio_brightness_in()
194 return s->irqctrl; in musicpal_lcd_read()
208 s->irqctrl = value; in musicpal_lcd_write()
213 s->mode = value; in musicpal_lcd_write()
215 s->mode = MP_LCD_SPI_INVALID; in musicpal_lcd_write()
221 s->page = value - MP_LCD_INST_SETPAGE0; in musicpal_lcd_write()
222 s->page_off = 0; in musicpal_lcd_write()
227 if (s->mode == MP_LCD_SPI_CMD) { in musicpal_lcd_write()
230 s->page = value - MP_LCD_INST_SETPAGE0; in musicpal_lcd_write()
231 s->page_off = 0; in musicpal_lcd_write()
233 } else if (s->mode == MP_LCD_SPI_DATA) { in musicpal_lcd_write()
234 s->video_ram[s->page*128 + s->page_off] = value; in musicpal_lcd_write()
235 s->page_off = (s->page_off + 1) & 127; in musicpal_lcd_write()
255 s->con = graphic_console_init(dev, 0, &musicpal_gfx_ops, s); in musicpal_lcd_realize()
256 qemu_console_resize(s->con, 128 * 3, 64 * 3); in musicpal_lcd_realize()
265 s->brightness = 7; in musicpal_lcd_init()
267 memory_region_init_io(&s->iomem, obj, &musicpal_lcd_ops, s, in musicpal_lcd_init()
268 "musicpal-lcd", MP_LCD_SIZE); in musicpal_lcd_init()
269 sysbus_init_mmio(sbd, &s->iomem); in musicpal_lcd_init()
279 VMSTATE_UINT32(brightness, musicpal_lcd_state),
293 dc->vmsd = &musicpal_lcd_vmsd; in musicpal_lcd_class_init()
294 dc->realize = musicpal_lcd_realize; in musicpal_lcd_class_init()
319 uint32_t level; member
326 qemu_set_irq(s->parent_irq, (s->level & s->enabled)); in mv88w8618_pic_update()
329 static void mv88w8618_pic_set_irq(void *opaque, int irq, int level) in mv88w8618_pic_set_irq() argument
333 if (level) { in mv88w8618_pic_set_irq()
334 s->level |= 1 << irq; in mv88w8618_pic_set_irq()
336 s->level &= ~(1 << irq); in mv88w8618_pic_set_irq()
348 return s->level & s->enabled; in mv88w8618_pic_read()
362 s->enabled |= value; in mv88w8618_pic_write()
366 s->enabled &= ~value; in mv88w8618_pic_write()
367 s->level &= ~value; in mv88w8618_pic_write()
377 s->level = 0; in mv88w8618_pic_reset()
378 s->enabled = 0; in mv88w8618_pic_reset()
393 sysbus_init_irq(dev, &s->parent_irq); in mv88w8618_pic_init()
394 memory_region_init_io(&s->iomem, obj, &mv88w8618_pic_ops, s, in mv88w8618_pic_init()
395 "musicpal-pic", MP_PIC_SIZE); in mv88w8618_pic_init()
396 sysbus_init_mmio(dev, &s->iomem); in mv88w8618_pic_init()
404 VMSTATE_UINT32(level, mv88w8618_pic_state),
415 dc->vmsd = &mv88w8618_pic_vmsd; in mv88w8618_pic_class_init()
462 qemu_irq_raise(s->irq); in mv88w8618_timer_tick()
468 sysbus_init_irq(dev, &s->irq); in mv88w8618_timer_init()
469 s->freq = freq; in mv88w8618_timer_init()
471 s->ptimer = ptimer_init(mv88w8618_timer_tick, s, PTIMER_POLICY_LEGACY); in mv88w8618_timer_init()
482 t = &s->timer[(offset-MP_PIT_TIMER1_VALUE) >> 2]; in mv88w8618_pit_read()
483 return ptimer_get_count(t->ptimer); in mv88w8618_pit_read()
499 t = &s->timer[offset >> 2]; in mv88w8618_pit_write()
500 t->limit = value; in mv88w8618_pit_write()
501 ptimer_transaction_begin(t->ptimer); in mv88w8618_pit_write()
502 if (t->limit > 0) { in mv88w8618_pit_write()
503 ptimer_set_limit(t->ptimer, t->limit, 1); in mv88w8618_pit_write()
505 ptimer_stop(t->ptimer); in mv88w8618_pit_write()
507 ptimer_transaction_commit(t->ptimer); in mv88w8618_pit_write()
512 t = &s->timer[i]; in mv88w8618_pit_write()
513 ptimer_transaction_begin(t->ptimer); in mv88w8618_pit_write()
514 if (value & 0xf && t->limit > 0) { in mv88w8618_pit_write()
515 ptimer_set_limit(t->ptimer, t->limit, 0); in mv88w8618_pit_write()
516 ptimer_set_freq(t->ptimer, t->freq); in mv88w8618_pit_write()
517 ptimer_run(t->ptimer, 0); in mv88w8618_pit_write()
519 ptimer_stop(t->ptimer); in mv88w8618_pit_write()
521 ptimer_transaction_commit(t->ptimer); in mv88w8618_pit_write()
540 mv88w8618_timer_state *t = &s->timer[i]; in mv88w8618_pit_reset()
541 ptimer_transaction_begin(t->ptimer); in mv88w8618_pit_reset()
542 ptimer_stop(t->ptimer); in mv88w8618_pit_reset()
543 ptimer_transaction_commit(t->ptimer); in mv88w8618_pit_reset()
544 t->limit = 0; in mv88w8618_pit_reset()
563 mv88w8618_timer_init(dev, &s->timer[i], 1000000); in mv88w8618_pit_init()
566 memory_region_init_io(&s->iomem, obj, &mv88w8618_pit_ops, s, in mv88w8618_pit_init()
567 "musicpal-pit", MP_PIT_SIZE); in mv88w8618_pit_init()
568 sysbus_init_mmio(dev, &s->iomem); in mv88w8618_pit_init()
578 ptimer_free(s->timer[i].ptimer); in mv88w8618_pit_finalize()
609 dc->vmsd = &mv88w8618_pit_vmsd; in mv88w8618_pit_class_init()
644 return s->cfgr0; in mv88w8618_flashcfg_read()
658 s->cfgr0 = value; in mv88w8618_flashcfg_write()
674 s->cfgr0 = 0xfffe4285; /* Default as set by U-Boot for 8 MB flash */ in mv88w8618_flashcfg_init()
675 memory_region_init_io(&s->iomem, obj, &mv88w8618_flashcfg_ops, s, in mv88w8618_flashcfg_init()
676 "musicpal-flashcfg", MP_FLASHCFG_SIZE); in mv88w8618_flashcfg_init()
677 sysbus_init_mmio(dev, &s->iomem); in mv88w8618_flashcfg_init()
694 dc->vmsd = &mv88w8618_flashcfg_vmsd; in mv88w8618_flashcfg_class_init()
715 #define TYPE_MUSICPAL_MISC "musicpal-misc"
746 memory_region_init_io(&s->iomem, OBJECT(s), &musicpal_misc_ops, NULL, in musicpal_misc_init()
747 "musicpal-misc", MP_MISC_SIZE); in musicpal_misc_init()
748 sysbus_init_mmio(sd, &s->iomem); in musicpal_misc_init()
766 /* Workaround to allow loading the binary-only wlandrv.ko crap in mv88w8618_wlan_read()
771 return -1; in mv88w8618_wlan_read()
794 "musicpal-wlan", MP_WLAN_SIZE); in mv88w8618_wlan_realize()
817 /* LCD brightness bits in GPIO_OE_HI */
836 qemu_irq out[5]; /* 3 brightness out + 2 lcd (data and clock ) */
841 uint32_t brightness; in musicpal_gpio_brightness_update() local
843 /* compute brightness ratio */ in musicpal_gpio_brightness_update()
844 switch (s->lcd_brightness) { in musicpal_gpio_brightness_update()
846 brightness = 0; in musicpal_gpio_brightness_update()
850 brightness = 1; in musicpal_gpio_brightness_update()
854 brightness = 2; in musicpal_gpio_brightness_update()
858 brightness = 3; in musicpal_gpio_brightness_update()
862 brightness = 4; in musicpal_gpio_brightness_update()
866 brightness = 5; in musicpal_gpio_brightness_update()
870 brightness = 6; in musicpal_gpio_brightness_update()
875 brightness = 7; in musicpal_gpio_brightness_update()
878 /* set lcd brightness GPIOs */ in musicpal_gpio_brightness_update()
880 qemu_set_irq(s->out[i], (brightness >> i) & 1); in musicpal_gpio_brightness_update()
884 static void musicpal_gpio_pin_event(void *opaque, int pin, int level) in musicpal_gpio_pin_event() argument
888 uint32_t delta = level << pin; in musicpal_gpio_pin_event()
889 uint32_t old = s->in_state & mask; in musicpal_gpio_pin_event()
891 s->in_state &= ~mask; in musicpal_gpio_pin_event()
892 s->in_state |= delta; in musicpal_gpio_pin_event()
895 ((level && (s->imr & mask)) || (!level && (s->ier & mask)))) { in musicpal_gpio_pin_event()
896 s->isr = mask; in musicpal_gpio_pin_event()
897 qemu_irq_raise(s->irq); in musicpal_gpio_pin_event()
907 case MP_GPIO_OE_HI: /* used for LCD brightness control */ in musicpal_gpio_read()
908 return s->lcd_brightness & MP_OE_LCD_BRIGHTNESS; in musicpal_gpio_read()
911 return s->out_state & 0xFFFF; in musicpal_gpio_read()
913 return s->out_state >> 16; in musicpal_gpio_read()
916 return s->in_state & 0xFFFF; in musicpal_gpio_read()
918 return s->in_state >> 16; in musicpal_gpio_read()
921 return s->ier & 0xFFFF; in musicpal_gpio_read()
923 return s->ier >> 16; in musicpal_gpio_read()
926 return s->imr & 0xFFFF; in musicpal_gpio_read()
928 return s->imr >> 16; in musicpal_gpio_read()
931 return s->isr & 0xFFFF; in musicpal_gpio_read()
933 return s->isr >> 16; in musicpal_gpio_read()
945 case MP_GPIO_OE_HI: /* used for LCD brightness control */ in musicpal_gpio_write()
946 s->lcd_brightness = (s->lcd_brightness & MP_GPIO_LCD_BRIGHTNESS) | in musicpal_gpio_write()
952 s->out_state = (s->out_state & 0xFFFF0000) | (value & 0xFFFF); in musicpal_gpio_write()
955 s->out_state = (s->out_state & 0xFFFF) | (value << 16); in musicpal_gpio_write()
956 s->lcd_brightness = (s->lcd_brightness & 0xFFFF) | in musicpal_gpio_write()
957 (s->out_state & MP_GPIO_LCD_BRIGHTNESS); in musicpal_gpio_write()
959 qemu_set_irq(s->out[3], (s->out_state >> MP_GPIO_I2C_DATA_BIT) & 1); in musicpal_gpio_write()
960 qemu_set_irq(s->out[4], (s->out_state >> MP_GPIO_I2C_CLOCK_BIT) & 1); in musicpal_gpio_write()
964 s->ier = (s->ier & 0xFFFF0000) | (value & 0xFFFF); in musicpal_gpio_write()
967 s->ier = (s->ier & 0xFFFF) | (value << 16); in musicpal_gpio_write()
971 s->imr = (s->imr & 0xFFFF0000) | (value & 0xFFFF); in musicpal_gpio_write()
974 s->imr = (s->imr & 0xFFFF) | (value << 16); in musicpal_gpio_write()
989 s->lcd_brightness = 0; in musicpal_gpio_reset()
990 s->out_state = 0; in musicpal_gpio_reset()
991 s->in_state = 0xffffffff; in musicpal_gpio_reset()
992 s->ier = 0; in musicpal_gpio_reset()
993 s->imr = 0; in musicpal_gpio_reset()
994 s->isr = 0; in musicpal_gpio_reset()
1003 sysbus_init_irq(sbd, &s->irq); in musicpal_gpio_init()
1005 memory_region_init_io(&s->iomem, obj, &musicpal_gpio_ops, s, in musicpal_gpio_init()
1006 "musicpal-gpio", MP_GPIO_SIZE); in musicpal_gpio_init()
1007 sysbus_init_mmio(sbd, &s->iomem); in musicpal_gpio_init()
1009 qdev_init_gpio_out(dev, s->out, ARRAY_SIZE(s->out)); in musicpal_gpio_init()
1034 dc->vmsd = &musicpal_gpio_vmsd; in musicpal_gpio_class_init()
1071 InputKeyEvent *key = evt->u.key.data; in musicpal_key_event()
1072 int qcode = qemu_input_key_value_to_qcode(key->key); in musicpal_key_event()
1111 * We allow repeated wheel-events when the arrow keys are held down, in musicpal_key_event()
1112 * but do not repeat already-pressed buttons for the other key inputs. in musicpal_key_event()
1115 if (key->down && (s->pressed_keys & event)) { in musicpal_key_event()
1122 if (key->down && (s->pressed_keys & event)) { in musicpal_key_event()
1125 qemu_set_irq(s->out[i], 1); in musicpal_key_event()
1131 qemu_set_irq(s->out[i], !key->down); in musicpal_key_event()
1134 if (key->down) { in musicpal_key_event()
1135 s->pressed_keys |= event; in musicpal_key_event()
1137 s->pressed_keys &= ~event; in musicpal_key_event()
1148 s->pressed_keys = 0; in musicpal_key_init()
1150 qdev_init_gpio_out(dev, s->out, ARRAY_SIZE(s->out)); in musicpal_key_init()
1178 dc->vmsd = &musicpal_key_vmsd; in musicpal_key_class_init()
1179 dc->realize = musicpal_key_realize; in musicpal_key_class_init()
1216 /* For now we use a fixed - the original - RAM size */ in musicpal_init()
1217 if (machine->ram_size != mc->default_ram_size) { in musicpal_init()
1218 char *sz = size_to_str(mc->default_ram_size); in musicpal_init()
1224 cpu = ARM_CPU(cpu_create(machine->cpu_type)); in musicpal_init()
1226 memory_region_add_subregion(address_space_mem, 0, machine->ram); in musicpal_init()
1242 object_property_set_int(OBJECT(uart_orgate), "num-lines", 2, &error_fatal); in musicpal_init()
1267 * The original U-Boot accesses the flash at 0xFE000000 instead of in musicpal_init()
1271 pflash_cfi02_register(0x100000000ULL - MP_FLASH_SIZE_MAX, in musicpal_init()
1282 object_property_set_link(OBJECT(dev), "dma-memory", in musicpal_init()
1295 i2c_dev = sysbus_create_simple(TYPE_GPIO_I2C, -1, NULL); in musicpal_init()
1299 key_dev = sysbus_create_simple(TYPE_MUSICPAL_KEY, -1, NULL); in musicpal_init()
1320 if (machine->audiodev) { in musicpal_init()
1321 qdev_prop_set_string(DEVICE(wm8750_dev), "audiodev", machine->audiodev); in musicpal_init()
1339 mc->desc = "Marvell 88w8618 / MusicPal (ARM926EJ-S)"; in musicpal_machine_init()
1340 mc->init = musicpal_init; in musicpal_machine_init()
1341 mc->ignore_memory_transaction_failures = true; in musicpal_machine_init()
1342 mc->default_cpu_type = ARM_CPU_TYPE_NAME("arm926"); in musicpal_machine_init()
1343 mc->default_ram_size = MP_RAM_DEFAULT_SIZE; in musicpal_machine_init()
1344 mc->default_ram_id = "musicpal.ram"; in musicpal_machine_init()
1355 dc->realize = mv88w8618_wlan_realize; in mv88w8618_wlan_class_init()