Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aed80892 authored by Stefan Richter's avatar Stefan Richter
Browse files

firewire: core: move some functions

parent 41f321c2
Loading
Loading
Loading
Loading
+44 −46
Original line number Original line Diff line number Diff line
@@ -155,27 +155,6 @@ struct bus_type fw_bus_type = {
};
};
EXPORT_SYMBOL(fw_bus_type);
EXPORT_SYMBOL(fw_bus_type);


static void fw_device_release(struct device *dev)
{
	struct fw_device *device = fw_device(dev);
	struct fw_card *card = device->card;
	unsigned long flags;

	/*
	 * Take the card lock so we don't set this to NULL while a
	 * FW_NODE_UPDATED callback is being handled or while the
	 * bus manager work looks at this node.
	 */
	spin_lock_irqsave(&card->lock, flags);
	device->node->data = NULL;
	spin_unlock_irqrestore(&card->lock, flags);

	fw_node_put(device->node);
	kfree(device->config_rom);
	kfree(device);
	fw_card_put(card);
}

int fw_device_enable_phys_dma(struct fw_device *device)
int fw_device_enable_phys_dma(struct fw_device *device)
{
{
	int generation = device->generation;
	int generation = device->generation;
@@ -679,11 +658,53 @@ static void fw_device_shutdown(struct work_struct *work)
	fw_device_put(device);
	fw_device_put(device);
}
}


static void fw_device_release(struct device *dev)
{
	struct fw_device *device = fw_device(dev);
	struct fw_card *card = device->card;
	unsigned long flags;

	/*
	 * Take the card lock so we don't set this to NULL while a
	 * FW_NODE_UPDATED callback is being handled or while the
	 * bus manager work looks at this node.
	 */
	spin_lock_irqsave(&card->lock, flags);
	device->node->data = NULL;
	spin_unlock_irqrestore(&card->lock, flags);

	fw_node_put(device->node);
	kfree(device->config_rom);
	kfree(device);
	fw_card_put(card);
}

static struct device_type fw_device_type = {
static struct device_type fw_device_type = {
	.release = fw_device_release,
	.release = fw_device_release,
};
};


static void fw_device_update(struct work_struct *work);
static int update_unit(struct device *dev, void *data)
{
	struct fw_unit *unit = fw_unit(dev);
	struct fw_driver *driver = (struct fw_driver *)dev->driver;

	if (is_fw_unit(dev) && driver != NULL && driver->update != NULL) {
		down(&dev->sem);
		driver->update(unit);
		up(&dev->sem);
	}

	return 0;
}

static void fw_device_update(struct work_struct *work)
{
	struct fw_device *device =
		container_of(work, struct fw_device, work.work);

	fw_device_cdev_update(device);
	device_for_each_child(&device->device, NULL, update_unit);
}


/*
/*
 * If a device was pending for deletion because its node went away but its
 * If a device was pending for deletion because its node went away but its
@@ -851,29 +872,6 @@ static void fw_device_init(struct work_struct *work)
	put_device(&device->device);	/* our reference */
	put_device(&device->device);	/* our reference */
}
}


static int update_unit(struct device *dev, void *data)
{
	struct fw_unit *unit = fw_unit(dev);
	struct fw_driver *driver = (struct fw_driver *)dev->driver;

	if (is_fw_unit(dev) && driver != NULL && driver->update != NULL) {
		down(&dev->sem);
		driver->update(unit);
		up(&dev->sem);
	}

	return 0;
}

static void fw_device_update(struct work_struct *work)
{
	struct fw_device *device =
		container_of(work, struct fw_device, work.work);

	fw_device_cdev_update(device);
	device_for_each_child(&device->device, NULL, update_unit);
}

enum {
enum {
	REREAD_BIB_ERROR,
	REREAD_BIB_ERROR,
	REREAD_BIB_GONE,
	REREAD_BIB_GONE,