1/*************************************************************************** 2 * 3 * devinfo_ieee1394.c : IEEE 1394/FireWire devices 4 * 5 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 6 * Use is subject to license terms. 7 * 8 * Licensed under the Academic Free License version 2.1 9 * 10 **************************************************************************/ 11 12#pragma ident "%Z%%M% %I% %E% SMI" 13 14#ifdef HAVE_CONFIG_H 15# include <config.h> 16#endif 17 18#include <stdio.h> 19#include <string.h> 20#include <libdevinfo.h> 21#include <sys/types.h> 22#include <sys/mkdev.h> 23#include <sys/stat.h> 24 25#include "../osspec.h" 26#include "../logger.h" 27#include "../hald.h" 28#include "../hald_dbus.h" 29#include "../device_info.h" 30#include "../util.h" 31#include "../ids.h" 32#include "hotplug.h" 33#include "devinfo.h" 34#include "devinfo_ieee1394.h" 35 36HalDevice *devinfo_ieee1394_add(HalDevice *parent, di_node_t node, char *devfs_path, char *device_type); 37static HalDevice *devinfo_scsa1394_add(HalDevice *d, di_node_t node, gchar *devfs_path); 38 39DevinfoDevHandler devinfo_ieee1394_handler = { 40 devinfo_ieee1394_add, 41 NULL, 42 NULL, 43 NULL, 44 NULL, 45 NULL 46}; 47 48HalDevice * 49devinfo_ieee1394_add(HalDevice *parent, di_node_t node, char *devfs_path, char *device_type) 50{ 51 HalDevice *d = NULL; 52 char *compat; 53 char *driver_name; 54 55 /* 56 * we distinguish 1394 devices by compatible name 57 * starting with 'firewire' 58 */ 59 if ((di_compatible_names (node, &compat) < 1) || 60 (strncmp (compat, "firewire", sizeof ("firewire") - 1) != 0)) { 61 return (NULL); 62 } 63 64 if ((driver_name = di_driver_name (node)) == NULL) { 65 return (NULL); 66 } 67 68 if (strcmp (driver_name, "scsa1394") == 0) { 69 d = devinfo_scsa1394_add (parent, node, devfs_path); 70 } 71 72 return (d); 73} 74 75static HalDevice * 76devinfo_scsa1394_add(HalDevice *parent, di_node_t node, gchar *devfs_path) 77{ 78 HalDevice *d = NULL; 79 80 d = hal_device_new (); 81 82 devinfo_set_default_properties (d, parent, node, devfs_path); 83 hal_device_property_set_string (d, "info.subsystem", "ieee1394"); 84 hal_device_property_set_string (d, "info.product", "FireWire SBP-2 device"); 85 86 devinfo_add_enqueue (d, devfs_path, &devinfo_ieee1394_handler); 87 88 return (d); 89} 90 91