Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca58ce57 authored by Madalin Bucur's avatar Madalin Bucur Committed by David S. Miller
Browse files

fsl/fman: move struct fman to header file

parent 0df49584
Loading
Loading
Loading
Loading
+3 −77
Original line number Diff line number Diff line
@@ -32,9 +32,6 @@

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include "fman.h"
#include "fman_muram.h"

#include <linux/fsl/guts.h>
#include <linux/slab.h>
#include <linux/delay.h>
@@ -46,6 +43,9 @@
#include <linux/interrupt.h>
#include <linux/libfdt_env.h>

#include "fman.h"
#include "fman_muram.h"

/* General defines */
#define FMAN_LIODN_TBL			64	/* size of LIODN table */
#define MAX_NUM_OF_MACS			10
@@ -564,80 +564,6 @@ struct fman_cfg {
	u32 qmi_def_tnums_thresh;
};

/* Structure that holds information received from device tree */
struct fman_dts_params {
	void __iomem *base_addr;		/* FMan virtual address */
	struct resource *res;			/* FMan memory resource */
	u8 id;					/* FMan ID */

	int err_irq;				/* FMan Error IRQ */

	u16 clk_freq;				/* FMan clock freq (In Mhz) */

	u32 qman_channel_base;			/* QMan channels base */
	u32 num_of_qman_channels;		/* Number of QMan channels */

	struct resource muram_res;		/* MURAM resource */
};

/** fman_exceptions_cb
 * fman		- Pointer to FMan
 * exception	- The exception.
 *
 * Exceptions user callback routine, will be called upon an exception
 * passing the exception identification.
 *
 * Return: irq status
 */
typedef irqreturn_t (fman_exceptions_cb)(struct fman *fman,
					 enum fman_exceptions exception);

/** fman_bus_error_cb
 * fman		- Pointer to FMan
 * port_id	- Port id
 * addr		- Address that caused the error
 * tnum		- Owner of error
 * liodn	- Logical IO device number
 *
 * Bus error user callback routine, will be called upon bus error,
 * passing parameters describing the errors and the owner.
 *
 * Return: IRQ status
 */
typedef irqreturn_t (fman_bus_error_cb)(struct fman *fman, u8 port_id,
					u64 addr, u8 tnum, u16 liodn);

struct fman {
	struct device *dev;
	void __iomem *base_addr;
	struct fman_intr_src intr_mng[FMAN_EV_CNT];

	struct fman_fpm_regs __iomem *fpm_regs;
	struct fman_bmi_regs __iomem *bmi_regs;
	struct fman_qmi_regs __iomem *qmi_regs;
	struct fman_dma_regs __iomem *dma_regs;
	struct fman_hwp_regs __iomem *hwp_regs;
	fman_exceptions_cb *exception_cb;
	fman_bus_error_cb *bus_error_cb;
	/* Spinlock for FMan use */
	spinlock_t spinlock;
	struct fman_state_struct *state;

	struct fman_cfg *cfg;
	struct muram_info *muram;
	/* cam section in muram */
	unsigned long cam_offset;
	size_t cam_size;
	/* Fifo in MURAM */
	unsigned long fifo_offset;
	size_t fifo_size;

	u32 liodn_base[64];
	u32 liodn_offset[64];

	struct fman_dts_params dts_params;
};

static irqreturn_t fman_exceptions(struct fman *fman,
				   enum fman_exceptions exception)
{
+75 −0
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@
#define __FM_H

#include <linux/io.h>
#include <linux/interrupt.h>
#include <linux/of_irq.h>

/* FM Frame descriptor macros  */
/* Frame queue Context Override */
@@ -274,6 +276,79 @@ struct fman_intr_src {
	void *src_handle;
};

/** fman_exceptions_cb
 * fman         - Pointer to FMan
 * exception    - The exception.
 *
 * Exceptions user callback routine, will be called upon an exception
 * passing the exception identification.
 *
 * Return: irq status
 */
typedef irqreturn_t (fman_exceptions_cb)(struct fman *fman,
					 enum fman_exceptions exception);
/** fman_bus_error_cb
 * fman         - Pointer to FMan
 * port_id      - Port id
 * addr         - Address that caused the error
 * tnum         - Owner of error
 * liodn        - Logical IO device number
 *
 * Bus error user callback routine, will be called upon bus error,
 * passing parameters describing the errors and the owner.
 *
 * Return: IRQ status
 */
typedef irqreturn_t (fman_bus_error_cb)(struct fman *fman, u8 port_id,
					u64 addr, u8 tnum, u16 liodn);

/* Structure that holds information received from device tree */
struct fman_dts_params {
	void __iomem *base_addr;                /* FMan virtual address */
	struct resource *res;                   /* FMan memory resource */
	u8 id;                                  /* FMan ID */

	int err_irq;                            /* FMan Error IRQ */

	u16 clk_freq;                           /* FMan clock freq (In Mhz) */

	u32 qman_channel_base;                  /* QMan channels base */
	u32 num_of_qman_channels;               /* Number of QMan channels */

	struct resource muram_res;              /* MURAM resource */
};

struct fman {
	struct device *dev;
	void __iomem *base_addr;
	struct fman_intr_src intr_mng[FMAN_EV_CNT];

	struct fman_fpm_regs __iomem *fpm_regs;
	struct fman_bmi_regs __iomem *bmi_regs;
	struct fman_qmi_regs __iomem *qmi_regs;
	struct fman_dma_regs __iomem *dma_regs;
	struct fman_hwp_regs __iomem *hwp_regs;
	fman_exceptions_cb *exception_cb;
	fman_bus_error_cb *bus_error_cb;
	/* Spinlock for FMan use */
	spinlock_t spinlock;
	struct fman_state_struct *state;

	struct fman_cfg *cfg;
	struct muram_info *muram;
	/* cam section in muram */
	unsigned long cam_offset;
	size_t cam_size;
	/* Fifo in MURAM */
	unsigned long fifo_offset;
	size_t fifo_size;

	u32 liodn_base[64];
	u32 liodn_offset[64];

	struct fman_dts_params dts_params;
};

/* Structure for port-FM communication during fman_port_init. */
struct fman_port_init_params {
	u8 port_id;			/* port Id */
+4 −4
Original line number Diff line number Diff line
@@ -32,10 +32,6 @@

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include "fman_port.h"
#include "fman.h"
#include "fman_sp.h"

#include <linux/io.h>
#include <linux/slab.h>
#include <linux/module.h>
@@ -45,6 +41,10 @@
#include <linux/delay.h>
#include <linux/libfdt_env.h>

#include "fman.h"
#include "fman_port.h"
#include "fman_sp.h"

/* Queue ID */
#define DFLT_FQ_ID		0x00FFFFFF