/************************************************************************************ * arch/arm/src/stm32/stm32_dac.c * * Copyright (C) 2011 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3. Neither the name NuttX nor the names of its contributors may be * used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS 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. * ************************************************************************************/ /**************************************************************************** * Included Files ****************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include "up_internal.h" #include "up_arch.h" #include "chip.h" #include "stm32_internal.h" #include "stm32_dac.h" #if defined(CONFIG_DAC) && defined(CONFIG_STM32_DAC) /**************************************************************************** * Private Types ****************************************************************************/ /**************************************************************************** * Private Function Prototypes ****************************************************************************/ /* Interrupt handler */ static int dac_interrupt(int irq, void *context); /* DAC methods */ static void dac_reset(FAR struct dac_dev_s *dev); static int dac_setup(FAR struct dac_dev_s *dev); static void dac_shutdown(FAR struct dac_dev_s *dev); static void dac_txint(FAR struct dac_dev_s *dev, bool enable); static int dac_send(FAR struct dac_dev_s *dev, FAR struct dac_msg_s *msg); static int dac_ioctl(FAR struct dac_dev_s *dev, int cmd, unsigned long arg); static int dac_interrupt(int irq, void *context); /**************************************************************************** * Private Data ****************************************************************************/ static const struct dac_ops_s g_dacops = { .ao_reset = dac_reset, .ao_setup = dac_setup, .ao_shutdown = dac_shutdown, .ao_txint = dac_txint, .ao_send = dac_send, .ao_ioctl = dac_ioctl, }; static struct dac_dev_s g_dacdev = { .ad_ops = &g_dacops, }; /**************************************************************************** * Private Functions ****************************************************************************/ /**************************************************************************** * Name: dac_interrupt * * Description: * DAC interrupt handler. * * Input Parameters: * * Returned Value: * ****************************************************************************/ static int dac_interrupt(int irq, void *context) { return OK; } /**************************************************************************** * Name: dac_reset * * Description: * Reset the DAC device. Called early to initialize the hardware. This * is called, before dac_setup() and on error conditions. * * Input Parameters: * * Returned Value: * ****************************************************************************/ static void dac_reset(FAR struct dac_dev_s *dev) { irqstate_t flags; uint32_t regval; flags = irqsave(); # warning "Missing logic" irqrestore(flags); } /**************************************************************************** * Name: dac_setup * * Description: * Configure the DAC. This method is called the first time that the DAC * device is opened. This will occur when the port is first opened. * This setup includes configuring and attaching DAC interrupts. Interrupts * are all disabled upon return. * * Input Parameters: * * Returned Value: * ****************************************************************************/ static int dac_setup(FAR struct dac_dev_s *dev) { # warning "Missing logic" return -ENOSYS; } /**************************************************************************** * Name: dac_shutdown * * Description: * Disable the DAC. This method is called when the DAC device is closed. * This method reverses the operation the setup method. * * Input Parameters: * * Returned Value: * ****************************************************************************/ static void dac_shutdown(FAR struct dac_dev_s *dev) { # warning "Missing logic" } /**************************************************************************** * Name: dac_txint * * Description: * Call to enable or disable TX interrupts. * * Input Parameters: * * Returned Value: * ****************************************************************************/ static void dac_txint(FAR struct dac_dev_s *dev, bool enable) { # warning "Missing logic" } /**************************************************************************** * Name: dac_send * * Description: * Set the DAC output. * * Input Parameters: * * Returned Value: * ****************************************************************************/ static int dac_send(FAR struct dac_dev_s *dev, FAR struct dac_msg_s *msg) { # warning "Missing logic" return -ENOSYS; } /**************************************************************************** * Name: dac_ioctl * * Description: * All ioctl calls will be routed through this method. * * Input Parameters: * * Returned Value: * ****************************************************************************/ static int dac_ioctl(FAR struct dac_dev_s *dev, int cmd, unsigned long arg) { return -ENOTTY; } /**************************************************************************** * Public Functions ****************************************************************************/ /**************************************************************************** * Name: up_dacinitialize * * Description: * Initialize the DAC * * Returned Value: * Valid dac device structure reference on succcess; a NULL on failure * ****************************************************************************/ FAR struct dac_dev_s *up_dacinitialize(int channel) { return &g_dacdev; } #endif /* CONFIG_DAC && CONFIG_STM32_DAC */