Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  spi-bcm-qspi.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright 2016 Broadcom
 */


#ifndef __SPI_BCM_QSPI_H__
#define __SPI_BCM_QSPI_H__

#include <linux/types.h>
#include <linux/io.h>

/* BSPI interrupt masks */
#define INTR_BSPI_LR_OVERREAD_MASK  BIT(4)
#define INTR_BSPI_LR_SESSION_DONE_MASK  BIT(3)
#define INTR_BSPI_LR_IMPATIENT_MASK  BIT(2)
#define INTR_BSPI_LR_SESSION_ABORTED_MASK BIT(1)
#define INTR_BSPI_LR_FULLNESS_REACHED_MASK BIT(0)

#define BSPI_LR_INTERRUPTS_DATA         \
 (INTR_BSPI_LR_SESSION_DONE_MASK |        \
  INTR_BSPI_LR_FULLNESS_REACHED_MASK)

#define BSPI_LR_INTERRUPTS_ERROR               \
 (INTR_BSPI_LR_OVERREAD_MASK |        \
  INTR_BSPI_LR_IMPATIENT_MASK |        \
  INTR_BSPI_LR_SESSION_ABORTED_MASK)

#define BSPI_LR_INTERRUPTS_ALL                 \
 (BSPI_LR_INTERRUPTS_ERROR |        \
  BSPI_LR_INTERRUPTS_DATA)

/* MSPI Interrupt masks */
#define INTR_MSPI_HALTED_MASK   BIT(6)
#define INTR_MSPI_DONE_MASK   BIT(5)

#define MSPI_INTERRUPTS_ALL         \
 (INTR_MSPI_DONE_MASK |         \
  INTR_MSPI_HALTED_MASK)

#define QSPI_INTERRUPTS_ALL                    \
 (MSPI_INTERRUPTS_ALL |         \
  BSPI_LR_INTERRUPTS_ALL)

struct platform_device;
struct dev_pm_ops;

enum {
 MSPI_DONE = 0x1,
 BSPI_DONE = 0x2,
 BSPI_ERR = 0x4,
 MSPI_BSPI_DONE = 0x7
};

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__ */

Messung V0.5
C=96 H=94 G=94

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge