mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-02 01:20:54 +00:00
7dfafb3561
- Add MMC/SD support. - Update LIB_DEPENDS to new format. PR: 183236 Submitted by: avilla (myself) Approved by: gnome (maintainer timeout) - Fix plist when PREFIX != LOCALBASE Reported by: poudriere testport
110 lines
3.6 KiB
C
110 lines
3.6 KiB
C
--- ./hald/freebsd/hf-memcard.c.orig 2013-10-22 01:49:10.228430727 +0200
|
|
+++ ./hald/freebsd/hf-memcard.c 2013-10-22 01:48:06.869268391 +0200
|
|
@@ -0,0 +1,106 @@
|
|
+/***************************************************************************
|
|
+ * CVSID: $Id$
|
|
+ *
|
|
+ * hf-memcard.c : memory card support
|
|
+ *
|
|
+ * Copyright (C) 2013 Alberto Villa <avilla@FreeBSD.org>
|
|
+ *
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
+ * it under the terms of the GNU General Public License as published by
|
|
+ * the Free Software Foundation; either version 2 of the License, or
|
|
+ * (at your option) any later version.
|
|
+ *
|
|
+ * This program is distributed in the hope that it will be useful,
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+ * GNU General Public License for more details.
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License
|
|
+ * along with this program; if not, write to the Free Software
|
|
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
+ *
|
|
+ **************************************************************************/
|
|
+
|
|
+#ifdef HAVE_CONFIG_H
|
|
+# include <config.h>
|
|
+#endif
|
|
+
|
|
+#include <string.h>
|
|
+#include <errno.h>
|
|
+#include <stdlib.h>
|
|
+#include <unistd.h>
|
|
+
|
|
+#include "../logger.h"
|
|
+
|
|
+#include "hf-memcard.h"
|
|
+#include "hf-block.h"
|
|
+#include "hf-devtree.h"
|
|
+#include "hf-storage.h"
|
|
+#include "hf-util.h"
|
|
+
|
|
+static HalDevice *
|
|
+hf_memcard_block_device_new (HalDevice *parent,
|
|
+ const char *driver,
|
|
+ int unit,
|
|
+ const char *drive_type)
|
|
+{
|
|
+ HalDevice *device;
|
|
+ char devname[16];
|
|
+
|
|
+ snprintf(devname, sizeof(devname), "%s%d", driver, unit);
|
|
+
|
|
+ g_return_val_if_fail(HAL_IS_DEVICE(parent), NULL);
|
|
+ g_return_val_if_fail(devname != NULL, NULL);
|
|
+
|
|
+ device = hf_device_new(parent);
|
|
+
|
|
+ hf_devtree_device_set_name(device, devname);
|
|
+ hf_block_device_enable(device, devname);
|
|
+
|
|
+ hf_storage_device_enable(device);
|
|
+
|
|
+ hal_device_copy_property(parent, "info.subsystem", device, "storage.bus");
|
|
+ hal_device_property_set_string(device, "storage.originating_device", hal_device_get_udi(parent));
|
|
+ hal_device_property_set_bool(device, "storage.removable", TRUE);
|
|
+ hal_device_property_set_bool(device, "storage.media_check_enabled", TRUE);
|
|
+ hal_device_property_set_bool(device, "storage.removable.support_async_notification", FALSE);
|
|
+ hal_device_property_set_bool(device, "storage.hotpluggable", TRUE);
|
|
+ if (drive_type)
|
|
+ {
|
|
+ hal_device_property_set_string(device, "storage.drive_type", drive_type);
|
|
+ }
|
|
+
|
|
+ if (hf_device_preprobe(device))
|
|
+ {
|
|
+ hf_block_device_complete(device, device, FALSE);
|
|
+ hf_device_add(device);
|
|
+ hf_storage_device_probe(device, FALSE);
|
|
+ }
|
|
+
|
|
+ return device;
|
|
+}
|
|
+
|
|
+void
|
|
+hf_mmc_host_set_properties (HalDevice *device)
|
|
+{
|
|
+ hal_device_property_set_string(device, "info.subsystem", "mmc_host");
|
|
+ hal_device_copy_property(device, "freebsd.unit", device, "mmc_host.host");
|
|
+}
|
|
+
|
|
+void
|
|
+hf_mmc_set_properties (HalDevice *device)
|
|
+{
|
|
+ HalDevice *block_device;
|
|
+
|
|
+ hal_device_property_set_string(device, "info.subsystem", "mmc");
|
|
+
|
|
+ hf_memcard_block_device_new(device,
|
|
+ hal_device_property_get_string(device, "freebsd.driver"),
|
|
+ hal_device_property_get_int(device, "freebsd.unit"),
|
|
+ "sd_mmc");
|
|
+
|
|
+ /* This information belongs to the block device. */
|
|
+ hal_device_property_remove(device, "freebsd.device_file");
|
|
+ hal_device_property_remove(device, "freebsd.driver");
|
|
+ hal_device_property_remove(device, "freebsd.unit");
|
|
+}
|