Add support for the Micropendous (Arduino-like) series of boards (revisions 1 and 2).
[pub/USBasp.git] / LUFA / Drivers / Peripheral / AVR8 / SPI_AVR8.h
index 2caacaa..2c0ca6e 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -70,7 +70,7 @@
  *      // Send a byte, and store the received byte from the same transaction
  *      uint8_t ResponseByte = SPI_TransferByte(0xDC);
  *  \endcode
  *      // Send a byte, and store the received byte from the same transaction
  *      uint8_t ResponseByte = SPI_TransferByte(0xDC);
  *  \endcode
- * 
+ *
  *  @{
  */
 
  *  @{
  */
 
                        /** SPI data sample mode mask for \c SPI_Init(). Indicates that the data should be sampled on the trailing edge. */
                        #define SPI_SAMPLE_TRAILING            (1 << CPHA)
                        //@}
                        /** SPI data sample mode mask for \c SPI_Init(). Indicates that the data should be sampled on the trailing edge. */
                        #define SPI_SAMPLE_TRAILING            (1 << CPHA)
                        //@}
-                       
+
                        /** \name SPI Data Ordering Configuration Masks */
                        //@{
                        /** SPI data order mask for \c SPI_Init(). Indicates that data should be shifted out MSB first. */
                        /** \name SPI Data Ordering Configuration Masks */
                        //@{
                        /** SPI data order mask for \c SPI_Init(). Indicates that data should be shifted out MSB first. */
                        /** SPI data order mask for \c SPI_Init(). Indicates that data should be shifted out LSB first. */
                        #define SPI_ORDER_LSB_FIRST            (1 << DORD)
                        //@}
                        /** SPI data order mask for \c SPI_Init(). Indicates that data should be shifted out LSB first. */
                        #define SPI_ORDER_LSB_FIRST            (1 << DORD)
                        //@}
-                       
+
                        /** \name SPI Mode Configuration Masks */
                        //@{
                        /** SPI mode mask for \c SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */
                        /** \name SPI Mode Configuration Masks */
                        //@{
                        /** SPI mode mask for \c SPI_Init(). Indicates that the SPI interface should be initialized into slave mode. */
                        /** SPI mode mask for \c SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */
                        #define SPI_MODE_MASTER                (1 << MSTR)
                        //@}
                        /** SPI mode mask for \c SPI_Init(). Indicates that the SPI interface should be initialized into master mode. */
                        #define SPI_MODE_MASTER                (1 << MSTR)
                        //@}
-                       
+
                /* Inline Functions: */
                        /** Initializes the SPI subsystem, ready for transfers. Must be called before calling any other
                         *  SPI routines.
                /* Inline Functions: */
                        /** Initializes the SPI subsystem, ready for transfers. Must be called before calling any other
                         *  SPI routines.
                                /* Switch /SS to input mode after configuration to allow for forced mode changes */
                                DDRB &= ~(1 << 0);
 
                                /* Switch /SS to input mode after configuration to allow for forced mode changes */
                                DDRB &= ~(1 << 0);
 
-                               SPCR   = ((1 << SPE) | SPIOptions);
+                               SPCR  = ((1 << SPE) | SPIOptions);
                        }
 
                        /** Turns off the SPI driver, disabling and returning used hardware to their default configuration. */
                        }
 
                        /** Turns off the SPI driver, disabling and returning used hardware to their default configuration. */
                                SPCR   = 0;
                                SPSR   = 0;
                        }
                                SPCR   = 0;
                                SPSR   = 0;
                        }
-                       
+
                        /** Retrieves the currently selected SPI mode, once the SPI interface has been configured.
                         *
                         *  \return \ref SPI_MODE_MASTER if the interface is currently in SPI Master mode, \ref SPI_MODE_SLAVE otherwise
                         */
                        /** Retrieves the currently selected SPI mode, once the SPI interface has been configured.
                         *
                         *  \return \ref SPI_MODE_MASTER if the interface is currently in SPI Master mode, \ref SPI_MODE_SLAVE otherwise
                         */
+                       static inline uint8_t SPI_GetCurrentMode(void) ATTR_ALWAYS_INLINE;
                        static inline uint8_t SPI_GetCurrentMode(void)
                        {
                                return (SPCR & SPI_MODE_MASTER);
                        static inline uint8_t SPI_GetCurrentMode(void)
                        {
                                return (SPCR & SPI_MODE_MASTER);