xref: /onnv-gate/usr/src/cmd/hal/hald/solaris/devinfo_ieee1394.c (revision 6112:28ee9a48b832)
12912Sartem /***************************************************************************
22912Sartem  *
32912Sartem  * devinfo_ieee1394.c : IEEE 1394/FireWire devices
42912Sartem  *
5*6112Sqz150045  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
62912Sartem  * Use is subject to license terms.
72912Sartem  *
82912Sartem  * Licensed under the Academic Free License version 2.1
92912Sartem  *
102912Sartem  **************************************************************************/
112912Sartem 
122916Sartem #pragma ident	"%Z%%M%	%I%	%E% SMI"
132916Sartem 
143121Sartem #ifdef HAVE_CONFIG_H
153121Sartem #  include <config.h>
163121Sartem #endif
173121Sartem 
182912Sartem #include <stdio.h>
192912Sartem #include <string.h>
202912Sartem #include <libdevinfo.h>
212912Sartem #include <sys/types.h>
222912Sartem #include <sys/mkdev.h>
232912Sartem #include <sys/stat.h>
242912Sartem 
252912Sartem #include "../osspec.h"
262912Sartem #include "../logger.h"
272912Sartem #include "../hald.h"
282912Sartem #include "../hald_dbus.h"
292912Sartem #include "../device_info.h"
302912Sartem #include "../util.h"
312912Sartem #include "../ids.h"
322912Sartem #include "hotplug.h"
332912Sartem #include "devinfo.h"
342912Sartem #include "devinfo_ieee1394.h"
352912Sartem 
362912Sartem HalDevice *devinfo_ieee1394_add(HalDevice *parent, di_node_t node, char *devfs_path, char *device_type);
372912Sartem static HalDevice *devinfo_scsa1394_add(HalDevice *d, di_node_t node, gchar *devfs_path);
382912Sartem 
392912Sartem DevinfoDevHandler devinfo_ieee1394_handler = {
402912Sartem         devinfo_ieee1394_add,
412912Sartem 	NULL,
422912Sartem 	NULL,
432912Sartem 	NULL,
442912Sartem 	NULL,
452912Sartem         NULL
462912Sartem };
472912Sartem 
482912Sartem HalDevice *
devinfo_ieee1394_add(HalDevice * parent,di_node_t node,char * devfs_path,char * device_type)492912Sartem devinfo_ieee1394_add(HalDevice *parent, di_node_t node, char *devfs_path, char *device_type)
502912Sartem {
512912Sartem 	HalDevice *d = NULL;
522912Sartem 	char	*compat;
532912Sartem 	char	*driver_name;
542912Sartem 
552912Sartem 	/*
562912Sartem 	 * we distinguish 1394 devices by compatible name
572912Sartem 	 * starting with 'firewire'
582912Sartem 	 */
592912Sartem 	if ((di_compatible_names (node, &compat) < 1) ||
602912Sartem 	    (strncmp (compat, "firewire", sizeof ("firewire") - 1) != 0)) {
612912Sartem 		return (NULL);
622912Sartem 	}
632912Sartem 
642912Sartem 	if ((driver_name = di_driver_name (node)) == NULL) {
652912Sartem 		return (NULL);
662912Sartem 	}
672912Sartem 
682912Sartem 	if (strcmp (driver_name, "scsa1394") == 0) {
692912Sartem 		d = devinfo_scsa1394_add (parent, node, devfs_path);
702912Sartem 	}
712912Sartem 
722912Sartem 	return (d);
732912Sartem }
742912Sartem 
752912Sartem static HalDevice *
devinfo_scsa1394_add(HalDevice * parent,di_node_t node,gchar * devfs_path)762912Sartem devinfo_scsa1394_add(HalDevice *parent, di_node_t node, gchar *devfs_path)
772912Sartem {
782912Sartem 	HalDevice *d = NULL;
792912Sartem 
802912Sartem 	d = hal_device_new ();
812912Sartem 
822912Sartem 	devinfo_set_default_properties (d, parent, node, devfs_path);
83*6112Sqz150045 	hal_device_property_set_string (d, "info.subsystem", "ieee1394");
842912Sartem 	hal_device_property_set_string (d, "info.product", "FireWire SBP-2 device");
852912Sartem 
862912Sartem 	devinfo_add_enqueue (d, devfs_path, &devinfo_ieee1394_handler);
872912Sartem 
882912Sartem 	return (d);
892912Sartem }
902912Sartem 
91