[BACK]Return to rf_raidframe.h CVS log [TXT][DIR] Up to [local] / sys / dev / raidframe

File: [local] / sys / dev / raidframe / rf_raidframe.h (download)

Revision 1.1.1.1 (vendor branch), Tue Mar 4 16:09:51 2008 UTC (16 years, 2 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: rf_raidframe.h,v 1.6 2002/12/16 07:01:05 tdeval Exp $	*/
/*	$NetBSD: rf_raidframe.h,v 1.11 2000/05/28 00:48:31 oster Exp $	*/

/*
 * Copyright (c) 1995 Carnegie-Mellon University.
 * All rights reserved.
 *
 * Author: Mark Holland
 *
 * Permission to use, copy, modify and distribute this software and
 * its documentation is hereby granted, provided that both the copyright
 * notice and this permission notice appear in all copies of the
 * software, derivative works or modified versions, and any portions
 * thereof, and that both notices appear in supporting documentation.
 *
 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
 * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
 *
 * Carnegie Mellon requests users of this software to return to
 *
 *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
 *  School of Computer Science
 *  Carnegie Mellon University
 *  Pittsburgh PA 15213-3890
 *
 * any improvements or extensions that they make and grant Carnegie the
 * rights to redistribute these changes.
 */

/*****************************************************
 *
 * rf_raidframe.h
 *
 * Main header file for using RAIDframe in the kernel.
 *
 *****************************************************/


#ifndef	_RF__RF_RAIDFRAME_H_
#define	_RF__RF_RAIDFRAME_H_

#include "rf_types.h"
#include "rf_configure.h"
#include "rf_disks.h"
#include "rf_raid.h"

typedef RF_uint32 RF_ReconReqFlags_t;

struct rf_recon_req {	/* Used to tell the kernel to fail a disk. */
	RF_RowCol_t		 row, col;
	RF_ReconReqFlags_t	 flags;
	void			*raidPtr;	/*
						 * Used internally; need not be
						 * set at ioctl time.
						 */
	struct rf_recon_req	*next;		/*
						 * Used internally; need not be
						 * set at ioctl time.
						 */
};

struct RF_SparetWait_s {
	int			 C, G, fcol;	/*
						 * C = # disks in row,
						 * G = # units in stripe,
						 * fcol = which disk has failed
						 */

	RF_StripeCount_t	 SUsPerPU;	/*
						 * This stuff is the info
						 * required to create a spare
						 * table.
						 */
	int			 TablesPerSpareRegion;
	int			 BlocksPerTable;
	RF_StripeCount_t	 TableDepthInPUs;
	RF_StripeCount_t	 SpareSpaceDepthPerRegionInSUs;

	RF_SparetWait_t		*next;		/*
						 * Used internally; need not be
						 * set at ioctl time.
						 */
};

typedef struct RF_DeviceConfig_s {
	u_int			rows;
	u_int			cols;
	u_int			maxqdepth;
	int			ndevs;
	RF_RaidDisk_t		devs[RF_MAX_DISKS];
	int			nspares;
	RF_RaidDisk_t		spares[RF_MAX_DISKS];
} RF_DeviceConfig_t;


typedef struct RF_ProgressInfo_s {
	RF_uint64		remaining;
	RF_uint64		completed;
	RF_uint64		total;
} RF_ProgressInfo_t;

/* Flags that can be put in the rf_recon_req structure. */
#define	RF_FDFLAGS_NONE		0x0	/* Just fail the disk. */
#define	RF_FDFLAGS_RECON	0x1	/* Fail and initiate recon. */

#define	RF_SCSI_DISK_MAJOR	8	/*
					 * The device major number for disks
					 * in the system.
					 */

	/* Configure the driver. */
#define	RAIDFRAME_CONFIGURE		_IOW ('r',  1, void *)
	/* Shutdown the driver. */
#define	RAIDFRAME_SHUTDOWN		_IO  ('r',  2)
	/* Debug only: test unit ready. */
#define	RAIDFRAME_TUR			_IOW ('r',  3, dev_t)
	/* Run a test access. */
#define	RAIDFRAME_TEST_ACC		_IOWR('r',  4, struct rf_test_acc)
	/* Fail a disk & optionally start recon. */
#define	RAIDFRAME_FAIL_DISK		_IOW ('r',  5, struct rf_recon_req)
	/* Get reconstruction % complete on indicated row. */
#define	RAIDFRAME_CHECK_RECON_STATUS	 _IOWR('r',  6, int)
	/* Rewrite (initialize) all parity. */
#define	RAIDFRAME_REWRITEPARITY		_IO  ('r',  7)
	/* Copy reconstructed data back to replaced disk. */
#define	RAIDFRAME_COPYBACK		_IO  ('r',  8)
	/* Does not return until kernel needs a spare table. */
#define	RAIDFRAME_SPARET_WAIT		_IOR ('r',  9, RF_SparetWait_t)
	/* Used to send a spare table down into the kernel. */
#define	RAIDFRAME_SEND_SPARET		_IOW ('r', 10, void *)
	/* Used to wake up the sparemap daemon & tell it to exit. */
#define	RAIDFRAME_ABORT_SPARET_WAIT	_IO  ('r', 11)
	/* Start tracing accesses. */
#define	RAIDFRAME_START_ATRAC		_IO  ('r', 12)
	/* Stop tracing accesses. */
#define	RAIDFRAME_STOP_ATRACE		_IO  ('r', 13)
	/* Get size (# sectors) in raid device. */
#define	RAIDFRAME_GET_SIZE		_IOR ('r', 14, int)
	/* Get configuration. */
#define	RAIDFRAME_GET_INFO		_IOWR('r', 15, RF_DeviceConfig_t *)
	/* Reset AccTotals for device. */
#define	RAIDFRAME_RESET_ACCTOTALS	_IO  ('r', 16)
	/* Retrieve AccTotals for device. */
#define	RAIDFRAME_GET_ACCTOTALS		_IOR ('r', 17, RF_AccTotals_t)
	/* Turn AccTotals on or off for device. */
#define	RAIDFRAME_KEEP_ACCTOTALS	_IOW ('r', 18, int)

#define	RAIDFRAME_GET_COMPONENT_LABEL	_IOWR ('r', 19, RF_ComponentLabel_t *)
#define	RAIDFRAME_SET_COMPONENT_LABEL	_IOW ('r', 20, RF_ComponentLabel_t)

#define	RAIDFRAME_INIT_LABELS		_IOW ('r', 21, RF_ComponentLabel_t)
#define	RAIDFRAME_ADD_HOT_SPARE		_IOW ('r', 22, RF_SingleComponent_t)
#define	RAIDFRAME_REMOVE_HOT_SPARE	_IOW ('r', 23, RF_SingleComponent_t)
#define	RAIDFRAME_REBUILD_IN_PLACE	_IOW ('r', 24, RF_SingleComponent_t)
#define	RAIDFRAME_CHECK_PARITY		_IOWR ('r', 25, int)
#define	RAIDFRAME_CHECK_PARITYREWRITE_STATUS _IOWR ('r', 26, int)
#define	RAIDFRAME_CHECK_COPYBACK_STATUS	_IOWR ('r', 27, int)
#define	RAIDFRAME_SET_AUTOCONFIG	_IOWR ('r', 28, int)
#define	RAIDFRAME_SET_ROOT		_IOWR ('r', 29, int)
#define	RAIDFRAME_DELETE_COMPONENT	_IOW ('r', 30, RF_SingleComponent_t)
#define	RAIDFRAME_INCORPORATE_HOT_SPARE	_IOW ('r', 31, RF_SingleComponent_t)

/* 'Extended' status versions. */
#define	RAIDFRAME_CHECK_RECON_STATUS_EXT				\
					_IOWR('r',  32, RF_ProgressInfo_t *)
#define	RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT			\
					_IOWR ('r', 33, RF_ProgressInfo_t *)
#define	RAIDFRAME_CHECK_COPYBACK_STATUS_EXT				\
					_IOWR ('r', 34, RF_ProgressInfo_t *)

#endif	/* !_RF__RF_RAIDFRAME_H_ */