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

Commit fbce71ca authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'spi/topic/devm' into spi-s3c64xx

parents 50c959fc 666d5b4c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -302,3 +302,6 @@ PHY

SLAVE DMA ENGINE
  devm_acpi_dma_controller_register()

SPI
  devm_spi_register_master()
+35 −0
Original line number Diff line number Diff line
@@ -1245,6 +1245,41 @@ int spi_register_master(struct spi_master *master)
}
EXPORT_SYMBOL_GPL(spi_register_master);

static void devm_spi_unregister(struct device *dev, void *res)
{
	spi_unregister_master(*(struct spi_master **)res);
}

/**
 * dev_spi_register_master - register managed SPI master controller
 * @dev:    device managing SPI master
 * @master: initialized master, originally from spi_alloc_master()
 * Context: can sleep
 *
 * Register a SPI device as with spi_register_master() which will
 * automatically be unregister
 */
int devm_spi_register_master(struct device *dev, struct spi_master *master)
{
	struct spi_master **ptr;
	int ret;

	ptr = devres_alloc(devm_spi_unregister, sizeof(*ptr), GFP_KERNEL);
	if (!ptr)
		return -ENOMEM;

	ret = spi_register_master(master);
	if (ret != 0) {
		*ptr = master;
		devres_add(dev, ptr);
	} else {
		devres_free(ptr);
	}

	return ret;
}
EXPORT_SYMBOL_GPL(devm_spi_register_master);

static int __unregister(struct device *dev, void *null)
{
	spi_unregister_device(to_spi_device(dev));
+2 −0
Original line number Diff line number Diff line
@@ -434,6 +434,8 @@ extern struct spi_master *
spi_alloc_master(struct device *host, unsigned size);

extern int spi_register_master(struct spi_master *master);
extern int devm_spi_register_master(struct device *dev,
				    struct spi_master *master);
extern void spi_unregister_master(struct spi_master *master);

extern struct spi_master *spi_busnum_to_master(u16 busnum);