[stm32] implement i2c_reset using rcc_periph_reset_pulse

this also adds support for I2C3 in i2c_reset
[stm32] fix i2c_reset

rcc_periph_reset_pulse needs RST_I2Cx instead of RCC_I2Cx as argument
see also #329
[stm32] fix dox for rcc_periph_x

closes #329
add MSC (Mass Storage Class) support
Allow more than one usbd_register_set_config_callback

In a composite device if one want to separate code
for each interface, usbd_register_set_config_callback
can now register more than one callback.

Signed-off-by: Franck Jullien <franck.jullien@gmail.com>
USB: Fix definition of function according to previous commit.
[l1-flash/eeprom] Add lock/unlock/eeprom helper routines
stm32: timers: Fix edge polarity setup

The CCxP/CCxNP bits are actually separated by a reserved bit, so the
correct mask is 0xa, (0b1010) not 0x6 (0b0110)

Reported by PyroDevil on the mailinglist
stm32: timers: fix mixup between TIMx_CCMR1 and TIMx_CCMR2 in timer_set_oc_mode()
stm32f3: drop redundant gpio.c

All methods in this file are in either
* common/gpio_common_all.c
* common/gpio_common_f0234.c

Those other files have better doxygen commentary, this file should never
have been added.
tiva lm4f: ssi: Initial implementation for SSI peripheral
docs: fix link from stm32f3 to stm32f0

Incorrectly pointed to f1.
Makefile: fix build for directories with spaces

When full path of a source directory has spaces in it, that makes
shell and Make split the path, so special treatment is
necessary. Additionally, @F doesn't honour the escaping, so has to be
avoided.

Reported-by: Roman Faizullin <roman@faizullin.info>
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
stm32: exti: Define all irqs in common header.

There's more exti lines on many more devices now. F0 and F3 have extras, as did
L1 and L0.  There's no real reason not to have higher order EXTI definitions
defined at the top level, and it reduces the number of files to merge together
to find all definitions for the bigger devices.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>

Fixes #338
stm32/spi: Replace all SPIx_I2S_BASE with SPIx_BASE

Latest versions of all reference manuals refer to the address as SPIx_BASE, and
simply name some of the individual registers as SPI_I2SXXXX.  Likewise, the
interrupts are simply SPIx, not SPIx/I2Sx.  Rather than hacking more duplicates
into the F0 and L0 parts where this was turning up, remove the pointless _I2S_
from SPI2/SPI3 and make it all consistent

Compile tested only, with the examples collection.

Signed-off-by: Karl Palsson <karlp@tweak.net.au>

Fixes #331
Fixes #347
stm32: Add timers 9-17.  This should support all F0, F1, and F2 products
stm32: i2c: actually keep bit 14 set as per datasheet.

Old code did three writes, new way actually seems to follow datasheet
properly.
init: call pre_main before C++ constructors

This moves the platform specific initialization function pre_main
in front of C++ constructors. This is especially necessary for
platforms which need to setup the stack pointer (pre_main itself
is inline, hence no stack needed for this function).
stm32: gpio_toggle: ensure correct state of non-toggled pins.
stm32: common: fix missing SPI_I2S_BASE rename regression

Fix regresion from 5d4437fe43aa68a28611e9a0aecc712833230304 where
somehow not all occurrences were replaced.  I could swear it all
compiled when I was working on it :(

Reported-by: Trevor Woerner <trevor.woerner@linaro.org>