Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Aug 2016 16:26:08 +0000 (UTC)
From:      "Landon J. Fuller" <landonf@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r303621 - head/sys/dev/cfe
Message-ID:  <201608011626.u71GQ8Cj082940@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: landonf
Date: Mon Aug  1 16:26:08 2016
New Revision: 303621
URL: https://svnweb.freebsd.org/changeset/base/303621

Log:
  Sync CFE interface with upstream cfe-1.4.2 release.
  
  Approved by:	adrian (mentor)
  Obtained from:	https://www.broadcom.com/support/communications-processors
  Differential Revision:	https://reviews.freebsd.org/D7375

Modified:
  head/sys/dev/cfe/cfe_api.c
  head/sys/dev/cfe/cfe_api.h
  head/sys/dev/cfe/cfe_api_int.h
  head/sys/dev/cfe/cfe_error.h
  head/sys/dev/cfe/cfe_ioctl.h

Modified: head/sys/dev/cfe/cfe_api.c
==============================================================================
--- head/sys/dev/cfe/cfe_api.c	Mon Aug  1 16:24:46 2016	(r303620)
+++ head/sys/dev/cfe/cfe_api.c	Mon Aug  1 16:26:08 2016	(r303621)
@@ -1,5 +1,4 @@
-/* $NetBSD: cfe_api.c,v 1.5 2005/12/11 12:18:07 christos Exp $ */
-/* from: SiByte Id: cfe_api.c,v 1.16 2002/07/09 23:29:11 cgd Exp $ */
+/* from: Broadcom Id: cfe_api.c,v 1.18 2006/08/24 02:13:56 binh Exp $ */
 
 /*-
  * Copyright 2000, 2001, 2002
@@ -177,6 +176,27 @@ cfe_enumenv(int idx, char *name, int nam
 }
 #endif /* CFE_API_enumenv || CFE_API_ALL */
 
+#if defined(CFE_API_enumdev) || defined(CFE_API_ALL)
+int
+cfe_enumdev(int idx, char *name, int namelen)
+{
+    cfe_xiocb_t xiocb;
+
+    xiocb.xiocb_fcode = CFE_CMD_DEV_ENUM;
+    xiocb.xiocb_status = 0;
+    xiocb.xiocb_handle = 0;
+    xiocb.xiocb_flags = 0;
+    xiocb.xiocb_psize = sizeof(xiocb_envbuf_t);
+    xiocb.plist.xiocb_envbuf.enum_idx = idx;
+    xiocb.plist.xiocb_envbuf.name_ptr = XPTR_FROM_NATIVE(name);
+    xiocb.plist.xiocb_envbuf.name_length = namelen;
+
+    cfe_iocb_dispatch(&xiocb);
+
+    return xiocb.xiocb_status;
+}
+#endif /* CFE_API_enumdev || CFE_API_ALL */
+
 #if defined(CFE_API_enummem) || defined(CFE_API_ALL)
 int
 cfe_enummem(int idx, int flags, cfe_xuint_t *start, cfe_xuint_t *length,

Modified: head/sys/dev/cfe/cfe_api.h
==============================================================================
--- head/sys/dev/cfe/cfe_api.h	Mon Aug  1 16:24:46 2016	(r303620)
+++ head/sys/dev/cfe/cfe_api.h	Mon Aug  1 16:26:08 2016	(r303621)
@@ -1,5 +1,4 @@
-/* $NetBSD: cfe_api.h,v 1.3 2003/02/07 17:38:48 cgd Exp $ */
-/* from: SiByte Id: cfe_api.h,v 1.29 2002/07/09 23:29:11 cgd Exp $ */
+/* from: Broadcom Id: cfe_api.h,v 1.31 2006/08/24 02:13:56 binh Exp $ */
 
 /*-
  * Copyright 2000, 2001, 2002
@@ -154,6 +153,7 @@ int64_t cfe_getticks(void);
 #define cfe_cpu_start(a,b,c,d,e)	__cfe_cpu_start(a,b,c,d,e)
 #define cfe_cpu_stop(a)			__cfe_cpu_stop(a)
 #define cfe_enumenv(a,b,d,e,f)		__cfe_enumenv(a,b,d,e,f)
+#define cfe_enumdev(a,b,c)		__cfe_enumdev(a,b,c)
 #define cfe_enummem(a,b,c,d,e)		__cfe_enummem(a,b,c,d,e)
 #define cfe_exit(a,b)			__cfe_exit(a,b)
 #define cfe_flushcache(a)		__cfe_cacheflush(a)
@@ -176,6 +176,7 @@ int cfe_close(int handle);
 int cfe_cpu_start(int cpu, void (*fn)(void), long sp, long gp, long a1);
 int cfe_cpu_stop(int cpu);
 int cfe_enumenv(int idx, char *name, int namelen, char *val, int vallen);
+int cfe_enumdev(int idx, char *name, int namelen);
 int cfe_enummem(int idx, int flags, uint64_t *start, uint64_t *length,
 		uint64_t *type);
 int cfe_exit(int warm,int status);

Modified: head/sys/dev/cfe/cfe_api_int.h
==============================================================================
--- head/sys/dev/cfe/cfe_api_int.h	Mon Aug  1 16:24:46 2016	(r303620)
+++ head/sys/dev/cfe/cfe_api_int.h	Mon Aug  1 16:26:08 2016	(r303621)
@@ -1,5 +1,4 @@
-/* $NetBSD: cfe_api_int.h,v 1.2 2003/02/07 17:38:48 cgd Exp $ */
-/* from: SiByte Id: cfe_api_int.h,v 1.21 2002/07/09 23:29:11 cgd Exp $ */
+/* from: Broadcom Id: cfe_api_int.h,v 1.22 2003/02/07 17:27:56 cgd Exp $ */
 
 /*-
  * Copyright 2000, 2001, 2002

Modified: head/sys/dev/cfe/cfe_error.h
==============================================================================
--- head/sys/dev/cfe/cfe_error.h	Mon Aug  1 16:24:46 2016	(r303620)
+++ head/sys/dev/cfe/cfe_error.h	Mon Aug  1 16:26:08 2016	(r303621)
@@ -1,5 +1,4 @@
-/* $NetBSD: cfe_error.h,v 1.2 2003/02/07 17:38:48 cgd Exp $ */
-/* from: SiByte Id: cfe_error.h,v 1.2 2002/07/09 19:37:52 cgd Exp $ */
+/* from: Broadcom Id: cfe_error.h,v 1.3 2003/02/07 17:27:56 cgd Exp $ */
 
 /*-
  * Copyright 2000, 2001, 2002

Modified: head/sys/dev/cfe/cfe_ioctl.h
==============================================================================
--- head/sys/dev/cfe/cfe_ioctl.h	Mon Aug  1 16:24:46 2016	(r303620)
+++ head/sys/dev/cfe/cfe_ioctl.h	Mon Aug  1 16:26:08 2016	(r303621)
@@ -1,14 +1,13 @@
-/* $NetBSD: cfe_ioctl.h,v 1.2 2003/02/07 17:52:08 cgd Exp $ */
-
 /*-
- * Copyright 2000, 2001
+ * Copyright 2000, 2001, 2002, 2003
  * Broadcom Corporation. All rights reserved.
  *
- * This software is furnished under license and may be used and copied only
- * in accordance with the following terms and conditions.  Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * modified or unmodified copies of this software in source and/or binary
- * form. No title or ownership is transferred hereby.
+ * This software is furnished under license and may be used and 
+ * copied only in accordance with the following terms and 
+ * conditions.  Subject to these conditions, you may download, 
+ * copy, install, use, modify and distribute modified or unmodified 
+ * copies of this software in source and/or binary form.  No title 
+ * or ownership is transferred hereby.
  *
  * 1) Any source code used, modified or distributed must reproduce and
  *    retain this copyright notice and list of conditions as they appear in
@@ -41,7 +40,7 @@
     *  
     *  IOCTL function numbers and I/O data structures.
     *  
-    *  Author:  Mitch Lichtenberg (mpl@broadcom.com)
+    *  Author:  Mitch Lichtenberg
     *  
     ********************************************************************* */
 
@@ -53,23 +52,115 @@
 #define IOCTL_NVRAM_GETINFO	1	/* return nvram_info_t */
 #define IOCTL_NVRAM_ERASE	2	/* erase sector containing nvram_info_t area */
 #define IOCTL_FLASH_ERASE_SECTOR 3	/* erase an arbitrary sector */
-#define IOCTL_FLASH_ERASE_ALL 4		/* Erase the entire flash */
+#define IOCTL_FLASH_ERASE_ALL   4	/* Erase the entire flash */
+#define IOCTL_FLASH_WRITE_ALL	5	/* write entire flash */
+#define IOCTL_FLASH_GETINFO	6	/* get flash device info */
+#define IOCTL_FLASH_GETSECTORS	7	/* get sector information */
+#define IOCTL_FLASH_ERASE_RANGE 8	/* erase range of bytes */
+#define IOCTL_NVRAM_UNLOCK	9	/* allow r/w beyond logical end of device */
+#define IOCTL_FLASH_PROTECT_RANGE 10	/* Protect a group of sectors */
+#define IOCTL_FLASH_UNPROTECT_RANGE 11	/* unprotect a group of sectors */
+#define IOCTL_FLASH_DATA_WIDTH_MODE	12 	/* switch flash and gen bus to support 8 or 16-bit mode I/Os */
+#define IOCTL_FLASH_BURST_MODE	13	/* configure gen bus for burst mode */
+
+typedef struct flash_range_s {
+    unsigned int range_base;
+    unsigned int range_length;
+} flash_range_t;
+
+typedef struct flash_info_s {
+    unsigned long long flash_base;	/* flash physical base address */
+    unsigned int flash_size;		/* available device size in bytes */
+    unsigned int flash_type;		/* type, from FLASH_TYPE below */
+    unsigned int flash_flags;		/* Various flags (FLASH_FLAG_xxx) */
+} flash_info_t;
+
+typedef struct flash_sector_s {
+    int flash_sector_idx;
+    int flash_sector_status;
+    unsigned int flash_sector_offset;
+    unsigned int flash_sector_size;
+} flash_sector_t;
+
+#define FLASH_SECTOR_OK		0
+#define FLASH_SECTOR_INVALID	-1
+
+#define FLASH_TYPE_UNKNOWN	0	/* not sure what kind of flash */
+#define FLASH_TYPE_SRAM		1	/* not flash: it's SRAM */
+#define FLASH_TYPE_ROM		2	/* not flash: it's ROM */
+#define FLASH_TYPE_FLASH	3	/* it's flash memory of some sort */
+
+#define FLASH_FLAG_NOERASE	1	/* Byte-range writes supported,
+					   Erasing is not necessary */
 
 typedef struct nvram_info_s {
-    int nvram_offset;		/* offset of environment area */
-    int nvram_size;		/* size of environment area */
-    int nvram_eraseflg;		/* true if we need to erase first */
+    int nvram_offset;			/* offset of environment area */
+    int nvram_size;			/* size of environment area */
+    int nvram_eraseflg;			/* true if we need to erase first */
 } nvram_info_t;
 
 /*  *********************************************************************
     *  Ethernet stuff
     ********************************************************************* */
 
-#define IOCTL_ETHER_GETHWADDR	1
+#define IOCTL_ETHER_GETHWADDR	1	/* Get hardware address (6bytes) */
+#define IOCTL_ETHER_SETHWADDR   2	/* Set hardware address (6bytes) */
+#define IOCTL_ETHER_GETSPEED    3	/* Get Speed and Media (int) */
+#define IOCTL_ETHER_SETSPEED    4	/* Set Speed and Media (int) */
+#define IOCTL_ETHER_GETLINK	5	/* get link status (int) */
+#define IOCTL_ETHER_GETLOOPBACK	7	/* get loopback state */
+#define IOCTL_ETHER_SETLOOPBACK	8	/* set loopback state */
+#define IOCTL_ETHER_SETPACKETFIFO 9	/* set packet fifo mode (int) */
+#define IOCTL_ETHER_SETSTROBESIG 10	/* set strobe signal (int) */
+
+#define ETHER_LOOPBACK_OFF	0	/* no loopback */
+#define ETHER_LOOPBACK_INT	1	/* Internal loopback */
+#define ETHER_LOOPBACK_EXT	2	/* External loopback (through PHY) */
+
+#define ETHER_SPEED_AUTO	0	/* Auto detect */
+#define ETHER_SPEED_UNKNOWN	0	/* Speed not known (on link status) */
+#define ETHER_SPEED_10HDX	1	/* 10MB hdx and fdx */
+#define ETHER_SPEED_10FDX	2
+#define ETHER_SPEED_100HDX	3	/* 100MB hdx and fdx */
+#define ETHER_SPEED_100FDX	4
+#define ETHER_SPEED_1000HDX	5	/* 1000MB hdx and fdx */
+#define ETHER_SPEED_1000FDX	6
+
+#define ETHER_FIFO_8		0	/* 8-bit packet fifo mode */
+#define ETHER_FIFO_16		1	/* 16-bit packet fifo mode */
+#define ETHER_ETHER		2	/* Standard ethernet mode */
+
+#define ETHER_STROBE_GMII	0	/* GMII style strobe signal */
+#define ETHER_STROBE_ENCODED	1	/* Encoded */
+#define ETHER_STROBE_SOP	2	/* SOP flagged. Only in 8-bit mode*/
+#define ETHER_STROBE_EOP	3	/* EOP flagged. Only in 8-bit mode*/
+
+/*  *********************************************************************
+    *  Serial Ports
+    ********************************************************************* */
+
+#define IOCTL_SERIAL_SETSPEED	1	/* get baud rate (int) */
+#define IOCTL_SERIAL_GETSPEED	2	/* set baud rate (int) */
+#define IOCTL_SERIAL_SETFLOW	3	/* Set Flow Control */
+#define IOCTL_SERIAL_GETFLOW	4	/* Get Flow Control */
+
+#define SERIAL_FLOW_NONE	0	/* no flow control */
+#define SERIAL_FLOW_SOFTWARE	1	/* software flow control (not impl) */
+#define SERIAL_FLOW_HARDWARE	2	/* hardware flow control */
 
 /*  *********************************************************************
     *  Block device stuff
     ********************************************************************* */
 
-#define IOCTL_BLOCK_GETBLOCKSIZE 1
-#define IOCTL_BLOCK_GETTOTALBLOCKS 2
+#define IOCTL_BLOCK_GETBLOCKSIZE 1	/* get block size (int) */
+#define IOCTL_BLOCK_GETTOTALBLOCKS 2	/* get total bocks (long long) */
+#define IOCTL_BLOCK_GETDEVTYPE 3	/* get device type (struct) */
+
+typedef struct blockdev_info_s {
+    unsigned long long blkdev_totalblocks;
+    unsigned int blkdev_blocksize;
+    unsigned int blkdev_devtype;
+} blockdev_info_t;
+
+#define BLOCK_DEVTYPE_DISK	0
+#define BLOCK_DEVTYPE_CDROM	1



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608011626.u71GQ8Cj082940>