linux/drivers/fsi/fsi-master-hub.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * FSI hub master driver
 *
 * Copyright (C) IBM Corporation 2016
 */

#include <linux/delay.h>
#include <linux/fsi.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/slab.h>

#include "fsi-master.h"

#define FSI_ENGID_HUB_MASTER

#define FSI_LINK_ENABLE_SETUP_TIME

/*
 * FSI hub master support
 *
 * A hub master increases the number of potential target devices that the
 * primary FSI master can access. For each link a primary master supports,
 * each of those links can in turn be chained to a hub master with multiple
 * links of its own.
 *
 * The hub is controlled by a set of control registers exposed as a regular fsi
 * device (the hub->upstream device), and provides access to the downstream FSI
 * bus as through an address range on the slave itself (->addr and ->size).
 *
 * [This differs from "cascaded" masters, which expose the entire downstream
 * bus entirely through the fsi device address range, and so have a smaller
 * accessible address space.]
 */
struct fsi_master_hub {};

#define to_fsi_master_hub(m)

static int hub_master_read(struct fsi_master *master, int link,
			uint8_t id, uint32_t addr, void *val, size_t size)
{}

static int hub_master_write(struct fsi_master *master, int link,
			uint8_t id, uint32_t addr, const void *val, size_t size)
{}

static int hub_master_break(struct fsi_master *master, int link)
{}

static int hub_master_link_enable(struct fsi_master *master, int link,
				  bool enable)
{}

static void hub_master_release(struct device *dev)
{}

/* mmode encoders */
static inline u32 fsi_mmode_crs0(u32 x)
{}

static inline u32 fsi_mmode_crs1(u32 x)
{}

static int hub_master_init(struct fsi_master_hub *hub)
{}

static int hub_master_probe(struct device *dev)
{}

static int hub_master_remove(struct device *dev)
{}

static const struct fsi_device_id hub_master_ids[] =;

static struct fsi_driver hub_master_driver =;

module_fsi_driver();
MODULE_LICENSE();