From e28f3953932b89fa9746852db466bebc0ab0dee5 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 11 Sep 2010 02:53:07 +0000 Subject: [PATCH] Add support for SPI NOR chip select git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2938 42af7a65-404d-4744-a932-0658087f49c3 --- arch/arm/src/lpc313x/lpc313x_internal.h | 112 ++++++++++++++---------- 1 file changed, 67 insertions(+), 45 deletions(-) diff --git a/arch/arm/src/lpc313x/lpc313x_internal.h b/arch/arm/src/lpc313x/lpc313x_internal.h index 47d7ca82ae..ab8e3caf9a 100755 --- a/arch/arm/src/lpc313x/lpc313x_internal.h +++ b/arch/arm/src/lpc313x/lpc313x_internal.h @@ -1,7 +1,7 @@ /************************************************************************************ * arch/arm/src/lpc313x/lpc313x_internal.h * - * Copyright (C) 2009 Gregory Nutt. All rights reserved. + * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -47,7 +47,9 @@ #include #include "up_internal.h" +#include "up_arch.h" #include "chip.h" +#include "lpc313x_ioconfig.h" /************************************************************************************ * Definitions @@ -79,6 +81,70 @@ extern "C" { #define EXTERN extern #endif +/************************************************************************************ + * Inline Functions + ************************************************************************************/ + +/* Configure a pin as an input */ + +static inline void gpio_configinput(uint32_t ioconfig, uint32_t bit) +{ + uint32_t regaddr; + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE0RESET_OFFSET; + putreg32(bit, regaddr); + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE1RESET_OFFSET; + putreg32(bit, regaddr); +} + +/* Return the current state of an input GPIO pin */ + +static inline bool lpc313x_gpioread(uint32_t ioconfig, uint32_t bit) +{ + uint32_t regaddr = ioconfig + LPC313X_IOCONFIG_PINS_OFFSET; + return (getreg32(regaddr) & bit) != 0; +} + +/* Configure the pin so that it is driven by the device */ + +static inline void gpio_configdev(uint32_t ioconfig, uint32_t bit) +{ + uint32_t regaddr; + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE1RESET_OFFSET; + putreg32(bit, regaddr); + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE0SET_OFFSET; + putreg32(bit, regaddr); +} + +/* Configure a pin as a low output */ + +static inline void gpio_outputlow(uint32_t ioconfig, uint32_t bit) +{ + uint32_t regaddr; + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE1SET_OFFSET; + putreg32(bit, regaddr); + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE0RESET_OFFSET; + putreg32(bit, regaddr); +} + +/* Configure a pin as a high output */ + +static inline void gpio_outputhigh(uint32_t ioconfig, uint32_t bit) +{ + uint32_t regaddr; + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE1SET_OFFSET; + putreg32(bit, regaddr); + + regaddr = ioconfig + LPC313X_IOCONFIG_MODE0SET_OFFSET; + putreg32(bit, regaddr); +} + /************************************************************************************ * Public Function Prototypes ************************************************************************************/ @@ -103,50 +169,6 @@ EXTERN void lpc313x_lowsetup(void); EXTERN void lpc313x_clockconfig(void); -/************************************************************************************ - * Name: lpc313x_configgpio - * - * Description: - * Configure a GPIO pin based on bit-encoded description of the pin. - * - ************************************************************************************/ - -EXTERN int lpc313x_configgpio(uint32_t cfgset); - -/************************************************************************************ - * Name: lpc313x_gpiowrite - * - * Description: - * Write one or zero to the selected GPIO pin - * - ************************************************************************************/ - -EXTERN void lpc313x_gpiowrite(uint32_t pinset, bool value); - -/************************************************************************************ - * Name: lpc313x_gpioread - * - * Description: - * Read one or zero from the selected GPIO pin - * - ************************************************************************************/ - -EXTERN bool lpc313x_gpioread(uint32_t pinset); - -/************************************************************************************ - * Function: lpc313x_dumpgpio - * - * Description: - * Dump all GPIO registers associated with the provided base address - * - ************************************************************************************/ - -#ifdef CONFIG_DEBUG -EXTERN int lpc313x_dumpgpio(uint32_t pinset, const char *msg); -#else -# define lpc313x_dumpgpio(p,m) -#endif - /************************************************************************************ * Name: lpc313x_spiselect and lpc313x_spistatus *