blob: 1d34cf4598802ae466804ab098d6a15d23e910ee [file] [log] [blame]
/*
* Copyright (c) 2013 Sage Electronic Engineering, LLC.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* Alternatively, this software may be distributed under the terms of the
* GNU General Public License ("GPL") version 2 as published by the Free
* Software Foundation.
*/
#ifndef __DRIVERS_SOUND_PCAT_BEEP_H__
#define __DRIVERS_SOUND_PCAT_BEEP_H__
#include "drivers/sound/sound.h"
typedef struct
{
SoundOps ops;
int timer_init_done;
} PcAtBeep;
PcAtBeep *new_pcat_beep(void);
/* Legacy 8254 PIT */
enum {
PitBaseAddr = 0x40,
PitT0 = 0x0, /* PIT channel 0 count/status */
PitT1 = 0x1, /* PIT channel 1 count/status */
PitT2 = 0x2, /* PIT channel 2 count/status */
PitCommand = 0x3 /* PIT mode control, latch and read back */
};
/* PIT Command Register Bit Definitions */
enum {
PitCmdCtr0 = 0x0, /* Select PIT counter 0 */
PitCmdCtr1 = 0x40, /* Select PIT counter 1 */
PitCmdCtr2 = 0x80, /* Select PIT counter 2 */
};
enum {
PitCmdLatch = 0x0, /* Counter Latch Command */
PitCmdLow = 0x10, /* Access counter bits 7-0 */
PitCmdHigh = 0x20, /* Access counter bits 15-8 */
PitCmdBoth = 0x30, /* Access counter bits 15-0 in two accesses */
};
enum {
PitCmdMode0 = 0x0, /* Select mode 0 */
PitCmdMode1 = 0x02, /* Select mode 1 */
PitCmdMode2 = 0x04, /* Select mode 2 */
PitCmdMode3 = 0x06, /* Select mode 3 */
PitCmdMode4 = 0x08, /* Select mode 4 */
PitCmdMode5 = 0x0a, /* Select mode 5 */
};
static const uint16_t PitTimer2Value = 0x0a8e; /* 440Hz */
static const uint16_t PitPortBAddr = 0x61;
static const uint16_t PitPortBBeepEnable = 0x3;
static const uint32_t PitHz = 1193180;
#endif /* __DRIVERS_SOUND_PCAT_BEEP_H__*/