![Greg Kroah-Hartman](/assets/img/avatar_default.png)
Now that the SPDX tag is in all greybus files, that identifies the license in a specific and legally-defined manner. So the extra GPL text wording can be removed as it is no longer needed at all. This is done on a quest to remove the 700+ different ways that files in the kernel describe the GPL license text. And there's unneeded stuff like the address (sometimes incorrect) for the FSF which is never needed. No copyright headers or other non-license-description text was removed. Cc: Vaibhav Hiremath <hvaibhav.linux@gmail.com> Reviewed-by: Alex Elder <elder@linaro.org> Acked-by: Vaibhav Agarwal <vaibhav.sr@gmail.com> Acked-by: David Lin <dtwlin@gmail.com> Acked-by: Johan Hovold <johan@kernel.org> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Acked-by: Mark Greer <mgreer@animalcreek.com> Acked-by: Rui Miguel Silva <rmfrfs@gmail.com> Acked-by: "Bryan O'Donoghue" <pure.logic@nexus-software.ie> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
79 lines
1.7 KiB
C
79 lines
1.7 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* SPI bridge PHY driver.
|
|
*
|
|
* Copyright 2014-2016 Google Inc.
|
|
* Copyright 2014-2016 Linaro Ltd.
|
|
*/
|
|
|
|
#include <linux/module.h>
|
|
|
|
#include "greybus.h"
|
|
#include "gbphy.h"
|
|
#include "spilib.h"
|
|
|
|
static struct spilib_ops *spilib_ops;
|
|
|
|
static int gb_spi_probe(struct gbphy_device *gbphy_dev,
|
|
const struct gbphy_device_id *id)
|
|
{
|
|
struct gb_connection *connection;
|
|
int ret;
|
|
|
|
connection = gb_connection_create(gbphy_dev->bundle,
|
|
le16_to_cpu(gbphy_dev->cport_desc->id),
|
|
NULL);
|
|
if (IS_ERR(connection))
|
|
return PTR_ERR(connection);
|
|
|
|
ret = gb_connection_enable(connection);
|
|
if (ret)
|
|
goto exit_connection_destroy;
|
|
|
|
ret = gb_spilib_master_init(connection, &gbphy_dev->dev, spilib_ops);
|
|
if (ret)
|
|
goto exit_connection_disable;
|
|
|
|
gb_gbphy_set_data(gbphy_dev, connection);
|
|
|
|
gbphy_runtime_put_autosuspend(gbphy_dev);
|
|
return 0;
|
|
|
|
exit_connection_disable:
|
|
gb_connection_disable(connection);
|
|
exit_connection_destroy:
|
|
gb_connection_destroy(connection);
|
|
|
|
return ret;
|
|
}
|
|
|
|
static void gb_spi_remove(struct gbphy_device *gbphy_dev)
|
|
{
|
|
struct gb_connection *connection = gb_gbphy_get_data(gbphy_dev);
|
|
int ret;
|
|
|
|
ret = gbphy_runtime_get_sync(gbphy_dev);
|
|
if (ret)
|
|
gbphy_runtime_get_noresume(gbphy_dev);
|
|
|
|
gb_spilib_master_exit(connection);
|
|
gb_connection_disable(connection);
|
|
gb_connection_destroy(connection);
|
|
}
|
|
|
|
static const struct gbphy_device_id gb_spi_id_table[] = {
|
|
{ GBPHY_PROTOCOL(GREYBUS_PROTOCOL_SPI) },
|
|
{ },
|
|
};
|
|
MODULE_DEVICE_TABLE(gbphy, gb_spi_id_table);
|
|
|
|
static struct gbphy_driver spi_driver = {
|
|
.name = "spi",
|
|
.probe = gb_spi_probe,
|
|
.remove = gb_spi_remove,
|
|
.id_table = gb_spi_id_table,
|
|
};
|
|
|
|
module_gbphy_driver(spi_driver);
|
|
MODULE_LICENSE("GPL v2");
|