On Thu, Jun 15, 2017 at 02:37:22PM -0600, Logan Gunthorpe wrote: > This commit adds the code to initialize the memory windows in the > hardware. This includes setting up the requester ID table, and > figuring out which bar corresponds to which memory window. (Seeing > the switch can be configured with any number of bars.) > > Also, seeing the device doesn't have hardware for scratchpads or > determining the link status, we create a shared memory window that has > these features. A magic number with a version copmonent will be used > to determine if the otherside's driver is actually up. > > Signed-off-by: Logan Gunthorpe <logang@xxxxxxxxxxxx> > Reviewed-by: Stephen Bates <sbates@xxxxxxxxxxxx> > Reviewed-by: Kurt Schwemmer <kurt.schwemmer@xxxxxxxxxxxxx> > --- > drivers/ntb/hw/mscc/switchtec_ntb.c | 296 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 296 insertions(+) > > diff --git a/drivers/ntb/hw/mscc/switchtec_ntb.c b/drivers/ntb/hw/mscc/switchtec_ntb.c > index 1f094216aa1c..756307d1a8a3 100644 > --- a/drivers/ntb/hw/mscc/switchtec_ntb.c > +++ b/drivers/ntb/hw/mscc/switchtec_ntb.c > @@ -15,37 +15,332 @@ > > #include <linux/switchtec.h> > #include <linux/module.h> > +#include <linux/delay.h> > > MODULE_DESCRIPTION("Microsemi Switchtec(tm) NTB Driver"); > MODULE_VERSION("0.1"); > MODULE_LICENSE("GPL"); > MODULE_AUTHOR("Microsemi Corporation"); > > +#ifndef ioread64 > +#ifdef readq > +#define ioread64 readq > +#else > +#define ioread64 _ioread64 > +static inline u64 _ioread64(void __iomem *mmio) > +{ > + u64 low, high; > + > + low = ioread32(mmio); > + high = ioread32(mmio + sizeof(u32)); > + return low | (high << 32); > +} > +#endif > +#endif Really? Don't we have ioread64 in generic code for all arches? If not, that should be fixed, don't hide this in a random driver please. Or just restrict your driver to only building on those arches that does provide this api. thanks, greg k-h