Enable Freescale i.MX I2C driver for i.MX6.
This commit is contained in:
parent
67bff9b155
commit
40d7d6323b
@ -154,8 +154,8 @@ options FREEBSD_BOOT_LOADER # Process metadata passed from loader(8)
|
|||||||
|
|
||||||
# SoC-specific devices
|
# SoC-specific devices
|
||||||
device ffec # Freescale Fast Ethernet Controller
|
device ffec # Freescale Fast Ethernet Controller
|
||||||
#device fsliic # Freescale i2c/iic (not ready yet)
|
device fsliic # Freescale i2c/iic
|
||||||
#device iic # iic protocol
|
device iic # iic protocol
|
||||||
#device iicbus # iic bus
|
device iicbus # iic bus
|
||||||
#device imxwdt # Watchdog. WARNING: can't be disabled!!!
|
#device imxwdt # Watchdog. WARNING: can't be disabled!!!
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ arm/freescale/imx/imx6_pl310.c standard
|
|||||||
arm/freescale/imx/imx_machdep.c standard
|
arm/freescale/imx/imx_machdep.c standard
|
||||||
arm/freescale/imx/imx_gpt.c standard
|
arm/freescale/imx/imx_gpt.c standard
|
||||||
arm/freescale/imx/imx_gpio.c optional gpio
|
arm/freescale/imx/imx_gpio.c optional gpio
|
||||||
|
arm/freescale/imx/imx_i2c.c optional fsliic
|
||||||
|
|
||||||
#
|
#
|
||||||
# Optional devices.
|
# Optional devices.
|
||||||
@ -52,5 +53,4 @@ arm/freescale/imx/imx6_usbphy.c optional ehci
|
|||||||
#
|
#
|
||||||
#arm/freescale/imx/imx51_iomux.c optional iomux
|
#arm/freescale/imx/imx51_iomux.c optional iomux
|
||||||
#dev/ata/chipsets/ata-fsl.c optional imxata
|
#dev/ata/chipsets/ata-fsl.c optional imxata
|
||||||
#arm/freescale/imx/imx_i2c.c optional fsliic
|
|
||||||
#arm/freescale/imx/imx51_ipuv3.c optional sc
|
#arm/freescale/imx/imx51_ipuv3.c optional sc
|
||||||
|
@ -86,6 +86,12 @@ __FBSDID("$FreeBSD$");
|
|||||||
#define debugf(fmt, args...)
|
#define debugf(fmt, args...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static struct ofw_compat_data compat_data[] = {
|
||||||
|
{"fsl,imx6q-i2c", 1},
|
||||||
|
{"fsl,imx-i2c", 1},
|
||||||
|
{NULL, 0}
|
||||||
|
};
|
||||||
|
|
||||||
struct i2c_softc {
|
struct i2c_softc {
|
||||||
device_t dev;
|
device_t dev;
|
||||||
device_t iicbus;
|
device_t iicbus;
|
||||||
@ -227,7 +233,7 @@ i2c_probe(device_t dev)
|
|||||||
if (!ofw_bus_status_okay(dev))
|
if (!ofw_bus_status_okay(dev))
|
||||||
return (ENXIO);
|
return (ENXIO);
|
||||||
|
|
||||||
if (!ofw_bus_is_compatible(dev, "fsl,imx-i2c"))
|
if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
|
||||||
return (ENXIO);
|
return (ENXIO);
|
||||||
|
|
||||||
sc = device_get_softc(dev);
|
sc = device_get_softc(dev);
|
||||||
@ -246,7 +252,7 @@ i2c_probe(device_t dev)
|
|||||||
/* Enable I2C */
|
/* Enable I2C */
|
||||||
i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
|
i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
|
||||||
bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
|
bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
|
||||||
device_set_desc(dev, "I2C bus controller");
|
device_set_desc(dev, "Freescale i.MX I2C bus controller");
|
||||||
|
|
||||||
return (BUS_PROBE_DEFAULT);
|
return (BUS_PROBE_DEFAULT);
|
||||||
}
|
}
|
||||||
|
@ -338,6 +338,27 @@
|
|||||||
reg = <0x02100000 0x00100000>;
|
reg = <0x02100000 0x00100000>;
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
|
i2c1: i2c@021a0000 {
|
||||||
|
compatible = "fsl,imx6q-i2c";
|
||||||
|
reg = <0x021a0000 0x4000>;
|
||||||
|
interrupts = < 68 >;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c2: i2c@021a4000 {
|
||||||
|
compatible = "fsl,imx6q-i2c";
|
||||||
|
reg = <0x021a4000 0x4000>;
|
||||||
|
interrupts = < 69 >;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c3: i2c@021ac000 {
|
||||||
|
compatible = "fsl,imx6q-i2c";
|
||||||
|
reg = <0x021a8000 0x4000>;
|
||||||
|
interrupts = < 70 >;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
fec1: ethernet@02188000 {
|
fec1: ethernet@02188000 {
|
||||||
compatible = "fsl,imx6q-fec";
|
compatible = "fsl,imx6q-fec";
|
||||||
reg = <0x02188000 0x4000>;
|
reg = <0x02188000 0x4000>;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user