i2c: add i2c support on m8b

PD#141217: add i2c support on m8b.
add i2c ao~d support.

Change-Id: Ibc46745d99b172186255fc3f47be42e04480c9a9
Signed-off-by: Jian Hu <jian.hu@amlogic.com>
Signed-off-by: Jianxin Pan <jianxin.pan@amlogic.com>
This commit is contained in:
Xuhua Zhang
2017-04-12 15:35:32 +08:00
committed by Jianxin Pan
parent a462a4f47a
commit 6dd7266c3c
5 changed files with 167 additions and 10 deletions

View File

@@ -58,6 +58,82 @@
};
};
i2c_ao: i2c@c8100500{ /*I2C-AO*/
compatible = "amlogic, meson-i2c";
dev_name = "i2c-AO";
status = "disabled";
reg = <0xc8100500 0x1d>;
device_id = <0>;
pinctrl-names="default";
pinctrl-0=<&ao_i2c_master>;
#address-cells = <1>;
#size-cells = <0>;
use_pio = <0>;
master_i2c_speed = <100000>;
clocks = <&clkc CLKID_CLK81>;
clock-names = "clk_i2c";
};
i2c_a: i2c@c1108500{ /*I2C-A*/
compatible = "amlogic, meson-i2c";
dev_name = "i2c-A";
status = "disabled";
reg = <0xc1108500 0x20>;
device_id = <1>;
pinctrl-names="default";
pinctrl-0=<&a_i2c_master>;
#address-cells = <1>;
#size-cells = <0>;
use_pio = <0>;
master_i2c_speed = <300000>;
clocks = <&clkc CLKID_CLK81>;
clock-names = "clk_i2c";
};
i2c_b: i2c@c11087c0{ /*I2C-B*/
compatible = "amlogic, meson-i2c";
dev_name = "i2c-B";
status = "disabled";
reg = <0xc11087c0 0x20>;
device_id = <2>;
pinctrl-names="default";
pinctrl-0=<&b_i2c_master>;
#address-cells = <1>;
#size-cells = <0>;
use_pio = <0>;
master_i2c_speed = <300000>;
clocks = <&clkc CLKID_CLK81>;
clock-names = "clk_i2c";
};
i2c_c: i2c@c11087e0{ /*I2C-C*/
compatible = "amlogic, meson-i2c";
dev_name = "i2c-C";
status = "disabled";
reg = <0xc11087e0 0x20>;
device_id = <3>;
pinctrl-names="default";
pinctrl-0=<&c_i2c_master>;
#address-cells = <1>;
#size-cells = <0>;
use_pio = <0>;
master_i2c_speed = <300000>;
clocks = <&clkc CLKID_CLK81>;
clock-names = "clk_i2c";
};
i2c_d: i2c@c1108d20{ /*I2C-D*/
compatible = "amlogic, meson-i2c";
dev_name = "i2c-D";
status = "disabled";
reg = <0xc1108d20 0x20>;
device_id = <4>;
pinctrl-names="default";
pinctrl-0=<&d_i2c_master>;
#address-cells = <1>;
#size-cells = <0>;
use_pio = <0>;
master_i2c_speed = <300000>;
clocks = <&clkc CLKID_CLK81>;
clock-names = "clk_i2c";
};
soc {
compatible = "simple-bus";
#address-cells = <1>;
@@ -215,6 +291,55 @@
#interrupt-cells = <2>;
};
a_i2c_master:a_i2c {
mux {
groups = "i2c_sda_a","i2c_sck_a";
function = "i2c_a";
};
};
b_i2c_master:b_i2c {
mux {
groups = "i2c_sda_b0","i2c_sck_b0";
function = "i2c_b";
};
};
b_i2c_master_pin1:b_i2c_pin1 {
mux {
groups = "i2c_sda_b1","i2c_sck_b1";
function = "i2c_b";
};
};
c_i2c_master:c_i2c {
mux {
groups = "i2c_sda_c0","i2c_sck_c0";
function = "i2c_c";
};
};
c_i2c_master_pin1:c_i2c_pin1{
mux {
groups = "i2c_sda_c1","i2c_sck_c1";
function = "i2c_c";
};
};
d_i2c_master:d_i2c {
mux {
groups = "i2c_sda_d0","i2c_sck_d0";
function = "i2c_d";
};
};
d_i2c_master_pin1:d_i2c_pin1 {
mux {
groups = "i2c_sda_d1","i2c_sck_d1";
function = "i2c_d";
};
};
emmc_clk_cmd_pins:emmc_clk_cmd_pins {
mux {
groups = "sd_cmd_c",
@@ -394,6 +519,13 @@
function = "uart_ao";
};
};
ao_i2c_master:ao_i2c{
mux {
groups = "i2c_mst_sck_ao",
"i2c_mst_sda_ao";
function = "i2c_mst_ao";
};
};
};
dwc2_b {
compatible = "amlogic,dwc2";

7
arch/arm/boot/dts/amlogic/meson8b_m200.dts Executable file → Normal file
View File

@@ -190,3 +190,10 @@
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
};
&i2c_a {
status = "ok";
};
&i2c_ao {
status = "ok";
};

View File

@@ -50,6 +50,8 @@ CONFIG_AMLOGIC_USB_HOST_ELECT_TEST=y
CONFIG_AMLOGIC_USBPHY=y
CONFIG_AMLOGIC_CPU_VERSION=y
CONFIG_AMLOGIC_M8B_MESON32_VERSION=y
CONFIG_AMLOGIC_I2C=y
CONFIG_AMLOGIC_I2C_MASTER=y
CONFIG_AMLOGIC_REG_ACCESS=y
CONFIG_AMLOGIC_CLK=y
# CONFIG_AMLOGIC_RESET is not set

View File

@@ -1161,7 +1161,7 @@ static void __exit aml_i2c_exit(void)
platform_driver_unregister(&aml_i2c_driver);
}
arch_initcall(aml_i2c_init);
subsys_initcall(aml_i2c_init);
module_exit(aml_i2c_exit);
MODULE_AUTHOR("AMLOGIC");

View File

@@ -683,8 +683,12 @@ static const char * const iso7816_groups[] = {
"iso7816_1_clk", "iso7816_1_data", "iso7816_2_clk", "iso7816_2_data"
};
static const char * const i2c_d_groups[] = {
"i2c_sda_d0", "i2c_sck_d0", "i2c_sda_d1", "i2c_sck_d1"
static const char * const i2c_d0_groups[] = {
"i2c_sda_d0", "i2c_sck_d0"
};
static const char * const i2c_d1_groups[] = {
"i2c_sda_d1", "i2c_sck_d1"
};
static const char * const xtal_groups[] = {
@@ -695,10 +699,15 @@ static const char * const uart_c_groups[] = {
"uart_tx_c", "uart_rx_c", "uart_cts_c", "uart_rts_c"
};
static const char * const i2c_c_groups[] = {
"i2c_sda_c0", "i2c_sck_c0", "i2c_sda_c1", "i2c_sck_c1"
static const char * const i2c_c0_groups[] = {
"i2c_sda_c0", "i2c_sck_c0"
};
static const char * const i2c_c1_groups[] = {
"i2c_sda_c1", "i2c_sck_c1"
};
static const char * const hdmi_groups[] = {
"hdmi_hpd", "hdmi_sda", "hdmi_scl", "hdmi_cec_0"
};
@@ -724,8 +733,12 @@ static const char * const i2c_a_groups[] = {
"i2c_sda_a", "i2c_sck_a",
};
static const char * const i2c_b_groups[] = {
"i2c_sda_b0", "i2c_sck_b0", "i2c_sda_b1", "i2c_sck_b1"
static const char * const i2c_b0_groups[] = {
"i2c_sda_b0", "i2c_sck_b0"
};
static const char * const i2c_b1_groups[] = {
"i2c_sda_b1", "i2c_sck_b1"
};
static const char * const sd_c_groups[] = {
@@ -843,15 +856,18 @@ static struct meson_pmx_func meson8b_cbus_functions[] = {
FUNCTION(uart_a),
FUNCTION(uart_b),
FUNCTION(iso7816),
FUNCTION(i2c_d),
FUNCTION(i2c_d0),
FUNCTION(i2c_d1),
FUNCTION(xtal),
FUNCTION(uart_c),
FUNCTION(i2c_c),
FUNCTION(i2c_c0),
FUNCTION(i2c_c1),
FUNCTION(hdmi),
FUNCTION(spi),
FUNCTION(ethernet),
FUNCTION(i2c_a),
FUNCTION(i2c_b),
FUNCTION(i2c_b0),
FUNCTION(i2c_b1),
FUNCTION(sd_c),
FUNCTION(sdxc_c),
FUNCTION(nand),