drivers/spi/spi-bcm-qspi.h

Source file repositories/reference/linux-study-clean/drivers/spi/spi-bcm-qspi.h

File Facts

System
Linux kernel
Corpus path
drivers/spi/spi-bcm-qspi.h
Extension
.h
Size
2571 bytes
Lines
105
Domain
Driver Families
Bucket
drivers/spi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct bcm_qspi_soc_intc {
	void (*bcm_qspi_int_ack)(struct bcm_qspi_soc_intc *soc_intc, int type);
	void (*bcm_qspi_int_set)(struct bcm_qspi_soc_intc *soc_intc, int type,
				 bool en);
	u32 (*bcm_qspi_get_int_status)(struct bcm_qspi_soc_intc *soc_intc);
};

/* Read controller register*/
static inline u32 bcm_qspi_readl(bool be, void __iomem *addr)
{
	if (be)
		return ioread32be(addr);
	else
		return readl_relaxed(addr);
}

/* Write controller register*/
static inline void bcm_qspi_writel(bool be,
				   unsigned int data, void __iomem *addr)
{
	if (be)
		iowrite32be(data, addr);
	else
		writel_relaxed(data, addr);
}

static inline u32 get_qspi_mask(int type)
{
	switch (type) {
	case MSPI_DONE:
		return INTR_MSPI_DONE_MASK;
	case BSPI_DONE:
		return BSPI_LR_INTERRUPTS_ALL;
	case MSPI_BSPI_DONE:
		return QSPI_INTERRUPTS_ALL;
	case BSPI_ERR:
		return BSPI_LR_INTERRUPTS_ERROR;
	}

	return 0;
}

/* The common driver functions to be called by the SoC platform driver */
int bcm_qspi_probe(struct platform_device *pdev,
		   struct bcm_qspi_soc_intc *soc_intc);
void bcm_qspi_remove(struct platform_device *pdev);

/* pm_ops used by the SoC platform driver called on PM suspend/resume */
extern const struct dev_pm_ops bcm_qspi_pm_ops;

#endif /* __SPI_BCM_QSPI_H__ */

Annotation

Implementation Notes