/*      $NetBSD: auxioreg.h,v 1.8 2015/07/11 10:32:46 kamil Exp $       */

/*
* Copyright (c) 2000 Matthew R. Green
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the
*    documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/

/*
* The AUXIO registers; their offset in the Ebus2 address space, plus the
* bits for each register.  Note that the fdthree (FD), SUNW,CS4231 (AUDIO)
* and power (POWER) devices on the Ebus2 have their AUXIO registers mapped
* into their own "reg" properties, not the "auxio" device's "reg" properties.
*/
#define AUXIO_FD                        0x00720000
#define AUXIO_FD_DENSENSE_INPUT         0x0
#define AUXIO_FD_DENSENSE_OUTPUT        0x1

#define AUXIO_AUDIO                     0x00722000
#define AUXIO_AUDIO_POWERDOWN           0x0

#define AUXIO_POWER                     0x00724000
#define AUXIO_POWER_SYSTEM_OFF          0x0
#define AUXIO_POWER_COURTESY_OFF        0x1

#define AUXIO_LED                       0x00726000
/* XXX: these may be useless on Ebus2 auxio! find out! */
#define AUXIO_LED_LED           0x01    /* front panel LED */
#define AUXIO_LED_FTC           0x02    /* floppy: drives Terminal Count pin */
#define AUXIO_LED_MMUX          0x04    /* Monitor/Mouse MUX; what is it? */
#define AUXIO_LED_LTE           0x08    /* link-test enable */
#define AUXIO_LED_FHD           0x20    /* floppy: high density (unreliable?)*/
#define AUXIO_LED_FLOPPY_MASK           (AUXIO_LED_FTC)

#define AUXIO_PCI                       0x00728000
#define AUXIO_PCI_SLOT0                 0x0     /* two bits each */
#define AUXIO_PCI_SLOT1                 0x2
#define AUXIO_PCI_SLOT2                 0x4
#define AUXIO_PCI_SLOT3                 0x6
#define AUXIO_PCI_MODE                  0x8

#define AUXIO_FREQ                      0x0072a000
#define AUXIO_FREQ_FREQ0                0x0
#define AUXIO_FREQ_FREQ1                0x1
#define AUXIO_FREQ_FREQ2                0x2

#define AUXIO_SCSI                      0x0072c000
#define AUXIO_SCSI_INT_OSC_EN           0x0
#define AUXIO_SCSI_EXT_OSC_EN           0x1

#define AUXIO_TEMP                      0x0072f000
#define AUXIO_TEMP_SELECT               0x0
#define AUXIO_TEMP_CLOCK                0x1
#define AUXIO_TEMP_ENABLE               0x2
#define AUXIO_TEMP_DATAOUT              0x3
#define AUXIO_TEMP_DATAINT              0x4

#define FTC_FLIP \
       do { \
               auxio_fd_control(AUXIO_LED_FTC); \
               auxio_fd_control(0); \
       } while (0)