File: [local] / sys / dev / pci / if_san_front_end.h (download)
Revision 1.1.1.1 (vendor branch), Tue Mar 4 16:13:23 2008 UTC (16 years, 5 months ago) by nbrk
Branch: OPENBSD_4_2_BASE, MAIN
CVS Tags: jornada-partial-support-wip, HEAD Changes since 1.1: +0 -0 lines
Import of OpenBSD 4.2 release kernel tree with initial code to support
Jornada 720/728, StrongARM 1110-based handheld PC.
At this point kernel roots on NFS and boots into vfs_mountroot() and traps.
What is supported:
- glass console, Jornada framebuffer (jfb) works in 16bpp direct color mode
(needs some palette tweaks for non black/white/blue colors, i think)
- saic, SA11x0 interrupt controller (needs cleanup)
- sacom, SA11x0 UART (supported only as boot console for now)
- SA11x0 GPIO controller fully supported (but can't handle multiple interrupt
handlers on one gpio pin)
- sassp, SSP port on SA11x0 that attaches spibus
- Jornada microcontroller (jmcu) to control kbd, battery, etc throught
the SPI bus (wskbd attaches on jmcu, but not tested)
- tod functions seem work
- initial code for SA-1111 (chip companion) : this is TODO
Next important steps, i think:
- gpio and intc on sa1111
- pcmcia support for sa11x0 (and sa1111 help logic)
- REAL root on nfs when we have PCMCIA support (we may use any of supported pccard NICs)
- root on wd0! (using already supported PCMCIA-ATA)
|
/* $OpenBSD: if_san_front_end.h,v 1.4 2004/12/07 06:10:24 mcbride Exp $ */
/*-
* Copyright (c) 2001-2004 Sangoma Technologies (SAN)
* All rights reserved. www.sangoma.com
*
* This code is written by Alex Feldman <al.feldman@sangoma.com> for SAN.
* The code is derived from permitted modifications to software created
* by Nenad Corbic (ncorbic@sangoma.com).
*
* 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.
* 3. Neither the name of Sangoma Technologies nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY SANGOMA TECHNOLOGIES AND CONTRIBUTORS
* ``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 FOUNDATION OR CONTRIBUTORS
* 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.
*/
#ifndef __IF_SAN_FRONT_END_H_
#define __IF_SAN_FRONT_END_H_
/* The hardware media */
#define WAN_MEDIA_NONE 0x00 /* Regular card */
#define WAN_MEDIA_T1 0x01 /* T1 connection */
#define WAN_MEDIA_E1 0x02 /* E1 connection */
#define WAN_MEDIA_56K 0x03 /* 56K connection */
/* settings for the 'adapter_type' */
#define S508_ADPTR 0x0001 /* S508 */
#define S5141_ADPTR_1_CPU_SERIAL 0x0011 /* S5141, single CPU, serial */
#define S5142_ADPTR_2_CPU_SERIAL 0x0012 /* S5142, dual CPU, serial */
#define S5143_ADPTR_1_CPU_FT1 0x0013 /* S5143, single CPU, FT1 */
#define S5144_ADPTR_1_CPU_T1E1 0x0014 /* S5144, single CPU, T1/E1 */
#define S5145_ADPTR_1_CPU_56K 0x0015 /* S5145, single CPU, 56K */
#define S5147_ADPTR_2_CPU_T1E1 0x0017 /* S5147, dual CPU, T1/E1 */
#define S5148_ADPTR_1_CPU_T1E1 0x0018 /* S5148, single CPU, T1/E1 */
#define S518_ADPTR_1_CPU_ADSL 0x0018 /* S518, adsl card */
#define A101_ADPTR_T1E1_MASK 0x0040 /* T1/E1 type mask */
#define A101_ADPTR_1TE1 0x0041 /* 1 Channel T1/E1 */
#define A101_ADPTR_2TE1 0x0042 /* 2 Channels T1/E1 */
#define A100_ADPTR_T3E3_MASK 0x0080 /* T3/E3 type mask */
#define A100_ADPTR_1_CHN_T3E3 0x0081 /* 1 Channel T3/E3 (Proto.) */
#define A105_ADPTR_1_CHN_T3E3 0x0082 /* 1 Channel T3/E3 */
#define OPERATE_T1E1_AS_SERIAL 0x8000 /* For bitstreaming only
* Allow the applicatoin to
* E1 front end */
#define SDLA_ADPTR_DECODE(adapter_type) \
(adapter_type == S5141_ADPTR_1_CPU_SERIAL) ? "S514-1-PCI" : \
(adapter_type == S5142_ADPTR_2_CPU_SERIAL) ? "S514-2-PCI" : \
(adapter_type == S5143_ADPTR_1_CPU_FT1) ? "S514-3-PCI" : \
(adapter_type == S5144_ADPTR_1_CPU_T1E1) ? "S514-4-PCI" : \
(adapter_type == S5145_ADPTR_1_CPU_56K) ? "S514-5-PCI" : \
(adapter_type == S5147_ADPTR_2_CPU_T1E1) ? "S514-7-PCI" : \
(adapter_type == S518_ADPTR_1_CPU_ADSL) ? "S518-PCI " : \
(adapter_type == A101_ADPTR_1TE1) ? "AFT-A101 " : \
(adapter_type == A101_ADPTR_2TE1) ? "AFT-A102 " : \
(adapter_type == A105_ADPTR_1_CHN_T3E3) ? "A105-1-PCI" : \
(adapter_type == A105_ADPTR_1_CHN_T3E3) ? "A105-2 " : \
"UNKNOWN "
/* front-end UDP command */
#define WAN_FE_GET_STAT (WAN_FE_UDP_CMD_START + 0)
#define WAN_FE_SET_LB_MODE (WAN_FE_UDP_CMD_START + 1)
#define WAN_FE_FLUSH_PMON (WAN_FE_UDP_CMD_START + 2)
#define WAN_FE_GET_CFG (WAN_FE_UDP_CMD_START + 3)
/* front-end configuration and access interface commands */
/* 0x90 read from front-end register */
#define READ_FRONT_END_REGISTER (WAN_FE_CMD_START+0)
/* 0x91 write to front-end register */
#define WRITE_FRONT_END_REGISTER (WAN_FE_CMD_START+1)
/* 0x92 read the front-end statistics */
#define READ_FRONT_END_STATISTICS (WAN_FE_CMD_START+2)
/* 0x93 flush the front-end statistics */
#define FLUSH_FRONT_END_STATISTICS (WAN_FE_CMD_START+3)
#ifdef _KERNEL
/* adapter configuration interface commands */
/* 0xA0 set adapter configuration */
#define SET_ADAPTER_CONFIGURATION (WAN_INTERFACE_CMD_START+0)
/* 0xA1 read adapter configuration */
#define READ_ADAPTER_CONFIGURATION (WAN_INTERFACE_CMD_START+1)
/* front-end command */
#define WAN_FE_GET_STAT (WAN_FE_UDP_CMD_START + 0)
#define WAN_FE_SET_LB_MODE (WAN_FE_UDP_CMD_START + 1)
#define WAN_FE_FLUSH_PMON (WAN_FE_UDP_CMD_START + 2)
#define WAN_FE_GET_CFG (WAN_FE_UDP_CMD_START + 3)
/*
* return codes from interface commands
*/
/* the length of the FE_RX_DISC_TX_IDLE_STRUCT is invalid */
#define LGTH_FE_CFG_DATA_INVALID 0x91
/* the length of the passed configuration data is invalid */
#define LGTH_ADAPTER_CFG_DATA_INVALID 0x91
/* the passed SET_FE_RX_DISC_TX_IDLE_CFG data is invalid */
#define INVALID_FE_CFG_DATA 0x92
/* an invalid adapter operating frequency was selected */
#define ADPTR_OPERATING_FREQ_INVALID 0x92
/* set the protocol-level configuration before setting the FE configuration */
#define PROT_CFG_BEFORE_FE_CFG 0x93
/* set the front-end Rx discard/Tx idle configuration */
#define SET_FE_RX_DISC_TX_IDLE_CFG 0x98
/* read the front-end Rx discard/Tx idle configuration */
#define READ_FE_RX_DISC_TX_IDLE_CFG 0x99
/* set the T1/E1 signaling configuration */
#define SET_TE1_SIGNALING_CFG 0x9A
/* read the T1/E1 signaling configuration */
#define READ_TE1_SIGNALING_CFG 0x9B
/* the command is invalid for the adapter type */
#define COMMAND_INVALID_FOR_ADAPTER 0x9F
/*
* Constants for the SET_FE_RX_DISC_TX_IDLE_CFG
* and READ_FE_RX_DISC_TX_IDLE_CFG commands
*/
/* T1 - no active time slots used for reception */
#define NO_ACTIVE_RX_TIME_SLOTS_T1 24
/* T1 - no active time slots used for transmission */
#define NO_ACTIVE_TX_TIME_SLOTS_T1 24
/* E1 - no active time slots used for reception */
#define NO_ACTIVE_RX_TIME_SLOTS_E1 32
/*
* E1 - no active time slots used for transmission
* (channel 0 reserved for framing)
*/
#define NO_ACTIVE_TX_TIME_SLOTS_E1 31
/* Read/Write to front-end register */
#define READ_REG(reg) card->read_front_end_reg(card, reg)
#define WRITE_REG(reg, value) card->write_front_end_reg(card, reg, \
(unsigned char)(value))
/*
* the structure used for the SET_FE_RX_DISC_TX_IDLE_CFG and
* READ_FE_RX_DISC_TX_IDLE_CFG command
*/
#pragma pack(1)
typedef struct {
/* the length of the Rx discard buffer */
unsigned short lgth_Rx_disc_bfr;
/* the length of the Tx idle buffer */
unsigned short lgth_Tx_idle_bfr;
/* the transmit idle data buffer */
unsigned char Tx_idle_data_bfr[NO_ACTIVE_TX_TIME_SLOTS_E1];
} FE_RX_DISC_TX_IDLE_STRUCT;
#pragma pack()
/*
* Constants for front-end access
*/
/*
* the structure used for the READ_FRONT_END_REGISTER and
* WRITE_FRONT_END_REGISTER command
*/
#pragma pack(1)
typedef struct {
/* the register number to be read from or written to */
unsigned short register_number;
/* the register value read/written */
unsigned char register_value;
} FRONT_END_REG_STRUCT;
#pragma pack()
/* -----------------------------------------------------------------------------
* Constants for the READ_FRONT_END_STATISTICS command
* ---------------------------------------------------------------------------*/
/* the front-end statistics structure */
#pragma pack(1)
typedef struct {
/* the number of front-end interrupts generated */
unsigned long FE_interrupt_count;
/* the number of front-end interrupt application timeouts */
unsigned long FE_app_timeout_count;
} FE_STATISTICS_STRUCT;
#pragma pack()
/*
* Constants for the SET_ADAPTER_CONFIGURATION
* and READ_ADAPTER_CONFIGURATION commands
*/
/* the adapter configuration structure */
#pragma pack(1)
typedef struct {
unsigned short adapter_type; /* type of adapter */
unsigned short adapter_config; /* misc adapter config */
unsigned long operating_frequency; /* adapter operating freq */
} ADAPTER_CONFIGURATION_STRUCT;
#pragma pack()
typedef unsigned char (WRITE_FRONT_END_REG_T)
(void *, unsigned short, unsigned char);
typedef unsigned char (READ_FRONT_END_REG_T)
(void *, unsigned short);
enum {
AFT_LED_ON,
AFT_LED_OFF,
AFT_LED_TOGGLE
};
/*
* Sangoma Front-End interface structure
*/
typedef struct {
/* In-Service or Not (T1/E1/56K) */
unsigned long (*get_fe_service_status)(void*);
/* Print Front-End alarm (T1/E1/56K) */
void (*print_fe_alarm)(void*,unsigned long);
/* Print Front-End alarm (T1/E1/56K) */
char* (*print_fe_act_channels)(void*);
/* Set Front-End alarm (T1/E1) */
void (*set_fe_alarm)(void*,unsigned long);
} sdla_fe_iface_t;
#endif /* _KERNEL */
#endif