view target-utils/libcommon/buzzer.c @ 416:30f6d1c32c6f

doc/Flash-boot-defect article removed (no longer relevant) This article is no longer relevant because the issue in question only affected one (1) defective FCDEV3B board which was not and never will be sold.
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 26 Oct 2018 07:11:08 +0000
parents 4be951811791
children
line wrap: on
line source

/*
 * Commands for exercising the Calypso's buzzer output, whatever
 * actual hardware (piezo buzzer or vibrator) it may be driving
 * on a given Calypso device.
 */

#include <sys/types.h>
#include "types.h"

extern u_long strtoul();

#define	ARMIO_LOAD_TIM	(*(volatile u16 *) 0xFFFE4808)
#define	BUZZ_LIGHT_REG	(*(volatile u16 *) 0xFFFE480E)
#define	BUZZ_LEVEL_REG	(*(volatile u16 *) 0xFFFE4812)

void
cmd_buzlev(argbulk)
	char *argbulk;
{
	char *argv[2];
	u32 arg;

	if (parse_args(argbulk, 0, 1, argv, 0) < 0)
		return;
	if (argv[0]) {
		arg = strtoul(argv[0], 0, 0);
		if (arg > 0xFFFF) {
			printf("ERROR: argument out of range\n");
			return;
		}
		BUZZ_LEVEL_REG = arg;
	} else
		printf("%04X\n", BUZZ_LEVEL_REG);
}

void
cmd_buz(argbulk)
	char *argbulk;
{
	char *argv[2];
	u32 arg;
	int c;

	if (parse_args(argbulk, 1, 1, argv, 0) < 0)
		return;
	arg = strtoul(argv[0], 0, 0);
	if (arg > 0xFFFF) {
		printf("ERROR: argument out of range\n");
		return;
	}
	ARMIO_LOAD_TIM = arg;
	BUZZ_LIGHT_REG = 1;
	for (;;) {
		c = serial_in_poll();
		if (c >= 0)
			break;
	}
	BUZZ_LIGHT_REG = 0;
}