mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 09:19:51 +00:00
![Viresh Kumar](/assets/img/avatar_default.png)
spilib is used by multiple users currently (spi.c and fw-core.c) but commit aa52b62a0556 broke that hierarchy and introduced gbphy dependent code in spilib. This may have unreliable consequences as we are doing following operation unconditionally now: gbphy_dev = to_gbphy_dev(spi->parent); gbphy_runtime_get_sync(gbphy_dev); which may not go well when the parent is of type &bundle->dev (fw-core.c). This patch introduces spilib_ops and lets the users of the core register them. This shall have no functional change for the spi.c usecase and shall fix the unreliable results for the fw-core.c usecase. Tested by writing to mtd0 dev and verifying (with print messages) that the below routines are getting called for a gpbridge-test module. Fixes: aa52b62a0556 ("spi: Add runtime_pm support") Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
24 lines
544 B
C
24 lines
544 B
C
/*
|
|
* Greybus SPI library header
|
|
*
|
|
* copyright 2016 google inc.
|
|
* copyright 2016 linaro ltd.
|
|
*
|
|
* released under the gplv2 only.
|
|
*/
|
|
|
|
#ifndef __SPILIB_H
|
|
#define __SPILIB_H
|
|
|
|
struct device;
|
|
struct gb_connection;
|
|
|
|
struct spilib_ops {
|
|
int (*prepare_transfer_hardware)(struct device *dev);
|
|
void (*unprepare_transfer_hardware)(struct device *dev);
|
|
};
|
|
|
|
int gb_spilib_master_init(struct gb_connection *connection, struct device *dev, struct spilib_ops *ops);
|
|
void gb_spilib_master_exit(struct gb_connection *connection);
|
|
|
|
#endif /* __SPILIB_H */
|