mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Sep 30 17:00:09 2015 +0100
Revision:
635:a11c0372f0ba
Parent:
507:d4fc7603a669
Synchronized with git revision d29c98dae61be0946ddf3a3c641c7726056f9452

Full URL: https://github.com/mbedmicro/mbed/commit/d29c98dae61be0946ddf3a3c641c7726056f9452/

Added support for SAMW25

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 507:d4fc7603a669 1 /*******************************************************************************
mbed_official 507:d4fc7603a669 2 * Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.
mbed_official 507:d4fc7603a669 3 *
mbed_official 507:d4fc7603a669 4 * Permission is hereby granted, free of charge, to any person obtaining a
mbed_official 507:d4fc7603a669 5 * copy of this software and associated documentation files (the "Software"),
mbed_official 507:d4fc7603a669 6 * to deal in the Software without restriction, including without limitation
mbed_official 507:d4fc7603a669 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
mbed_official 507:d4fc7603a669 8 * and/or sell copies of the Software, and to permit persons to whom the
mbed_official 507:d4fc7603a669 9 * Software is furnished to do so, subject to the following conditions:
mbed_official 507:d4fc7603a669 10 *
mbed_official 507:d4fc7603a669 11 * The above copyright notice and this permission notice shall be included
mbed_official 507:d4fc7603a669 12 * in all copies or substantial portions of the Software.
mbed_official 507:d4fc7603a669 13 *
mbed_official 507:d4fc7603a669 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
mbed_official 507:d4fc7603a669 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
mbed_official 507:d4fc7603a669 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
mbed_official 507:d4fc7603a669 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
mbed_official 507:d4fc7603a669 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
mbed_official 507:d4fc7603a669 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
mbed_official 507:d4fc7603a669 20 * OTHER DEALINGS IN THE SOFTWARE.
mbed_official 507:d4fc7603a669 21 *
mbed_official 507:d4fc7603a669 22 * Except as contained in this notice, the name of Maxim Integrated
mbed_official 507:d4fc7603a669 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
mbed_official 507:d4fc7603a669 24 * Products, Inc. Branding Policy.
mbed_official 507:d4fc7603a669 25 *
mbed_official 507:d4fc7603a669 26 * The mere transfer of this software does not imply any licenses
mbed_official 507:d4fc7603a669 27 * of trade secrets, proprietary technology, copyrights, patents,
mbed_official 507:d4fc7603a669 28 * trademarks, maskwork rights, or any other form of intellectual
mbed_official 507:d4fc7603a669 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
mbed_official 507:d4fc7603a669 30 * ownership rights.
mbed_official 507:d4fc7603a669 31 *******************************************************************************
mbed_official 507:d4fc7603a669 32 */
mbed_official 507:d4fc7603a669 33
mbed_official 507:d4fc7603a669 34 #include "port_api.h"
mbed_official 507:d4fc7603a669 35 #include "pinmap.h"
mbed_official 507:d4fc7603a669 36 #include "gpio_api.h"
mbed_official 507:d4fc7603a669 37 #include "gpio_regs.h"
mbed_official 507:d4fc7603a669 38 #include "clkman_regs.h"
mbed_official 507:d4fc7603a669 39
mbed_official 507:d4fc7603a669 40 PinName port_pin(PortName port, int pin_n)
mbed_official 507:d4fc7603a669 41 {
mbed_official 507:d4fc7603a669 42 return (PinName)((port << PORT_SHIFT) | pin_n);
mbed_official 507:d4fc7603a669 43 }
mbed_official 507:d4fc7603a669 44
mbed_official 507:d4fc7603a669 45 void port_init(port_t *obj, PortName port, int mask, PinDirection dir)
mbed_official 507:d4fc7603a669 46 {
mbed_official 507:d4fc7603a669 47 obj->port = port;
mbed_official 507:d4fc7603a669 48 obj->mask = mask;
mbed_official 507:d4fc7603a669 49 obj->reg_out = &MXC_GPIO->out_val[port];
mbed_official 507:d4fc7603a669 50 obj->reg_in = &MXC_GPIO->in_val[port];
mbed_official 507:d4fc7603a669 51
mbed_official 507:d4fc7603a669 52 /* Ensure that the GPIO clock is enabled */
mbed_official 507:d4fc7603a669 53 if (MXC_CLKMAN->clk_ctrl_1_gpio == MXC_E_CLKMAN_CLK_SCALE_DISABLED) {
mbed_official 507:d4fc7603a669 54 MXC_CLKMAN->clk_ctrl_1_gpio = MXC_E_CLKMAN_CLK_SCALE_ENABLED;
mbed_official 507:d4fc7603a669 55 }
mbed_official 507:d4fc7603a669 56
mbed_official 507:d4fc7603a669 57 uint32_t i;
mbed_official 507:d4fc7603a669 58 // The function is set per pin: reuse gpio logic
mbed_official 507:d4fc7603a669 59 for (i=0; i<32; i++) {
mbed_official 507:d4fc7603a669 60 if (obj->mask & (1<<i)) {
mbed_official 507:d4fc7603a669 61 gpio_set(port_pin(obj->port, i));
mbed_official 507:d4fc7603a669 62 pin_dir(port_pin(obj->port, i), dir);
mbed_official 507:d4fc7603a669 63 }
mbed_official 507:d4fc7603a669 64 }
mbed_official 507:d4fc7603a669 65 }
mbed_official 507:d4fc7603a669 66
mbed_official 507:d4fc7603a669 67 void port_mode(port_t *obj, PinMode mode)
mbed_official 507:d4fc7603a669 68 {
mbed_official 507:d4fc7603a669 69 uint32_t i;
mbed_official 507:d4fc7603a669 70 // The mode is set per pin: reuse pinmap logic
mbed_official 507:d4fc7603a669 71 for (i=0; i<32; i++) {
mbed_official 507:d4fc7603a669 72 if (obj->mask & (1<<i)) {
mbed_official 507:d4fc7603a669 73 pin_mode(port_pin(obj->port, i), mode);
mbed_official 507:d4fc7603a669 74 }
mbed_official 507:d4fc7603a669 75 }
mbed_official 507:d4fc7603a669 76 }
mbed_official 507:d4fc7603a669 77
mbed_official 507:d4fc7603a669 78 void port_dir(port_t *obj, PinDirection dir)
mbed_official 507:d4fc7603a669 79 {
mbed_official 507:d4fc7603a669 80 uint32_t i;
mbed_official 507:d4fc7603a669 81 // The mode is set per pin: reuse gpio logic
mbed_official 507:d4fc7603a669 82 for (i=0; i<32; i++) {
mbed_official 507:d4fc7603a669 83 if (obj->mask & (1<<i)) {
mbed_official 507:d4fc7603a669 84 pin_dir(port_pin(obj->port, i), dir);
mbed_official 507:d4fc7603a669 85 }
mbed_official 507:d4fc7603a669 86 }
mbed_official 507:d4fc7603a669 87 }
mbed_official 507:d4fc7603a669 88
mbed_official 507:d4fc7603a669 89 void port_write(port_t *obj, int value)
mbed_official 507:d4fc7603a669 90 {
mbed_official 507:d4fc7603a669 91 *obj->reg_out = (*obj->reg_out & ~obj->mask) | (value & obj->mask);
mbed_official 507:d4fc7603a669 92 }
mbed_official 507:d4fc7603a669 93
mbed_official 507:d4fc7603a669 94 int port_read(port_t *obj)
mbed_official 507:d4fc7603a669 95 {
mbed_official 507:d4fc7603a669 96 return (*obj->reg_in & obj->mask);
mbed_official 507:d4fc7603a669 97 }