i2c: add lpc2k-i2c driver

Taken from Emcraft's GitHub repo.

RT77181. lpc178x i2c: Grab the i2c-lpc2k driver from the EA-2468 Linux port

Copy the I2C bus driver for the NXP LPC2K devices from the Embedded Artists'
EA-2468 Linux port. This driver is expected to be compatible with the I2C
interfaces on the NXP LPC178x/7x MCUs.

RT77920. lpc178x: Fix driver for I2C controller

 * Handle `Arbitration lost` status.
 * Clear the SI flag only after other flags and the data register is
ready, because this SI flag triggers the I2C controller to continue
operation.
 * Send correct ACK/NACK bits to tell the I2C slave where to stop data
transfer when reading from I2C slave.

RT85322. d/i/b/lpc2k-i2c.c bug: disable interrupts in case of read timeout

RT85322. d/i/b/lpc2k-i2c.c: send STOP signal according to documentation

This patch fixes code sending STOP signal to match documentation: to send STOP
signal, one should to setup STO and AA bits in the CONSET register, and then
clear SI flag, i.e., setup SI bit in the CONCLEAR register.  Another change is
that i2c_lpc2k_reset() function was called in the i2c_lpc2k_xfer() function
just after sending STOP signal. Together with the bad bits setup, this leaded
to STOP signal corruption.

RT85322. d/i/b/lpc2k-i2c.c: fix return value of the i2c_lpc2k_xfer() function

In case of success, the i2c_lpc2k_xfer() returns 0. It should return the number
of messages successfully processed instead.

RT85322. lpc18xx: i2c: remove call to the i2c_lpc2k_reset() function

The call to the i2c_lpc2k_reset() function in the i2c_lpc2k_xfer() leaded to
the signal corruption and, therefore, to data lost.

RT #91664: Fixing LPC2K I2C bus register-before-clock bug
ARM: new platform for NXP's LPC18xx/43xx Cortex-M3/4 MCUs

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
ARM: dts: Add DT for NXP LPC18xx/43xx

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
clocksource: add lpc32xx timer driver

Add support for using the NXP LPC timer as clocksource and
clock event. These timmer are present on many NXP devices
including LPC32XX/18XX and 43XX.

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
clk: add table_size member to struct clk_mux

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
clk: add lpc18xx cgu clk driver

Driver for NXP LPC18XX/43XX Clock Generation Unit (CGU).

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
clk: add lpc18xx ccu clk driver

Driver for NXP LPC18XX/43XX Clock Control Unit (CCU).

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
ARM: dts: add clock data to lpc18xx DT

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
gpio: add lpc18xx gpio driver

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
pinctrl: add lpc18xx pinctrl driver

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
pinctrl: lpc18xx: funny drive strength mapping

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
rtc-lpc24xx: rework

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
rtc-lpc24xx: add dt support for lpc1850-rtc

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
lpc2k_wdt: rework

Compiles but the entire driver should be changed over to the new
watchdog driver api. So the driver is in for what looks more or
less like a total rewrite...

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
i2c-lpc2k: rework

Signed-off-by: Joachim Eastwood <manabian@gmail.com>