Lines Matching full:cmd

65 	volatile uint8_t cmd;  member
171 static int smu_run_cmd(device_t dev, struct smu_cmd *cmd, int wait);
415 smu_send_cmd(device_t dev, struct smu_cmd *cmd) in smu_send_cmd() argument
426 sc->sc_cur_cmd = cmd; in smu_send_cmd()
429 sc->sc_cmd->cmd = cmd->cmd; in smu_send_cmd()
430 sc->sc_cmd->len = cmd->len; in smu_send_cmd()
431 memcpy(sc->sc_cmd->data, cmd->data, sizeof(cmd->data)); in smu_send_cmd()
466 sc->sc_cur_cmd->cmd = sc->sc_cmd->cmd; in smu_doorbell_intr()
487 smu_run_cmd(device_t dev, struct smu_cmd *cmd, int wait) in smu_run_cmd() argument
494 cmd_code = cmd->cmd; in smu_run_cmd()
498 STAILQ_INSERT_TAIL(&sc->sc_cmdq, cmd, cmd_q); in smu_run_cmd()
500 smu_send_cmd(dev, cmd); in smu_run_cmd()
514 error = tsleep(cmd, 0, "smu", 800 * hz / 1000); in smu_run_cmd()
520 if (cmd->cmd == cmd_code) { /* Never processed */ in smu_run_cmd()
522 if (sc->sc_cur_cmd == cmd) in smu_run_cmd()
525 STAILQ_REMOVE(&sc->sc_cmdq, cmd, smu_cmd, in smu_run_cmd()
536 if (cmd->cmd == ((~cmd_code) & 0xff)) in smu_run_cmd()
547 struct smu_cmd cmd; in smu_get_datablock() local
550 cmd.cmd = SMU_PARTITION; in smu_get_datablock()
551 cmd.len = 2; in smu_get_datablock()
552 cmd.data[0] = SMU_PARTITION_LATEST; in smu_get_datablock()
553 cmd.data[1] = id; in smu_get_datablock()
555 smu_run_cmd(dev, &cmd, 1); in smu_get_datablock()
558 addr[2] = cmd.data[0]; in smu_get_datablock()
559 addr[3] = cmd.data[1]; in smu_get_datablock()
561 cmd.cmd = SMU_MISC; in smu_get_datablock()
562 cmd.len = 7; in smu_get_datablock()
563 cmd.data[0] = SMU_MISC_GET_DATA; in smu_get_datablock()
564 cmd.data[1] = sizeof(addr); in smu_get_datablock()
565 memcpy(&cmd.data[2], addr, sizeof(addr)); in smu_get_datablock()
566 cmd.data[6] = len; in smu_get_datablock()
568 smu_run_cmd(dev, &cmd, 1); in smu_get_datablock()
569 memcpy(buf, cmd.data, len); in smu_get_datablock()
576 struct smu_cmd cmd; in smu_slew_cpu_voltage() local
578 cmd.cmd = SMU_POWER; in smu_slew_cpu_voltage()
579 cmd.len = 8; in smu_slew_cpu_voltage()
580 cmd.data[0] = 'V'; in smu_slew_cpu_voltage()
581 cmd.data[1] = 'S'; in smu_slew_cpu_voltage()
582 cmd.data[2] = 'L'; in smu_slew_cpu_voltage()
583 cmd.data[3] = 'E'; in smu_slew_cpu_voltage()
584 cmd.data[4] = 'W'; in smu_slew_cpu_voltage()
585 cmd.data[5] = 0xff; in smu_slew_cpu_voltage()
586 cmd.data[6] = 1; in smu_slew_cpu_voltage()
587 cmd.data[7] = to; in smu_slew_cpu_voltage()
589 smu_run_cmd(dev, &cmd, 1); in smu_slew_cpu_voltage()
662 struct smu_cmd cmd; in smu_fan_check_old_style() local
674 cmd.cmd = SMU_FAN; in smu_fan_check_old_style()
675 cmd.len = 2; in smu_fan_check_old_style()
676 cmd.data[0] = 0x31; in smu_fan_check_old_style()
677 cmd.data[1] = fan->reg; in smu_fan_check_old_style()
680 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_check_old_style()
692 struct smu_cmd cmd; in smu_fan_set_rpm() local
695 cmd.cmd = SMU_FAN; in smu_fan_set_rpm()
705 cmd.len = 4; in smu_fan_set_rpm()
706 cmd.data[0] = 0x30; in smu_fan_set_rpm()
707 cmd.data[1] = fan->reg; in smu_fan_set_rpm()
708 cmd.data[2] = (rpm >> 8) & 0xff; in smu_fan_set_rpm()
709 cmd.data[3] = rpm & 0xff; in smu_fan_set_rpm()
711 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_set_rpm()
715 cmd.len = 14; in smu_fan_set_rpm()
716 cmd.data[0] = 0x00; /* RPM fan. */ in smu_fan_set_rpm()
717 cmd.data[1] = 1 << fan->reg; in smu_fan_set_rpm()
718 cmd.data[2 + 2*fan->reg] = (rpm >> 8) & 0xff; in smu_fan_set_rpm()
719 cmd.data[3 + 2*fan->reg] = rpm & 0xff; in smu_fan_set_rpm()
720 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_set_rpm()
733 struct smu_cmd cmd; in smu_fan_read_rpm() local
739 cmd.cmd = SMU_FAN; in smu_fan_read_rpm()
740 cmd.len = 2; in smu_fan_read_rpm()
741 cmd.data[0] = 0x31; in smu_fan_read_rpm()
742 cmd.data[1] = fan->reg; in smu_fan_read_rpm()
744 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_read_rpm()
748 rpm = (cmd.data[0] << 8) | cmd.data[1]; in smu_fan_read_rpm()
752 cmd.cmd = SMU_FAN; in smu_fan_read_rpm()
753 cmd.len = 1; in smu_fan_read_rpm()
754 cmd.data[0] = SMU_RPM_STATUS; in smu_fan_read_rpm()
756 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_read_rpm()
760 rpm = (cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2]; in smu_fan_read_rpm()
769 struct smu_cmd cmd; in smu_fan_set_pwm() local
772 cmd.cmd = SMU_FAN; in smu_fan_set_pwm()
786 cmd.len = 4; in smu_fan_set_pwm()
787 cmd.data[0] = 0x30; in smu_fan_set_pwm()
788 cmd.data[1] = fan->reg; in smu_fan_set_pwm()
789 cmd.data[2] = (pwm >> 8) & 0xff; in smu_fan_set_pwm()
790 cmd.data[3] = pwm & 0xff; in smu_fan_set_pwm()
792 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_set_pwm()
798 cmd.len = 14; in smu_fan_set_pwm()
799 cmd.data[0] = 0x10; /* PWM fan. */ in smu_fan_set_pwm()
800 cmd.data[1] = 1 << fan->reg; in smu_fan_set_pwm()
801 cmd.data[2 + 2*fan->reg] = (pwm >> 8) & 0xff; in smu_fan_set_pwm()
802 cmd.data[3 + 2*fan->reg] = pwm & 0xff; in smu_fan_set_pwm()
803 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_set_pwm()
816 struct smu_cmd cmd; in smu_fan_read_pwm() local
820 cmd.cmd = SMU_FAN; in smu_fan_read_pwm()
821 cmd.len = 2; in smu_fan_read_pwm()
822 cmd.data[0] = 0x31; in smu_fan_read_pwm()
823 cmd.data[1] = fan->reg; in smu_fan_read_pwm()
825 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_read_pwm()
829 *rpm = (cmd.data[0] << 8) | cmd.data[1]; in smu_fan_read_pwm()
833 cmd.cmd = SMU_FAN; in smu_fan_read_pwm()
834 cmd.len = 1; in smu_fan_read_pwm()
835 cmd.data[0] = SMU_PWM_STATUS; in smu_fan_read_pwm()
837 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_read_pwm()
841 *rpm = (cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2]; in smu_fan_read_pwm()
844 cmd.cmd = SMU_FAN; in smu_fan_read_pwm()
845 cmd.len = 14; in smu_fan_read_pwm()
846 cmd.data[0] = SMU_PWM_SETPOINT; in smu_fan_read_pwm()
847 cmd.data[1] = 1 << fan->reg; in smu_fan_read_pwm()
849 error = smu_run_cmd(smu, &cmd, 1); in smu_fan_read_pwm()
853 *pwm = cmd.data[fan->reg*2+2]; in smu_fan_read_pwm()
1087 struct smu_cmd cmd; in smu_sensor_read() local
1092 cmd.cmd = SMU_ADC; in smu_sensor_read()
1093 cmd.len = 1; in smu_sensor_read()
1094 cmd.data[0] = sens->reg; in smu_sensor_read()
1097 error = smu_run_cmd(smu, &cmd, 1); in smu_sensor_read()
1102 value = (cmd.data[0] << 8) | cmd.data[1]; in smu_sensor_read()
1263 static struct smu_cmd cmd; in smu_set_sleepled() local
1266 cmd.cmd = SMU_MISC; in smu_set_sleepled()
1267 cmd.len = 3; in smu_set_sleepled()
1268 cmd.data[0] = SMU_MISC_LED_CTRL; in smu_set_sleepled()
1269 cmd.data[1] = 0; in smu_set_sleepled()
1270 cmd.data[2] = onoff; in smu_set_sleepled()
1272 smu_run_cmd(smu, &cmd, 0); in smu_set_sleepled()
1278 struct smu_cmd cmd; in smu_server_mode() local
1283 cmd.cmd = SMU_POWER_EVENTS; in smu_server_mode()
1284 cmd.len = 1; in smu_server_mode()
1285 cmd.data[0] = SMU_PWR_GET_POWERUP; in smu_server_mode()
1287 error = smu_run_cmd(smu, &cmd, 1); in smu_server_mode()
1292 server_mode = (cmd.data[1] & SMU_WAKEUP_AC_INSERT) ? 1 : 0; in smu_server_mode()
1300 cmd.data[0] = SMU_PWR_SET_POWERUP; in smu_server_mode()
1302 cmd.data[0] = SMU_PWR_CLR_POWERUP; in smu_server_mode()
1306 cmd.len = 3; in smu_server_mode()
1307 cmd.data[1] = 0; in smu_server_mode()
1308 cmd.data[2] = SMU_WAKEUP_AC_INSERT; in smu_server_mode()
1310 return (smu_run_cmd(smu, &cmd, 1)); in smu_server_mode()
1317 struct smu_cmd cmd; in smu_shutdown() local
1319 cmd.cmd = SMU_POWER; in smu_shutdown()
1321 strcpy(cmd.data, "SHUTDOWN"); in smu_shutdown()
1323 strcpy(cmd.data, "RESTART"); in smu_shutdown()
1327 cmd.len = strlen(cmd.data); in smu_shutdown()
1329 smu_run_cmd(smu, &cmd, 1); in smu_shutdown()
1337 struct smu_cmd cmd; in smu_gettime() local
1340 cmd.cmd = SMU_RTC; in smu_gettime()
1341 cmd.len = 1; in smu_gettime()
1342 cmd.data[0] = SMU_RTC_GET; in smu_gettime()
1344 if (smu_run_cmd(dev, &cmd, 1) != 0) in smu_gettime()
1348 ct.sec = bcd2bin(cmd.data[0]); in smu_gettime()
1349 ct.min = bcd2bin(cmd.data[1]); in smu_gettime()
1350 ct.hour = bcd2bin(cmd.data[2]); in smu_gettime()
1351 ct.dow = bcd2bin(cmd.data[3]); in smu_gettime()
1352 ct.day = bcd2bin(cmd.data[4]); in smu_gettime()
1353 ct.mon = bcd2bin(cmd.data[5]); in smu_gettime()
1354 ct.year = bcd2bin(cmd.data[6]) + 2000; in smu_gettime()
1362 static struct smu_cmd cmd; in smu_settime() local
1365 cmd.cmd = SMU_RTC; in smu_settime()
1366 cmd.len = 8; in smu_settime()
1367 cmd.data[0] = SMU_RTC_SET; in smu_settime()
1371 cmd.data[1] = bin2bcd(ct.sec); in smu_settime()
1372 cmd.data[2] = bin2bcd(ct.min); in smu_settime()
1373 cmd.data[3] = bin2bcd(ct.hour); in smu_settime()
1374 cmd.data[4] = bin2bcd(ct.dow); in smu_settime()
1375 cmd.data[5] = bin2bcd(ct.day); in smu_settime()
1376 cmd.data[6] = bin2bcd(ct.mon); in smu_settime()
1377 cmd.data[7] = bin2bcd(ct.year - 2000); in smu_settime()
1379 return (smu_run_cmd(dev, &cmd, 0)); in smu_settime()
1490 struct smu_cmd cmd; in smuiic_transfer() local
1501 cmd.cmd = SMU_I2C; in smuiic_transfer()
1502 cmd.data[0] = sc->sc_busno; in smuiic_transfer()
1504 cmd.data[1] = SMU_I2C_COMBINED; in smuiic_transfer()
1506 cmd.data[1] = SMU_I2C_SIMPLE; in smuiic_transfer()
1508 cmd.data[2] = msgs[i].slave; in smuiic_transfer()
1510 cmd.data[2] |= 1; in smuiic_transfer()
1516 cmd.data[3] = min(msgs[i].len, 3); in smuiic_transfer()
1517 memcpy(&cmd.data[4], msgs[i].buf, min(msgs[i].len, 3)); in smuiic_transfer()
1520 cmd.data[3] = 0; in smuiic_transfer()
1521 memset(&cmd.data[4], 0, 3); in smuiic_transfer()
1524 cmd.data[7] = msgs[i].slave; in smuiic_transfer()
1526 cmd.data[7] |= 1; in smuiic_transfer()
1528 cmd.data[8] = msgs[i].len; in smuiic_transfer()
1530 memset(&cmd.data[9], 0xff, msgs[i].len); in smuiic_transfer()
1531 cmd.len = 9; in smuiic_transfer()
1533 memcpy(&cmd.data[9], msgs[i].buf, msgs[i].len); in smuiic_transfer()
1534 cmd.len = 9 + msgs[i].len; in smuiic_transfer()
1538 smu_run_cmd(device_get_parent(dev), &cmd, 1); in smuiic_transfer()
1542 cmd.cmd = SMU_I2C; in smuiic_transfer()
1543 cmd.len = 1; in smuiic_transfer()
1544 cmd.data[0] = 0; in smuiic_transfer()
1545 memset(&cmd.data[1], 0xff, msgs[i].len); in smuiic_transfer()
1548 smu_run_cmd(device_get_parent(dev), &cmd, 1); in smuiic_transfer()
1551 if (!(cmd.data[0] & 0x80)) in smuiic_transfer()
1557 if (cmd.data[0] & 0x80) { in smuiic_transfer()
1562 memcpy(msgs[i].buf, &cmd.data[1], msgs[i].len); in smuiic_transfer()
1563 msgs[i].len = cmd.len - 1; in smuiic_transfer()