From 964f509f59a5277e04da81ea02b42f6332289925 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 27 Feb 2017 23:14:16 +0100 Subject: [PATCH] remove pio_capture, we don't use it As it registers a non-weak exception handler, it consumes memory in every build --- .../libchip_sam3s/source/pio_capture.c | 283 ------------------ .../libchip_sam3s/source/pio_it.c | 6 +- 2 files changed, 3 insertions(+), 286 deletions(-) delete mode 100644 firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_capture.c diff --git a/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_capture.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_capture.c deleted file mode 100644 index 407a5c05..00000000 --- a/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_capture.c +++ /dev/null @@ -1,283 +0,0 @@ -/* ---------------------------------------------------------------------------- - * ATMEL Microcontroller Software Support - * ---------------------------------------------------------------------------- - * Copyright (c) 2010, Atmel Corporation - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the disclaimer below. - * - * Atmel's name may not be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * ---------------------------------------------------------------------------- - */ - -/** \addtogroup pio_capture_module Working with PIO Parallel Capture Mode - * The PIO Parallel Capture Mode driver provides the interface to configure and use the - * PIO Parallel Capture Mode peripheral.\n - * - * The PIO Controller integrates an interface able to read data from a CMOS digital - * image sensor, a high-speed parallel ADC, a DSP synchronous port in synchronous - * mode, etc.... For better understanding and to ease reading, the following - * description uses an example with a CMOS digital image sensor - * - * To use the PIO Parallel Capture, the user has to follow these few steps: - * - * - * For more accurate information, please look at the PIO Parallel Capture Mode section of the - * Datasheet. - * - * Related files :\n - * \ref pio_capture.c\n - * \ref pio_capture.h\n - */ -/*@{*/ -/*@}*/ -/** - * \file - * - * Implementation of PIO Parallel Capture. - * - */ - -/*---------------------------------------------------------------------------- - * Headers - *----------------------------------------------------------------------------*/ - -#include "chip.h" - -#include - -/*---------------------------------------------------------------------------- - * Local Functions - *----------------------------------------------------------------------------*/ -/** Copy the API structure for interrupt handler */ -static SpioCaptureInit* _PioCaptureCopy; - -/*---------------------------------------------------------------------------- - * Global Functions - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/** - * \brief The PIO_CaptureHandler must be called by the PIO Capture Interrupt - * Service Routine with the corresponding PIO Capture instance. - */ -/*----------------------------------------------------------------------------*/ -extern void PIO_CaptureHandler( void ) -{ - volatile uint32_t pio_captureSr; - - /* Read the status register*/ - pio_captureSr = PIOA->PIO_PCISR ; - pio_captureSr &= PIOA->PIO_PCIMR ; - - if (pio_captureSr & PIO_PCISR_DRDY) - { - /* Parallel Capture Mode Data Ready */ - if ( _PioCaptureCopy->CbkDataReady != NULL ) - { - _PioCaptureCopy->CbkDataReady( _PioCaptureCopy ); - } - else - { - TRACE_DEBUG("IT PIO Capture Data Ready received (no callback)\n\r"); - } - } - - if (pio_captureSr & PIO_PCISR_OVRE) - { - /* Parallel Capture Mode Overrun Error */ - if ( _PioCaptureCopy->CbkOverrun != NULL ) - { - _PioCaptureCopy->CbkOverrun( _PioCaptureCopy ); - } - else - { - TRACE_DEBUG("IT PIO Capture Overrun Error received (no callback)\n\r"); - } - } - - if (pio_captureSr & PIO_PCISR_RXBUFF) - { - /* Reception Buffer Full */ - if ( _PioCaptureCopy->CbkBuffFull != NULL ) - { - _PioCaptureCopy->CbkBuffFull( _PioCaptureCopy ); - } - else - { - TRACE_DEBUG("IT PIO Capture Reception Buffer Full received (no callback)\n\r"); - } - } - - if (pio_captureSr & PIO_PCISR_ENDRX) - { - /* End of Reception Transfer */ - if ( _PioCaptureCopy->CbkEndReception != NULL ) - { - _PioCaptureCopy->CbkEndReception( _PioCaptureCopy ); - } - else - { - TRACE_DEBUG("IT PIO Capture End of Reception Transfer received (no callback)\n\r"); - } - } -} - -/*----------------------------------------------------------------------------*/ -/** - * \brief Disable Interupt of the PIO Capture - * \param itToDisable : Interrupt to disable - */ -/*----------------------------------------------------------------------------*/ -void PIO_CaptureDisableIt( uint32_t itToDisable ) -{ - /* Parallel capture mode is enabled */ - PIOA->PIO_PCIDR = itToDisable; -} - -/*----------------------------------------------------------------------------*/ -/** - * \brief Enable Interupt of the PIO Capture - * \param itToEnable : Interrupt to enable - */ -/*----------------------------------------------------------------------------*/ -void PIO_CaptureEnableIt( uint32_t itToEnable ) -{ - /* Parallel capture mode is enabled */ - PIOA->PIO_PCIER = itToEnable; -} - -/*----------------------------------------------------------------------------*/ -/** - * \brief Enable the PIO Capture - */ -/*----------------------------------------------------------------------------*/ -void PIO_CaptureEnable( void ) -{ - /* PDC: Receive Pointer Register */ - PIOA->PIO_RPR = (uint32_t)_PioCaptureCopy->pData ; - /* PDC: Receive Counter Register */ - /* Starts peripheral data transfer if corresponding channel is active */ - PIOA->PIO_RCR = PIO_RCR_RXCTR(_PioCaptureCopy->dPDCsize) ; - - /* Parallel capture mode is enabled */ - PIOA->PIO_PCMR |= PIO_PCMR_PCEN ; -} - -/*----------------------------------------------------------------------------*/ -/** - * \brief Disable the PIO Capture - */ -/*----------------------------------------------------------------------------*/ -void PIO_CaptureDisable( void ) -{ - /* Parallel capture mode is disabled */ - PIOA->PIO_PCMR &= (uint32_t)(~PIO_PCMR_PCEN) ; -} - -/*----------------------------------------------------------------------------*/ -/** - * \brief Initialize the PIO Capture - * Be careful to configure the PDC before enable interrupt on pio capture. - * Otherway, the pdc will go in interrupt handler continuously. - * \param dsize : - * 0 = The reception data in the PIO_PCRHR register is a BYTE (8-bit). - * 1 = The reception data in the PIO_PCRHR register is a HALF-WORD (16-bit). - * 2/3 = The reception data in the PIO_PCRHR register is a WORD (32-bit). - * \param alwaysSampling: ALWYS: Parallel Capture Mode Always Sampling - * 0 = The parallel capture mode samples the data when both data enables are active. - * 1 = The parallel capture mode samples the data whatever the data enables are. - * \param halfSampling: HALFS: Parallel Capture Mode Half Sampling - * 0 = The parallel capture mode samples all the data. - * 1 = The parallel capture mode samples the data only one time out of two. - * \param modeFirstSample: FRSTS: Parallel Capture Mode First Sample - * This bit is useful only if the HALFS bit is set to 1. If data are numbered - * in the order that they are received with an index from 0 to n: - * 0 = Only data with an even index are sampled. - * 1 = Only data with an odd index are sampled. - */ -/*----------------------------------------------------------------------------*/ -void PIO_CaptureInit( SpioCaptureInit *pInit ) -{ - PMC_EnablePeripheral( ID_PIOA ); - - assert( (pInit->dsize < 0x4) ) ; - assert( (pInit->dPDCsize <= PIO_RPR_RXPTR_Msk) ) ; - assert( (pInit->alwaysSampling < 2) ); - assert( (pInit->halfSampling < 2) ); - assert( (pInit->modeFirstSample < 2) ); - - /* PDC: Transfer Control Register */ - /* Disables the PDC transmitter channel requests */ - PIOA->PIO_PTCR = PIO_PTCR_RXTDIS; - /* PDC: Receive Pointer Register */ - PIOA->PIO_RPR = (uint32_t)pInit->pData; - /* PDC: Receive Counter Register */ - /* Starts peripheral data transfer if corresponding channel is active */ - PIOA->PIO_RCR = PIO_RCR_RXCTR(pInit->dPDCsize); - - /* PDC: Transfer Control Register */ - /* Enables PDC receiver channel requests if RXTDIS is not set */ - PIOA->PIO_PTCR = PIO_PTCR_RXTEN ; - - - /* Copy the API structure for interrupt handler */ - _PioCaptureCopy = pInit; - /* PIO Parallel Capture Mode */ - PIOA->PIO_PCMR = PIO_PCMR_DSIZE(pInit->dsize) - | ((pInit->alwaysSampling<<9) & PIO_PCMR_ALWYS) - | ((pInit->halfSampling<<10) & PIO_PCMR_HALFS) - | ((pInit->modeFirstSample<<11) & PIO_PCMR_FRSTS); - - if ( pInit->CbkDataReady != NULL ) - { - PIOA->PIO_PCIER = PIO_PCISR_DRDY; - } - - if ( pInit->CbkOverrun != NULL ) - { - PIOA->PIO_PCIER = PIO_PCISR_OVRE; - } - - if ( pInit->CbkEndReception != NULL ) - { - PIOA->PIO_PCIER = PIO_PCISR_ENDRX; - } - - if ( pInit->CbkBuffFull != NULL ) - { - PIOA->PIO_PCIER = PIO_PCISR_RXBUFF; - } -// else -// { -// TRACE_INFO("No interruption, no callback\n\r"); -// } - -} - diff --git a/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_it.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_it.c index 48403c0f..74e87dae 100644 --- a/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_it.c +++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_it.c @@ -83,9 +83,9 @@ static uint32_t _dwNumSources = 0; * \brief Stub, to handling all PIO Capture interrupts, if not defined. */ /*----------------------------------------------------------------------------*/ -//extern WEAK void PIO_CaptureHandler( void ) -//{ -//} +extern WEAK void PIO_CaptureHandler( void ) +{ +} /** * \brief Handles all interrupts on the given PIO controller.