-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
drivers/fsi: Add fsi master definition
Add a `struct fsi_master` to represent a FSI master controller. FSI master drivers register one of these structs to provide device-specific of the standard operations: read/write/term/break and link control. Includes changes from Edward A. James <[email protected]> & Jeremy Kerr <[email protected]>. Signed-off-by: Jeremy Kerr <[email protected]> Signed-off-by: Chris Bostic <[email protected]> Signed-off-by: Joel Stanley <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
- Loading branch information
Showing
2 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/* | ||
* FSI master definitions. These comprise the core <--> master interface, | ||
* to allow the core to interact with the (hardware-specific) masters. | ||
* | ||
* Copyright (C) IBM Corporation 2016 | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
*/ | ||
|
||
#ifndef DRIVERS_FSI_MASTER_H | ||
#define DRIVERS_FSI_MASTER_H | ||
|
||
#include <linux/device.h> | ||
|
||
struct fsi_master { | ||
struct device dev; | ||
int idx; | ||
int n_links; | ||
int flags; | ||
int (*read)(struct fsi_master *, int link, uint8_t id, | ||
uint32_t addr, void *val, size_t size); | ||
int (*write)(struct fsi_master *, int link, uint8_t id, | ||
uint32_t addr, const void *val, size_t size); | ||
int (*term)(struct fsi_master *, int link, uint8_t id); | ||
int (*send_break)(struct fsi_master *, int link); | ||
int (*link_enable)(struct fsi_master *, int link); | ||
}; | ||
|
||
#define dev_to_fsi_master(d) container_of(d, struct fsi_master, dev) | ||
|
||
extern int fsi_master_register(struct fsi_master *master); | ||
extern void fsi_master_unregister(struct fsi_master *master); | ||
|
||
#endif /* DRIVERS_FSI_MASTER_H */ |