Author: marius
Date: Mon Apr 26 19:13:10 2010
New Revision: 207243
URL: http://svn.freebsd.org/changeset/base/207243

Log:
  Add OF_getscsinitid(), a helper similar to OF_getetheraddr() but for
  obtaining the initiator ID to be used for SPI controllers from the
  Open Firmware device tree.

Modified:
  head/sys/sparc64/include/ofw_machdep.h
  head/sys/sparc64/sparc64/ofw_machdep.c
  head/sys/sun4v/include/ofw_machdep.h

Modified: head/sys/sparc64/include/ofw_machdep.h
==============================================================================
--- head/sys/sparc64/include/ofw_machdep.h      Mon Apr 26 18:56:06 2010        
(r207242)
+++ head/sys/sparc64/include/ofw_machdep.h      Mon Apr 26 19:13:10 2010        
(r207243)
@@ -36,6 +36,7 @@ typedef uint64_t cell_t;
 
 int  OF_decode_addr(phandle_t, int, int *, bus_addr_t *);
 void OF_getetheraddr(device_t, u_char *);
+u_int OF_getscsinitid(device_t);
 void cpu_shutdown(void *);
 int  ofw_entry(void *);
 void ofw_exit(void *);

Modified: head/sys/sparc64/sparc64/ofw_machdep.c
==============================================================================
--- head/sys/sparc64/sparc64/ofw_machdep.c      Mon Apr 26 18:56:06 2010        
(r207242)
+++ head/sys/sparc64/sparc64/ofw_machdep.c      Mon Apr 26 19:13:10 2010        
(r207243)
@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 2001 by Thomas Moestl <t...@freebsd.org>.
- * Copyright (c) 2005 - 2009 by Marius Strobl <mar...@freebsd.org>.
+ * Copyright (c) 2005 - 2010 by Marius Strobl <mar...@freebsd.org>.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -68,6 +68,19 @@ OF_getetheraddr(device_t dev, u_char *ad
        bcopy(&idp.id_ether, addr, ETHER_ADDR_LEN);
 }
 
+u_int
+OF_getscsinitid(device_t dev)
+{
+       phandle_t node;
+       uint32_t id;
+
+       for (node = ofw_bus_get_node(dev); node != 0; node = OF_parent(node))
+               if (OF_getprop(node, "scsi-initiator-id", &id,
+                   sizeof(id)) > 0)
+                       return (id);
+       return (7);
+}
+
 static __inline uint32_t
 phys_hi_mask_space(const char *bus, uint32_t phys_hi)
 {

Modified: head/sys/sun4v/include/ofw_machdep.h
==============================================================================
--- head/sys/sun4v/include/ofw_machdep.h        Mon Apr 26 18:56:06 2010        
(r207242)
+++ head/sys/sun4v/include/ofw_machdep.h        Mon Apr 26 19:13:10 2010        
(r207243)
@@ -36,6 +36,7 @@ typedef uint64_t cell_t;
 
 int  OF_decode_addr(phandle_t, int, int *, bus_addr_t *);
 void OF_getetheraddr(device_t, u_char *);
+u_int OF_getscsinitid(device_t);
 void cpu_shutdown(void *);
 int  ofw_entry(void *);
 void ofw_exit(void *);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to