#include <linux/acpi.h>
#include <linux/delay.h>
#include <linux/mod_devicetable.h>
#include <linux/pm_runtime.h>
#include <linux/soundwire/sdw_registers.h>
#include <linux/soundwire/sdw.h>
#include <linux/soundwire/sdw_type.h>
#include "bus.h"
#include "irq.h"
#include "sysfs_local.h"
static DEFINE_IDA(sdw_bus_ida);
static int sdw_get_id(struct sdw_bus *bus)
{ … }
int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent,
struct fwnode_handle *fwnode)
{ … }
EXPORT_SYMBOL(…);
static int sdw_delete_slave(struct device *dev, void *data)
{ … }
void sdw_bus_master_delete(struct sdw_bus *bus)
{ … }
EXPORT_SYMBOL(…);
static inline int find_response_code(enum sdw_command_response resp)
{ … }
static inline int do_transfer(struct sdw_bus *bus, struct sdw_msg *msg)
{ … }
static inline int do_transfer_defer(struct sdw_bus *bus,
struct sdw_msg *msg)
{ … }
static int sdw_transfer_unlocked(struct sdw_bus *bus, struct sdw_msg *msg)
{ … }
int sdw_transfer(struct sdw_bus *bus, struct sdw_msg *msg)
{ … }
void sdw_show_ping_status(struct sdw_bus *bus, bool sync_delay)
{ … }
EXPORT_SYMBOL(…);
int sdw_transfer_defer(struct sdw_bus *bus, struct sdw_msg *msg)
{ … }
int sdw_fill_msg(struct sdw_msg *msg, struct sdw_slave *slave,
u32 addr, size_t count, u16 dev_num, u8 flags, u8 *buf)
{ … }
static int sdw_ntransfer_no_pm(struct sdw_slave *slave, u32 addr, u8 flags,
size_t count, u8 *val)
{ … }
int sdw_nread_no_pm(struct sdw_slave *slave, u32 addr, size_t count, u8 *val)
{ … }
EXPORT_SYMBOL(…);
int sdw_nwrite_no_pm(struct sdw_slave *slave, u32 addr, size_t count, const u8 *val)
{ … }
EXPORT_SYMBOL(…);
int sdw_write_no_pm(struct sdw_slave *slave, u32 addr, u8 value)
{ … }
EXPORT_SYMBOL(…);
static int
sdw_bread_no_pm(struct sdw_bus *bus, u16 dev_num, u32 addr)
{ … }
static int
sdw_bwrite_no_pm(struct sdw_bus *bus, u16 dev_num, u32 addr, u8 value)
{ … }
int sdw_bread_no_pm_unlocked(struct sdw_bus *bus, u16 dev_num, u32 addr)
{ … }
EXPORT_SYMBOL(…);
int sdw_bwrite_no_pm_unlocked(struct sdw_bus *bus, u16 dev_num, u32 addr, u8 value)
{ … }
EXPORT_SYMBOL(…);
int sdw_read_no_pm(struct sdw_slave *slave, u32 addr)
{ … }
EXPORT_SYMBOL(…);
int sdw_update_no_pm(struct sdw_slave *slave, u32 addr, u8 mask, u8 val)
{ … }
EXPORT_SYMBOL(…);
int sdw_update(struct sdw_slave *slave, u32 addr, u8 mask, u8 val)
{ … }
EXPORT_SYMBOL(…);
int sdw_nread(struct sdw_slave *slave, u32 addr, size_t count, u8 *val)
{ … }
EXPORT_SYMBOL(…);
int sdw_nwrite(struct sdw_slave *slave, u32 addr, size_t count, const u8 *val)
{ … }
EXPORT_SYMBOL(…);
int sdw_read(struct sdw_slave *slave, u32 addr)
{ … }
EXPORT_SYMBOL(…);
int sdw_write(struct sdw_slave *slave, u32 addr, u8 value)
{ … }
EXPORT_SYMBOL(…);
static struct sdw_slave *sdw_get_slave(struct sdw_bus *bus, int i)
{ … }
int sdw_compare_devid(struct sdw_slave *slave, struct sdw_slave_id id)
{ … }
EXPORT_SYMBOL(…);
static int sdw_get_device_num(struct sdw_slave *slave)
{ … }
static int sdw_assign_device_num(struct sdw_slave *slave)
{ … }
void sdw_extract_slave_id(struct sdw_bus *bus,
u64 addr, struct sdw_slave_id *id)
{ … }
EXPORT_SYMBOL(…);
static int sdw_program_device_num(struct sdw_bus *bus, bool *programmed)
{ … }
static void sdw_modify_slave_status(struct sdw_slave *slave,
enum sdw_slave_status status)
{ … }
static int sdw_slave_clk_stop_callback(struct sdw_slave *slave,
enum sdw_clk_stop_mode mode,
enum sdw_clk_stop_type type)
{ … }
static int sdw_slave_clk_stop_prepare(struct sdw_slave *slave,
enum sdw_clk_stop_mode mode,
bool prepare)
{ … }
static int sdw_bus_wait_for_clk_prep_deprep(struct sdw_bus *bus, u16 dev_num, bool prepare)
{ … }
int sdw_bus_prep_clk_stop(struct sdw_bus *bus)
{ … }
EXPORT_SYMBOL(…);
int sdw_bus_clk_stop(struct sdw_bus *bus)
{ … }
EXPORT_SYMBOL(…);
int sdw_bus_exit_clk_stop(struct sdw_bus *bus)
{ … }
EXPORT_SYMBOL(…);
int sdw_configure_dpn_intr(struct sdw_slave *slave,
int port, bool enable, int mask)
{ … }
static int sdw_slave_set_frequency(struct sdw_slave *slave)
{ … }
static int sdw_initialize_slave(struct sdw_slave *slave)
{ … }
static int sdw_handle_dp0_interrupt(struct sdw_slave *slave, u8 *slave_status)
{ … }
static int sdw_handle_port_interrupt(struct sdw_slave *slave,
int port, u8 *slave_status)
{ … }
static int sdw_handle_slave_alerts(struct sdw_slave *slave)
{ … }
static int sdw_update_slave_status(struct sdw_slave *slave,
enum sdw_slave_status status)
{ … }
int sdw_handle_slave_status(struct sdw_bus *bus,
enum sdw_slave_status status[])
{ … }
EXPORT_SYMBOL(…);
void sdw_clear_slave_status(struct sdw_bus *bus, u32 request)
{ … }
EXPORT_SYMBOL(…);