Lines Matching +full:led +full:- +full:2
4 * Copyright (c) 2006-2007 CodeSourcery.
12 #include "hw/qdev-properties.h"
68 VMSTATE_UINT32_V(sys_mci, arm_sysctl_state, 2),
69 VMSTATE_UINT32_V(sys_cfgdata, arm_sysctl_state, 2),
70 VMSTATE_UINT32_V(sys_cfgctrl, arm_sysctl_state, 2),
71 VMSTATE_UINT32_V(sys_cfgstat, arm_sysctl_state, 2),
93 return (s->sys_id >> 16) & 0xfff; in board_id()
101 s->leds = 0; in arm_sysctl_reset()
102 s->lockval = 0; in arm_sysctl_reset()
103 s->cfgdata1 = 0; in arm_sysctl_reset()
104 s->cfgdata2 = 0; in arm_sysctl_reset()
105 s->flags = 0; in arm_sysctl_reset()
106 s->resetlevel = 0; in arm_sysctl_reset()
108 s->mb_clock[0] = 50000000; /* Static memory clock: 50MHz */ in arm_sysctl_reset()
109 s->mb_clock[1] = 23750000; /* motherboard CLCD clock: 23.75MHz */ in arm_sysctl_reset()
110 s->mb_clock[2] = 24000000; /* IO FPGA peripheral clock: 24MHz */ in arm_sysctl_reset()
111 s->mb_clock[3] = 24000000; /* IO FPGA reserved clock: 24MHz */ in arm_sysctl_reset()
112 s->mb_clock[4] = 24000000; /* System bus global clock: 24MHz */ in arm_sysctl_reset()
113 s->mb_clock[5] = 24000000; /* IO FPGA reserved clock: 24MHz */ in arm_sysctl_reset()
115 for (i = 0; i < s->db_num_clocks; i++) { in arm_sysctl_reset()
116 s->db_clock[i] = s->db_clock_reset[i]; in arm_sysctl_reset()
120 s->sys_clcd = 0; in arm_sysctl_reset()
123 s->sys_clcd = 0x1f00; in arm_sysctl_reset()
134 return s->sys_id; in arm_sysctl_read()
139 case 0x08: /* LED */ in arm_sysctl_read()
140 return s->leds; in arm_sysctl_read()
142 return s->lockval; in arm_sysctl_read()
152 return s->cfgdata1; in arm_sysctl_read()
154 return s->cfgdata2; in arm_sysctl_read()
156 return s->flags; in arm_sysctl_read()
158 return s->nvflags; in arm_sysctl_read()
164 return s->resetlevel; in arm_sysctl_read()
168 return s->sys_mci; in arm_sysctl_read()
172 return s->sys_clcd; in arm_sysctl_read()
183 return s->proc_id; in arm_sysctl_read()
207 return s->sys_cfgdata; in arm_sysctl_read()
212 return s->sys_cfgctrl; in arm_sysctl_read()
217 return s->sys_cfgstat; in arm_sysctl_read()
229 #define SYS_CFG_VOLT 2
244 #define SYS_CFG_SITE_DB2 2
272 if (site == SYS_CFG_SITE_DB1 && device < s->db_num_vsensors) { in vexpress_cfgctrl_read()
273 *val = s->db_voltage[device]; in vexpress_cfgctrl_read()
285 if (site == SYS_CFG_SITE_MB && device < ARRAY_SIZE(s->mb_clock)) { in vexpress_cfgctrl_read()
287 *val = s->mb_clock[device]; in vexpress_cfgctrl_read()
290 if (site == SYS_CFG_SITE_DB1 && device < s->db_num_clocks) { in vexpress_cfgctrl_read()
292 *val = s->db_clock[device]; in vexpress_cfgctrl_read()
333 if (site == SYS_CFG_SITE_MB && device < ARRAY_SIZE(s->mb_clock)) { in vexpress_cfgctrl_write()
335 s->mb_clock[device] = val; in vexpress_cfgctrl_write()
338 if (site == SYS_CFG_SITE_DB1 && device < s->db_num_clocks) { in vexpress_cfgctrl_write()
340 s->db_clock[device] = val; in vexpress_cfgctrl_write()
393 case 0x08: /* LED */ in arm_sysctl_write()
394 s->leds = val; in arm_sysctl_write()
405 s->lockval = val; in arm_sysctl_write()
407 s->lockval = val & 0x7fff; in arm_sysctl_write()
411 s->cfgdata1 = val; in arm_sysctl_write()
415 s->cfgdata2 = val; in arm_sysctl_write()
418 s->flags |= val; in arm_sysctl_write()
421 s->flags &= ~val; in arm_sysctl_write()
424 s->nvflags |= val; in arm_sysctl_write()
427 s->nvflags &= ~val; in arm_sysctl_write()
432 if (s->lockval == LOCK_VALUE) { in arm_sysctl_write()
433 s->resetlevel = val; in arm_sysctl_write()
441 if (s->lockval == LOCK_VALUE) { in arm_sysctl_write()
442 s->resetlevel = val; in arm_sysctl_write()
468 s->sys_clcd &= 0x3f00; in arm_sysctl_write()
469 s->sys_clcd |= val & ~0x3f00; in arm_sysctl_write()
470 qemu_set_irq(s->pl110_mux_ctrl, val & 3); in arm_sysctl_write()
476 s->sys_clcd &= 0x3f00; in arm_sysctl_write()
477 s->sys_clcd |= val & ~0x3f00; in arm_sysctl_write()
484 s->sys_clcd &= (1 << 7); in arm_sysctl_write()
485 s->sys_clcd |= val & ~(1 << 7); in arm_sysctl_write()
512 s->sys_cfgdata = val; in arm_sysctl_write()
522 s->sys_cfgctrl = val & ~((3 << 18) | (1 << 31)); in arm_sysctl_write()
524 /* Start bit set -- actually do something */ in arm_sysctl_write()
525 unsigned int dcc = extract32(s->sys_cfgctrl, 26, 4); in arm_sysctl_write()
526 unsigned int function = extract32(s->sys_cfgctrl, 20, 6); in arm_sysctl_write()
527 unsigned int site = extract32(s->sys_cfgctrl, 16, 2); in arm_sysctl_write()
528 unsigned int position = extract32(s->sys_cfgctrl, 12, 4); in arm_sysctl_write()
529 unsigned int device = extract32(s->sys_cfgctrl, 0, 12); in arm_sysctl_write()
530 s->sys_cfgstat = 1; /* complete */ in arm_sysctl_write()
531 if (s->sys_cfgctrl & (1 << 30)) { in arm_sysctl_write()
533 device, s->sys_cfgdata)) { in arm_sysctl_write()
534 s->sys_cfgstat |= 2; /* error */ in arm_sysctl_write()
540 s->sys_cfgstat |= 2; /* error */ in arm_sysctl_write()
542 s->sys_cfgdata = data; in arm_sysctl_write()
546 s->sys_cfgctrl &= ~(1 << 31); in arm_sysctl_write()
552 s->sys_cfgstat = val & 3; in arm_sysctl_write()
575 /* For PB926 and EB write-protect is bit 2 of SYS_MCI; in arm_sysctl_gpio_set()
578 int bit = 2; in arm_sysctl_gpio_set()
582 s->sys_mci &= ~bit; in arm_sysctl_gpio_set()
584 s->sys_mci |= bit; in arm_sysctl_gpio_set()
589 s->sys_mci &= ~1; in arm_sysctl_gpio_set()
591 s->sys_mci |= 1; in arm_sysctl_gpio_set()
603 memory_region_init_io(&s->iomem, OBJECT(dev), &arm_sysctl_ops, s, in arm_sysctl_init()
604 "arm-sysctl", 0x1000); in arm_sysctl_init()
605 sysbus_init_mmio(sd, &s->iomem); in arm_sysctl_init()
606 qdev_init_gpio_in(dev, arm_sysctl_gpio_set, 2); in arm_sysctl_init()
607 qdev_init_gpio_out(dev, &s->pl110_mux_ctrl, 1); in arm_sysctl_init()
614 s->db_clock = g_new0(uint32_t, s->db_num_clocks); in arm_sysctl_realize()
621 g_free(s->db_voltage); in arm_sysctl_finalize()
622 g_free(s->db_clock); in arm_sysctl_finalize()
623 g_free(s->db_clock_reset); in arm_sysctl_finalize()
630 DEFINE_PROP_ARRAY("db-voltage", arm_sysctl_state, db_num_vsensors,
633 DEFINE_PROP_ARRAY("db-clock", arm_sysctl_state, db_num_clocks,
641 dc->realize = arm_sysctl_realize; in arm_sysctl_class_init()
643 dc->vmsd = &vmstate_arm_sysctl; in arm_sysctl_class_init()