Other Parts Discussed in Thread: LP8733, DRA72
Tool/software: Linux
Hi:
I have a custom AM5708 based board and want to use USB2 as an ethernet port.
I have configured the pinmux in u-boot accordingly.
How to configure in dts and defconfig?
Billa
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi Bin:
I configured USB according to what is explained in the videos.
I dont see any usb error messages during linux startup.
After "modprobe g_ether", directory "/sys/class/udc" is empty,
and "lsmod" shows "g_ether" and other usb related modules
such as "libcomposite".
See attached files.
Billa
root@am57xx-evm:~# ./chkusb.sh chkusb.sh Version 0.2.4 Linux am57xx-evm 4.14.40-rt29-gd5443cbd3b #1 SMP PREEMPT RT Wed Oct 24 12:46:39 CEST 2018 armv7l GNU/Linux USB initialization failed Warning: CONFIG_USB_OTG undefined, which is required for DRD mode. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-plat-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@48890000: otg, disabled ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@488d0000: peripheral, okay Gadget Kernel Config: g_zero is enabled Gadget Kernel Config: g_audio is enabled Gadget Kernel Config: g_ether is enabled Gadget Kernel Config: g_ncm is enabled Gadget Kernel Config: g_mass_storage is enabled Gadget Kernel Config: g_serial is enabled Gadget Kernel Config: g_printer is enabled gadget driver loaded: (none) The list of USB gadget drivers installed: /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/: function/ legacy/ libcomposite.ko udc/ /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/function: u_audio.ko u_ether.ko u_serial.ko usb_f_acm.ko usb_f_ecm.ko usb_f_ecm_subset.ko usb_f_eem.ko usb_f_fs.ko usb_f_hid.ko usb_f_mass_storage.ko usb_f_midi.ko usb_f_ncm.ko usb_f_obex.ko usb_f_printer.ko usb_f_rndis.ko usb_f_serial.ko usb_f_ss_lb.ko usb_f_uac1.ko usb_f_uac2.ko usb_f_uvc.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/legacy: g_acm_ms.ko g_audio.ko g_cdc.ko g_dbgp.ko g_ether.ko g_ffs.ko g_hid.ko g_mass_storage.ko g_midi.ko g_multi.ko g_ncm.ko g_printer.ko g_serial.ko g_webcam.ko g_zero.ko gadgetfs.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/udc: udc-core.ko root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# modprobe g_ether [ 104.674081] udc-core: couldn't find an available UDC - added [g_ether] to list of pending drivers root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# ./chkusb.sh chkusb.sh Version 0.2.4 Linux am57xx-evm 4.14.40-rt29-gd5443cbd3b #1 SMP PREEMPT RT Wed Oct 24 12:46:39 CEST 2018 armv7l GNU/Linux USB initialization failed Warning: CONFIG_USB_OTG undefined, which is required for DRD mode. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-plat-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@48890000: otg, disabled ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@488d0000: peripheral, okay Gadget Kernel Config: g_zero is enabled Gadget Kernel Config: g_audio is enabled Gadget Kernel Config: g_ether is enabled Gadget Kernel Config: g_ncm is enabled Gadget Kernel Config: g_mass_storage is enabled Gadget Kernel Config: g_serial is enabled Gadget Kernel Config: g_printer is enabled gadget driver loaded: (none) The list of USB gadget drivers installed: /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/: function/ legacy/ libcomposite.ko udc/ /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/function: u_audio.ko u_ether.ko u_serial.ko usb_f_acm.ko usb_f_ecm.ko usb_f_ecm_subset.ko usb_f_eem.ko usb_f_fs.ko usb_f_hid.ko usb_f_mass_storage.ko usb_f_midi.ko usb_f_ncm.ko usb_f_obex.ko usb_f_printer.ko usb_f_rndis.ko usb_f_serial.ko usb_f_ss_lb.ko usb_f_uac1.ko usb_f_uac2.ko usb_f_uvc.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/legacy: g_acm_ms.ko g_audio.ko g_cdc.ko g_dbgp.ko g_ether.ko g_ffs.ko g_hid.ko g_mass_storage.ko g_midi.ko g_multi.ko g_ncm.ko g_printer.ko g_serial.ko g_webcam.ko g_zero.ko gadgetfs.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/udc: udc-core.ko root@am57xx-evm:~#
/* * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include "dra72-evm-common.dtsi" #include "dra72x-mmc-iodelay.dtsi" #include <dt-bindings/gpio/gpio.h> / { compatible = "ti,dra718-evm", "ti,dra718", "ti,dra722", "ti,dra72", "ti,dra7"; model = "TI DRA718 EVM"; memory { device_type = "memory"; reg = <0x0 0x80000000 0x0 0x20000000>; /* 512MB */ }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; ipu2_memory_region: ipu2-memory@95800000 { compatible = "shared-dma-pool"; reg = <0x0 0x95800000 0x0 0x3800000>; reusable; status = "okay"; }; dsp1_memory_region: dsp1-memory@99000000 { compatible = "shared-dma-pool"; reg = <0x0 0x99000000 0x0 0x4000000>; reusable; status = "okay"; }; ipu1_memory_region: ipu1-memory@9d000000 { compatible = "shared-dma-pool"; reg = <0x0 0x9d000000 0x0 0x2000000>; reusable; status = "okay"; }; }; vpo_sd_1v8_3v3: gpio-regulator-TPS74801 { compatible = "regulator-gpio"; regulator-name = "vddshv8"; regulator-okmin-microvolt = <1800000>; regulator-max-microvolt = <3000000>; regulator-boot-on; vin-supply = <&evm_5v0>; gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>; states = <1800000 0x0 3000000 0x1>; }; evm_1v8_sw: fixedregulator-evm_1v8 { compatible = "regulator-fixed"; regulator-name = "evm_1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&lp8732_buck0_reg>; regulator-always-on; regulator-boot-on; }; poweroff: gpio-poweroff { compatible = "gpio-poweroff"; gpios = <&gpio7 30 GPIO_ACTIVE_HIGH>; input; }; }; &i2c1 { status = "disabled"; clock-frequency = <400000>; lp8733: lp8733@60 { compatible = "ti,lp8733"; reg = <0x60>; buck0-in-supply =<&vsys_3v3>; buck1-in-supply =<&vsys_3v3>; ldo0-in-supply =<&evm_5v0>; ldo1-in-supply =<&evm_5v0>; lp8733_regulators: regulators { lp8733_buck0_reg: buck0 { /* FB_B0 -> LP8733-BUCK1 - VPO_S1_AVS - VDD_CORE_AVS (core, mpu, gpu) */ regulator-name = "lp8733-buck0"; regulator-min-microvolt = <850000>; regulator-max-microvolt = <1250000>; regulator-always-on; regulator-boot-on; }; lp8733_buck1_reg: buck1 { /* FB_B1 -> LP8733-BUCK2 - VPO_S2_AVS - VDD_DSP_AVS (DSP/eve/iva) */ regulator-name = "lp8733-buck1"; regulator-min-microvolt = <850000>; regulator-max-microvolt = <1250000>; regulator-boot-on; regulator-always-on; }; lp8733_ldo0_reg: ldo0 { /* LDO0 -> LP8733-LDO1 - VPO_L1_3V3 - VDDSHV8 (optional) */ regulator-name = "lp8733-ldo0"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; lp8733_ldo1_reg: ldo1 { /* LDO1 -> LP8733-LDO2 - VPO_L2_3V3 - VDDA_USB3V3 */ regulator-name = "lp8733-ldo1"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; regulator-boot-on; }; }; }; lp8732: lp8732@61 { compatible = "ti,lp8732"; reg = <0x61>; buck0-in-supply =<&vsys_3v3>; buck1-in-supply =<&vsys_3v3>; ldo0-in-supply =<&vsys_3v3>; ldo1-in-supply =<&vsys_3v3>; lp8732_regulators: regulators { lp8732_buck0_reg: buck0 { /* FB_B0 -> LP8732-BUCK1 - VPO_S3_1V8 - VDDS_1V8 */ regulator-name = "lp8732-buck0"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; }; lp8732_buck1_reg: buck1 { /* FB_B1 -> LP8732-BUCK2 - VPO_S4_DDR - VDD_DDR_1V35 */ regulator-name = "lp8732-buck1"; regulator-min-microvolt = <1350000>; regulator-max-microvolt = <1350000>; regulator-boot-on; regulator-always-on; }; lp8732_ldo0_reg: ldo0 { /* LDO0 -> LP8732-LDO1 - VPO_L3_1V8 - VDA_1V8_PLL */ regulator-name = "lp8732-ldo0"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-boot-on; regulator-always-on; }; lp8732_ldo1_reg: ldo1 { /* LDO1 -> LP8732-LDO2 - VPO_L4_1V8 - VDA_1V8_PHY */ regulator-name = "lp8732-ldo1"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; }; }; }; }; &csi2_cam0 { status = "disabled"; clock-lanes = <0>; data-lanes = <1 2>; remote-endpoint = <&csi2_phy0>; }; &pcf_lcd { interrupt-parent = <&gpio7>; interrupts = <31 IRQ_TYPE_EDGE_FALLING>; }; &pcf_gpio_21 { interrupt-parent = <&gpio7>; interrupts = <31 IRQ_TYPE_EDGE_FALLING>; }; &pcf_hdmi { p0 { /* * PM_OEn to High: Disable routing I2C3 to PM_I2C * With this PM_SEL(p3) should not matter */ gpio-hog; gpios = <0 GPIO_ACTIVE_LOW>; output-high; line-name = "pm_oe_n"; }; }; &mmc1 { status = "disabled"; pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104"; pinctrl-0 = <&mmc1_pins_default>; pinctrl-1 = <&mmc1_pins_hs>; pinctrl-2 = <&mmc1_pins_sdr12>; pinctrl-3 = <&mmc1_pins_sdr25>; pinctrl-4 = <&mmc1_pins_sdr50>; pinctrl-5 = <&mmc1_pins_ddr50_rev20 &mmc1_iodelay_ddr50_conf>; pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>; vqmmc-supply = <&vpo_sd_1v8_3v3>; }; &mmc2 { status = "okay"; pinctrl-names = "default", "hs", "ddr_1_8v"; pinctrl-0 = <&mmc2_pins_default>; pinctrl-1 = <&mmc2_pins_hs>; pinctrl-2 = <&mmc2_pins_ddr_rev20 &mmc2_iodelay_ddr_conf>; vmmc-supply = <&evm_3v3_sw>; vqmmc-supply = <&evm_3v3_sw>; }; &davinci_mdio { reset-gpios = <&gpio4 31 GPIO_ACTIVE_LOW>; reset-delay-us = <2>; phy0:ethernet-phy@0 { reg = <0>; }; }; &mac { slaves = <1>; status = "okay"; sram = <&ocmcram1>; }; &cpsw_emac0 { phy-handle = <&phy0>; phy-mode = "mii"; status = "okay"; }; &cpsw_emac1 { status = "disabled"; }; /* No Sata on this device */ &sata_phy { status = "disabled"; }; &sata { status = "disabled"; }; /* No RTC on this device */ &rtc { status = "disabled"; }; &usb2_phy1 { status = "disabled"; phy-supply = <&lp8733_ldo1_reg>; }; &usb2_phy2 { status = "okay"; phy-supply = <&lp8733_ldo1_reg>; }; &dss { status = "disabled"; /* Supplied by VDA_1V8_PLL */ vdda_video-supply = <&lp8732_ldo0_reg>; }; &hdmi { /* Supplied by VDA_1V8_PHY */ vdda_video-supply = <&lp8732_ldo1_reg>; }; &ipu2 { status = "okay"; memory-region = <&ipu2_memory_region>; }; &ipu1 { status = "okay"; memory-region = <&ipu1_memory_region>; }; &dsp1 { status = "okay"; memory-region = <&dsp1_memory_region>; }; &uart3 { status = "okay"; }; &i2c5 { status = "disabled"; }; &uart1 { status = "disabled"; }; &elm { status = "disabled"; }; &usb1 { status = "disabled"; }; &usb2 { status = "okay"; }; &dcan1 { status = "disabled"; }; &atl { status = "disabled"; }; &pcie1_rc { status = "disabled"; }; &mcasp3 { status = "disabled"; }; #include "am57xx-evm-cmem-am571x.dtsi"
/* * Copyright (C) 2014-2016 Texas Instruments Incorporated - http://www.ti.com/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; #include "dra72x.dtsi" #include "dra7-ipu-dsp-common.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/clk/ti-dra7-atl.h> / { compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7"; aliases { display0 = &hdmi0; }; chosen { stdout-path = &uart3; }; evm_12v0: fixedregulator-evm12v0 { /* main supply */ compatible = "regulator-fixed"; regulator-name = "evm_12v0"; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; regulator-always-on; regulator-boot-on; }; evm_5v0: fixedregulator-evm5v0 { /* Output 1 of TPS43351QDAPRQ1 on dra72-evm */ /* Output 1 of LM5140QRWGTQ1 on dra71-evm */ compatible = "regulator-fixed"; regulator-name = "evm_5v0"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&evm_12v0>; regulator-always-on; regulator-boot-on; }; evm_3v6: fixedregulator-evm_3v6 { compatible = "regulator-fixed"; regulator-name = "evm_3v6"; regulator-min-microvolt = <3600000>; regulator-max-microvolt = <3600000>; vin-supply = <&evm_5v0>; regulator-always-on; regulator-boot-on; }; vsys_3v3: fixedregulator-vsys3v3 { /* Output 2 of TPS43351QDAPRQ1 on dra72-evm */ /* Output 2 of LM5140QRWGTQ1 on dra71-evm */ compatible = "regulator-fixed"; regulator-name = "vsys_3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&evm_12v0>; regulator-always-on; regulator-boot-on; }; evm_3v3_sw: fixedregulator-evm_3v3 { /* TPS22965DSG */ compatible = "regulator-fixed"; regulator-name = "evm_3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&vsys_3v3>; regulator-always-on; regulator-boot-on; }; aic_dvdd: fixedregulator-aic_dvdd { /* TPS77018DBVT */ compatible = "regulator-fixed"; regulator-name = "aic_dvdd"; vin-supply = <&evm_3v3_sw>; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; evm_3v3_sd: fixedregulator-sd { compatible = "regulator-fixed"; regulator-name = "evm_3v3_sd"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&evm_3v3_sw>; enable-active-high; gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>; }; extcon_usb1: extcon_usb1 { compatible = "linux,extcon-usb-gpio"; id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>; status = "disabled"; }; extcon_usb2: extcon_usb2 { vbus-gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>; }; hdmi0: connector { compatible = "hdmi-connector"; label = "hdmi"; type = "a"; port { hdmi_connector_in: endpoint { remote-endpoint = <&tpd12s015_out>; }; }; }; tpd12s015: encoder { compatible = "ti,tpd12s015"; gpios = <&pcf_hdmi 4 GPIO_ACTIVE_HIGH>, /* P4, CT CP HPD */ <&pcf_hdmi 5 GPIO_ACTIVE_HIGH>, /* P5, LS OE */ <&gpio7 12 GPIO_ACTIVE_HIGH>; /* gpio7_12/sp1_cs2, HPD */ ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; tpd12s015_in: endpoint { remote-endpoint = <&hdmi_out>; }; }; port@1 { reg = <1>; tpd12s015_out: endpoint { remote-endpoint = <&hdmi_connector_in>; }; }; }; }; sound0: sound0 { compatible = "simple-audio-card"; simple-audio-card,name = "DRA7xx-EVM"; simple-audio-card,widgets = "Headphone", "Headphone Jack", "Line", "Line Out", "Microphone", "Mic Jack", "Line", "Line In"; simple-audio-card,routing = "Headphone Jack", "HPLOUT", "Headphone Jack", "HPROUT", "Line Out", "LLOUT", "Line Out", "RLOUT", "MIC3L", "Mic Jack", "MIC3R", "Mic Jack", "Mic Jack", "Mic Bias", "LINE1L", "Line In", "LINE1R", "Line In"; simple-audio-card,format = "dsp_b"; simple-audio-card,bitclock-master = <&sound0_master>; simple-audio-card,frame-master = <&sound0_master>; simple-audio-card,bitclock-inversion; sound0_master: simple-audio-card,cpu { sound-dai = <&mcasp3>; system-clock-frequency = <5644800>; }; simple-audio-card,codec { sound-dai = <&tlv320aic3106>; clocks = <&atl_clkin2_ck>; }; }; clk_ov10633_fixed: clk_ov10633_fixed { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <24000000>; }; vmmcwl_fixed: fixedregulator-mmcwl { compatible = "regulator-fixed"; regulator-name = "vmmcwl_fixed"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&gpio5 8 GPIO_ACTIVE_HIGH>; enable-active-high; }; }; &dra7_pmx_core { dcan1_pins_default: dcan1_pins_default { pinctrl-single,pins = < DRA7XX_CORE_IOPAD(0x37d0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* dcan1_tx */ DRA7XX_CORE_IOPAD(0x3818, PULL_UP | MUX_MODE1) /* wakeup0.dcan1_rx */ >; }; dcan1_pins_sleep: dcan1_pins_sleep { pinctrl-single,pins = < DRA7XX_CORE_IOPAD(0x37d0, MUX_MODE15 | PULL_UP) /* dcan1_tx.off */ DRA7XX_CORE_IOPAD(0x3818, MUX_MODE15 | PULL_UP) /* wakeup0.off */ >; }; }; &i2c1 { status = "disabled"; clock-frequency = <400000>; pcf_lcd: gpio@20 { compatible = "nxp,pcf8575"; reg = <0x20>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; pcf_gpio_21: gpio@21 { compatible = "ti,pcf8575", "nxp,pcf8575"; reg = <0x21>; lines-initial-states = <0x1408>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; tlv320aic3106: tlv320aic3106@19 { #sound-dai-cells = <0>; compatible = "ti,tlv320aic3106"; reg = <0x19>; adc-settle-ms = <40>; ai3x-micbias-vg = <1>; /* 2.0V */ status = "disabled"; /* Regulators */ AVDD-supply = <&evm_3v3_sw>; IOVDD-supply = <&evm_3v3_sw>; DRVDD-supply = <&evm_3v3_sw>; DVDD-supply = <&aic_dvdd>; }; }; &i2c5 { status = "disabled"; clock-frequency = <400000>; pcf_hdmi: pcf8575@26 { compatible = "ti,pcf8575", "nxp,pcf8575"; reg = <0x26>; gpio-controller; #gpio-cells = <2>; /* * initial state is used here to keep the mdio interface * selected on RU89 through SEL_VIN4_MUX_S0, VIN2_S1 and * VIN2_S0 driven high otherwise Ethernet stops working * VIN6_SEL_S0 is low, thus selecting McASP3 over VIN6 */ lines-initial-states = <0x0f2b>; p1 { /* vin6_sel_s0: high: VIN6, low: audio */ gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>; output-low; line-name = "vin6_sel_s0"; }; }; ov10633@37 { compatible = "ovti,ov10633"; reg = <0x37>; clocks = <&clk_ov10633_fixed>; clock-names = "xvclk"; mux-gpios = <&pcf_hdmi 2 GPIO_ACTIVE_HIGH>, /* VIN2_S0 */ <&pcf_hdmi 6 GPIO_ACTIVE_LOW>; /* VIN2_S2 */ port { onboardLI: endpoint { remote-endpoint = <&vin2a>; hsync-active = <1>; vsync-active = <1>; pclk-sample = <0>; }; }; }; gpio_csi2_adap: tca6416@20 { status = "disabled"; compatible = "ti,tca6416"; reg = <0x20>; gpio-controller; #gpio-cells = <2>; }; ov490@24 { compatible = "ovti,ov490"; reg = <0x24>; mux-gpios = <&gpio_csi2_adap 0 GPIO_ACTIVE_LOW>, /* CSI2_SEL_I2C_CLK */ <&gpio_csi2_adap 1 GPIO_ACTIVE_HIGH>, /* CSI2_SEL_REF_CLK */ <&gpio_csi2_adap 3 GPIO_ACTIVE_HIGH>, /* CSI2_CAM0_RESETn */ <&gpio_csi2_adap 4 GPIO_ACTIVE_LOW>; /* CSI2_CAM0_PWR_DWN */ port { csi2_cam0: endpoint@0 { clock-lanes = <0>; data-lanes = <1 2 3 4>; remote-endpoint = <&csi2_phy0>; }; }; }; }; &uart1 { status = "disabled"; interrupts-extended = <&crossbar_mpu GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>, <&dra7_pmx_core 0x3e0>; }; &elm { status = "disabled"; }; &gpmc { /* * For the existing IOdelay configuration via U-Boot we don't * support NAND on dra72-evm. Keep it disabled. Enabling it * requires a different configuration by U-Boot. */ status = "disabled"; ranges = <0 0 0x08000000 0x01000000>; /* minimum GPMC partition = 16MB */ nand@0,0 { /* To use NAND, DIP switch SW5 must be set like so: * SW5.1 (NAND_SELn) = ON (LOW) * SW5.9 (GPMC_WPN) = OFF (HIGH) */ compatible = "ti,omap2-nand"; reg = <0 0 4>; /* device IO registers */ interrupt-parent = <&gpmc>; interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */ <1 IRQ_TYPE_NONE>; /* termcount */ rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 pin */ ti,nand-xfer-type = "prefetch-dma"; ti,nand-ecc-opt = "bch8"; ti,elm-id = <&elm>; nand-bus-width = <16>; gpmc,device-width = <2>; gpmc,sync-clk-ps = <0>; gpmc,cs-on-ns = <0>; gpmc,cs-rd-off-ns = <80>; gpmc,cs-wr-off-ns = <80>; gpmc,adv-on-ns = <0>; gpmc,adv-rd-off-ns = <60>; gpmc,adv-wr-off-ns = <60>; gpmc,we-on-ns = <10>; gpmc,we-off-ns = <50>; gpmc,oe-on-ns = <4>; gpmc,oe-off-ns = <40>; gpmc,access-ns = <40>; gpmc,wr-access-ns = <80>; gpmc,rd-cycle-ns = <80>; gpmc,wr-cycle-ns = <80>; gpmc,bus-turnaround-ns = <0>; gpmc,cycle2cycle-delay-ns = <0>; gpmc,clk-activation-ns = <0>; gpmc,wr-data-mux-bus-ns = <0>; /* MTD partition table */ /* All SPL-* partitions are sized to minimal length * which can be independently programmable. For * NAND flash this is equal to size of erase-block */ #address-cells = <1>; #size-cells = <1>; partition@0 { label = "NAND.SPL"; reg = <0x00000000 0x000020000>; }; partition@1 { label = "NAND.SPL.backup1"; reg = <0x00020000 0x00020000>; }; partition@2 { label = "NAND.SPL.backup2"; reg = <0x00040000 0x00020000>; }; partition@3 { label = "NAND.SPL.backup3"; reg = <0x00060000 0x00020000>; }; partition@4 { label = "NAND.u-boot-spl-os"; reg = <0x00080000 0x00040000>; }; partition@5 { label = "NAND.u-boot"; reg = <0x000c0000 0x00100000>; }; partition@6 { label = "NAND.u-boot-env"; reg = <0x001c0000 0x00020000>; }; partition@7 { label = "NAND.u-boot-env.backup1"; reg = <0x001e0000 0x00020000>; }; partition@8 { label = "NAND.kernel"; reg = <0x00200000 0x00800000>; }; partition@9 { label = "NAND.file-system"; reg = <0x00a00000 0x0f600000>; }; }; }; &omap_dwc3_1 { extcon = <&extcon_usb1>; }; &omap_dwc3_2 { extcon = <&extcon_usb2>; }; &usb1 { dr_mode = "otg"; extcon = <&extcon_usb1>; }; &usb2 { dr_mode = "peripheral"; extcon = <&extcon_usb2>; }; &mmc1 { status = "disabled"; pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins_default>; vmmc-supply = <&evm_3v3_sd>; bus-width = <4>; /* * SDCD signal is not being used here - using the fact that GPIO mode * is a viable alternative */ cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; max-frequency = <192000000>; }; &mmc2 { status = "okay"; bus-width = <8>; ti,non-removable; max-frequency = <96000000>; no-1-8-v; /delete-property/ mmc-hs200-1_8v; }; &mac { status = "okay"; }; &dcan1 { status = "disabled"; pinctrl-names = "default", "sleep", "active"; pinctrl-0 = <&dcan1_pins_sleep>; pinctrl-1 = <&dcan1_pins_sleep>; pinctrl-2 = <&dcan1_pins_default>; }; &qspi { status = "okay"; spi-max-frequency = <15000000>; m25p80@0 { compatible = "s25fl256s1"; spi-max-frequency = <15000000>; reg = <0>; spi-tx-bus-width = <1>; spi-rx-bus-width = <4>; #address-cells = <1>; #size-cells = <1>; /* MTD partition table. * The ROM checks the first four physical blocks * for a valid file to boot and the flash here is * 64KiB block size. */ partition@0 { label = "QSPI.SPL"; reg = <0x00000000 0x000010000>; }; partition@1 { label = "QSPI.SPL.backup1"; reg = <0x00010000 0x00010000>; }; partition@2 { label = "QSPI.SPL.backup2"; reg = <0x00020000 0x00010000>; }; partition@3 { label = "QSPI.SPL.backup3"; reg = <0x00030000 0x00010000>; }; partition@4 { label = "QSPI.u-boot"; reg = <0x00040000 0x00100000>; }; partition@5 { label = "QSPI.u-boot-spl-os"; reg = <0x00140000 0x00080000>; }; partition@6 { label = "QSPI.u-boot-env"; reg = <0x001c0000 0x00010000>; }; partition@7 { label = "QSPI.u-boot-env.backup1"; reg = <0x001d0000 0x0010000>; }; partition@8 { label = "QSPI.kernel"; reg = <0x001e0000 0x0800000>; }; partition@9 { label = "QSPI.file-system"; reg = <0x009e0000 0x01620000>; }; }; }; &gpu { status = "disabled"; }; &dss { status = "disabled"; }; &bb2d { status = "disabled"; }; &hdmi { status = "disabled"; port { hdmi_out: endpoint { remote-endpoint = <&tpd12s015_in>; }; }; }; &vip1 { status = "disabled"; }; &vin2a { status = "disabled"; endpoint@0 { slave-mode; remote-endpoint = <&onboardLI>; }; }; &cal { status = "disabled"; }; &csi2_0 { csi2_phy0: endpoint@0 { slave-mode; remote-endpoint = <&csi2_cam0>; }; }; &atl { assigned-clocks = <&abe_dpll_sys_clk_mux>, <&atl_gfclk_mux>, <&dpll_abe_ck>, <&dpll_abe_m2x2_ck>, <&atl_clkin2_ck>; assigned-clock-parents = <&sys_clkin2>, <&dpll_abe_m2_ck>; assigned-clock-rates = <0>, <0>, <180633600>, <361267200>, <5644800>; status = "disabled"; atl2 { bws = <DRA7_ATL_WS_MCASP2_FSX>; aws = <DRA7_ATL_WS_MCASP3_FSX>; }; }; &mcasp3 { #sound-dai-cells = <0>; assigned-clocks = <&mcasp3_ahclkx_mux>; assigned-clock-parents = <&atl_clkin2_ck>; status = "disabled"; op-mode = <0>; /* MCASP_IIS_MODE */ tdm-slots = <2>; /* 4 serializer */ serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */ 1 2 0 0 >; tx-num-evt = <32>; rx-num-evt = <32>; }; &pcie1_rc { status = "disabled"; };
Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.14.40-rt29-gd5443cbd3b (bridge@PC932) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #1 SMP PREEMPT RT Wed Oct 24 12:46:39 CEST 2018 [ 0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache [ 0.000000] OF: fdt: Machine model: TI DRA718 EVM [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB [ 0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool [ 0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB [ 0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool [ 0.000000] Reserved memory: created CMA memory pool at 0x000000009d000000, size 32 MiB [ 0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool [ 0.000000] cma: Reserved 24 MiB at 0x0000000094000000 [ 0.000000] OMAP4: Map 0x000000009fd00000 to fe600000 for dram barrier [ 0.000000] DRA722 ES2.1 [ 0.000000] percpu: Embedded 15 pages/cpu @dfc33000 s31968 r8192 d21280 u61440 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 129158 [ 0.000000] Kernel command line: console=ttyO2,115200n8 root=/dev/nfs nfsroot=10.3.33.185:/home/bridge/SDK-Bridge/ti-processor-sdk-linux-rt-am57xx-evm-05.00.00.15/targetNFS,nolock rw ip=10.3.33.186:10.f [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 319712K/521216K available (8192K kernel code, 357K rwdata, 2476K rodata, 2048K init, 347K bss, 21280K reserved, 180224K cma-reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xe0000000 - 0xff800000 ( 504 MB) [ 0.000000] lowmem : 0xc0000000 - 0xdfd00000 ( 509 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc0a00000 (10208 kB) [ 0.000000] .init : 0xc0e00000 - 0xc1000000 (2048 kB) [ 0.000000] .data : 0xc1000000 - 0xc1059620 ( 358 kB) [ 0.000000] .bss : 0xc105b000 - 0xc10b1d84 ( 348 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1. [ 0.000000] RCU priority boosting: priority 1 delay 500 ms. [ 0.000000] No expedited grace period (rcu_normal_after_boot). [ 0.000000] Tasks RCU enabled. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] OMAP clockevent source: timer1 at 32786 Hz [ 0.000000] arch_timer: cp15 timer(s) running at 6.14MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x16af5adb9, max_idle_ns: 440795202250 ns [ 0.000005] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 4398046511023ns [ 0.000011] Switching to timer-based delay loop, resolution 162ns [ 0.000338] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns [ 0.000340] OMAP clocksource: 32k_counter at 32768 Hz [ 0.000849] Console: colour dummy device 80x30 [ 0.000971] WARNING: Your 'console=ttyO2' has been replaced by 'ttyS2' [ 0.000973] This ensures that you still see kernel messages. Please [ 0.000975] update your kernel commandline. [ 0.000987] Calibrating delay loop (skipped), value calculated using timer frequency.. 12.29 BogoMIPS (lpj=61475) [ 0.000994] pid_max: default: 32768 minimum: 301 [ 0.001113] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.001119] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.001735] CPU: Testing write buffer coherency: ok [ 0.001971] /cpus/cpu@0 missing clock-frequency property [ 0.002004] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.039878] Setting up static identity map for 0x80200000 - 0x80200060 [ 0.079870] Hierarchical SRCU implementation. [ 0.140343] EFI services will not be available. [ 0.160004] smp: Bringing up secondary CPUs ... [ 0.160014] smp: Brought up 1 node, 1 CPU [ 0.160023] SMP: Total of 1 processors activated (12.29 BogoMIPS). [ 0.160031] CPU: All CPU(s) started in HYP mode. [ 0.160037] CPU: Virtualization extensions available. [ 0.160598] devtmpfs: initialized [ 0.195294] random: get_random_u32 called from bucket_table_alloc+0x14c/0x288 with crng_init=0 [ 0.200211] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0 [ 0.200465] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.200485] futex hash table entries: 256 (order: 2, 16384 bytes) [ 0.204413] pinctrl core: initialized pinctrl subsystem [ 0.205255] DMI not present or invalid. [ 0.205704] NET: Registered protocol family 16 [ 0.208189] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.209074] omap_hwmod: l3_main_2 using broken dt data from ocp [ 0.415744] OMAP GPIO hardware version 0.1 [ 0.446832] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. [ 0.446846] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.447314] omap4_sram_init:Unable to allocate sram needed to handle errata I688 [ 0.447325] omap4_sram_init:Unable to get sram pool needed to handle errata I688 [ 0.448649] OMAP DMA hardware revision 0.0 [ 0.504437] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported) [ 0.506924] edma 43300000.edma: memcpy is disabled [ 0.513001] edma 43300000.edma: TI EDMA DMA engine driver [ 0.514076] evm_5v0: supplied by evm_12v0 [ 0.514563] evm_3v6: supplied by evm_5v0 [ 0.515046] vsys_3v3: supplied by evm_12v0 [ 0.515528] evm_3v3: supplied by vsys_3v3 [ 0.516001] aic_dvdd: supplied by evm_3v3 [ 0.517833] vddshv8: invalid voltage constraints [ 0.517847] gpio-regulator gpio-regulator-TPS74801: Failed to register regulator: -22 [ 0.517938] gpio-regulator: probe of gpio-regulator-TPS74801 failed with error -22 [ 0.521417] omap-iommu 40d01000.mmu: 40d01000.mmu registered [ 0.521925] omap-iommu 40d02000.mmu: 40d02000.mmu registered [ 0.522516] omap-iommu 58882000.mmu: 58882000.mmu registered [ 0.523108] omap-iommu 55082000.mmu: 55082000.mmu registered [ 0.523670] iommu: Adding device 58820000.ipu to group 1 [ 0.523856] iommu: Adding device 55020000.ipu to group 2 [ 0.524193] iommu: Adding device 40800000.dsp to group 0 [ 0.526185] media: Linux media interface: v0.10 [ 0.526236] Linux video capture interface: v2.00 [ 0.526357] pps_core: LinuxPPS API ver. 1 registered [ 0.526365] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.526389] PTP clock support registered [ 0.526426] EDAC MC: Ver: 3.0.0 [ 0.530773] dmi: Firmware registration failed. [ 0.531343] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400 [ 0.531636] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400 [ 0.532195] Advanced Linux Sound Architecture Driver Initialized. [ 0.540836] clocksource: Switched to clocksource arch_sys_counter [ 0.554237] NET: Registered protocol family 2 [ 0.555103] TCP established hash table entries: 4096 (order: 2, 16384 bytes) [ 0.555155] TCP bind hash table entries: 4096 (order: 4, 114688 bytes) [ 0.555295] TCP: Hash tables configured (established 4096 bind 4096) [ 0.555392] UDP hash table entries: 256 (order: 2, 16384 bytes) [ 0.555426] UDP-Lite hash table entries: 256 (order: 2, 16384 bytes) [ 0.555676] NET: Registered protocol family 1 [ 0.576215] RPC: Registered named UNIX socket transport module. [ 0.576227] RPC: Registered udp transport module. [ 0.576237] RPC: Registered tcp transport module. [ 0.576246] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.577584] hw perfevents: no interrupt-affinity property for /pmu, guessing. [ 0.577801] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available [ 0.579601] workingset: timestamp_bits=14 max_order=17 bucket_order=3 [ 0.587665] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.598599] NFS: Registering the id_resolver key type [ 0.598632] Key type id_resolver registered [ 0.598642] Key type id_legacy registered [ 0.598715] ntfs: driver 2.1.32 [Flags: R/O]. [ 0.601273] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245) [ 0.601288] io scheduler noop registered [ 0.601298] io scheduler deadline registered [ 0.601448] io scheduler cfq registered (default) [ 0.601460] io scheduler mq-deadline registered [ 0.601470] io scheduler kyber registered [ 0.607017] pinctrl-single 4a003400.pinmux: 282 pins at pa fc003400 size 1128 [ 0.607267] pinctrl-single 4a002e8c.pinmux: please update dts to use #pinctrl-cells = <1> [ 0.607359] pinctrl-single 4a002e8c.pinmux: initialized with no interrupts [ 0.607371] pinctrl-single 4a002e8c.pinmux: 1 pins at pa fc002e8c size 4 [ 0.702225] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled [ 0.706824] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 43, base_baud = 3000000) is a 8250 [ 1.605120] console [ttyS2] enabled [ 1.611238] omap_rng 48090000.rng: Random Number Generator ver. 20 [ 1.635558] brd: module loaded [ 1.650171] loop: module loaded [ 1.658593] m25p80 spi0.0: found n25q256a, expected s25fl256s1 [ 1.664960] m25p80 spi0.0: n25q256a (32768 Kbytes) [ 1.669858] 10 ofpart partitions found on MTD device spi0.0 [ 1.675459] Creating 10 MTD partitions on "spi0.0": [ 1.680362] 0x000000000000-0x000000010000 : "QSPI.SPL" [ 1.686746] 0x000000010000-0x000000020000 : "QSPI.SPL.backup1" [ 1.693740] 0x000000020000-0x000000030000 : "QSPI.SPL.backup2" [ 1.700763] 0x000000030000-0x000000040000 : "QSPI.SPL.backup3" [ 1.707755] 0x000000040000-0x000000140000 : "QSPI.u-boot" [ 1.714309] 0x000000140000-0x0000001c0000 : "QSPI.u-boot-spl-os" [ 1.721503] 0x0000001c0000-0x0000001d0000 : "QSPI.u-boot-env" [ 1.728413] 0x0000001d0000-0x0000001e0000 : "QSPI.u-boot-env.backup1" [ 1.736019] 0x0000001e0000-0x0000009e0000 : "QSPI.kernel" [ 1.742588] 0x0000009e0000-0x000002000000 : "QSPI.file-system" [ 1.750554] libphy: Fixed MDIO Bus: probed [ 1.810890] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000 [ 1.818591] libphy: 48485000.mdio: probed [ 1.835243] davinci_mdio 48485000.mdio: phy[0]: device 48485000.mdio:00, driver TI DP83822 10/100 Mbps PHY [ 1.845689] cpsw 48484000.ethernet: Detected MACID = 00:a0:de:ad:be:ef [ 1.852254] cpsw 48484000.ethernet: GMAC port 0 [ 1.856893] cpsw 48484000.ethernet: initialized cpsw ale version 1.4 [ 1.863280] cpsw 48484000.ethernet: ALE Table size 1024 [ 1.868542] cpsw 48484000.ethernet: device node lookup for pps timer failed [ 1.875577] cpsw 48484000.ethernet: cpts: overflow check period 500 (jiffies) [ 1.884540] net eth0: rpmsg goose driver init: 0 [ 1.889261] net eth0: ocmc rxbuf: pa x40300000 va e1100000 size 0xe000 [ 1.896526] i2c /dev entries driver [ 1.901283] IR NEC protocol handler initialized [ 1.905836] IR RC5(x/sz) protocol handler initialized [ 1.910912] IR RC6 protocol handler initialized [ 1.915464] IR JVC protocol handler initialized [ 1.920015] IR Sony protocol handler initialized [ 1.924994] IR SANYO protocol handler initialized [ 1.929720] IR Sharp protocol handler initialized [ 1.934447] IR MCE Keyboard/mouse protocol handler initialized [ 1.940307] IR XMP protocol handler initialized [ 1.951006] sdhci: Secure Digital Host Controller Interface driver [ 1.957217] sdhci: Copyright(c) Pierre Ossman [ 1.962457] sdhci-pltfm: SDHCI platform and OF driver helper [ 2.030880] mmc0: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA [ 2.050442] NET: Registered protocol family 10 [ 2.066440] Segment Routing with IPv6 [ 2.070243] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 2.077021] NET: Registered protocol family 17 [ 2.081976] Key type dns_resolver registered [ 2.086468] omap_voltage_late_init: Voltage driver support not added [ 2.091260] ti-iodelay 4844a000.padconf: Set reg 0x18c Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091271] ti-iodelay 4844a000.padconf: Set reg 0x1a4 Delay(a: 119 g: 0), Elements(C=0 F=3)0x29003 [ 2.091281] ti-iodelay 4844a000.padconf: Set reg 0x1b0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091290] ti-iodelay 4844a000.padconf: Set reg 0x1bc Delay(a: 18 g: 0), Elements(C=0 F=0)0x29000 [ 2.091299] ti-iodelay 4844a000.padconf: Set reg 0x1c8 Delay(a: 894 g: 0), Elements(C=2 F=0)0x29040 [ 2.091308] ti-iodelay 4844a000.padconf: Set reg 0x1d4 Delay(a: 30 g: 0), Elements(C=0 F=0)0x29000 [ 2.091317] ti-iodelay 4844a000.padconf: Set reg 0x1e0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091326] ti-iodelay 4844a000.padconf: Set reg 0x1ec Delay(a: 23 g: 0), Elements(C=0 F=0)0x29000 [ 2.091334] ti-iodelay 4844a000.padconf: Set reg 0x1f8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091343] ti-iodelay 4844a000.padconf: Set reg 0x360 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091351] ti-iodelay 4844a000.padconf: Set reg 0x194 Delay(a: 152 g: 0), Elements(C=0 F=4)0x29004 [ 2.091360] ti-iodelay 4844a000.padconf: Set reg 0x1ac Delay(a: 206 g: 0), Elements(C=0 F=6)0x29006 [ 2.091369] ti-iodelay 4844a000.padconf: Set reg 0x1b8 Delay(a: 78 g: 0), Elements(C=0 F=2)0x29002 [ 2.091377] ti-iodelay 4844a000.padconf: Set reg 0x1c4 Delay(a: 2 g: 0), Elements(C=0 F=0)0x29000 [ 2.091386] ti-iodelay 4844a000.padconf: Set reg 0x1d0 Delay(a: 266 g: 0), Elements(C=0 F=8)0x29008 [ 2.091394] ti-iodelay 4844a000.padconf: Set reg 0x1dc Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091402] ti-iodelay 4844a000.padconf: Set reg 0x1e8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091411] ti-iodelay 4844a000.padconf: Set reg 0x1f4 Delay(a: 43 g: 0), Elements(C=0 F=1)0x29001 [ 2.091419] ti-iodelay 4844a000.padconf: Set reg 0x200 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091449] ti-iodelay 4844a000.padconf: Set reg 0x368 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091458] ti-iodelay 4844a000.padconf: Set reg 0x190 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091466] ti-iodelay 4844a000.padconf: Set reg 0x1a8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091474] ti-iodelay 4844a000.padconf: Set reg 0x1b4 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091483] ti-iodelay 4844a000.padconf: Set reg 0x1c0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091491] ti-iodelay 4844a000.padconf: Set reg 0x1d8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091499] ti-iodelay 4844a000.padconf: Set reg 0x1e4 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091507] ti-iodelay 4844a000.padconf: Set reg 0x1f0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091515] ti-iodelay 4844a000.padconf: Set reg 0x1fc Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091524] ti-iodelay 4844a000.padconf: Set reg 0x364 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.091603] mmc0: new DDR MMC card at address 0001 [ 2.094418] mmcblk0: mmc0:0001 P1XXXX 7.20 GiB [ 2.096312] mmcblk0boot0: mmc0:0001 P1XXXX partition 1 16.0 MiB [ 2.097992] mmcblk0boot1: mmc0:0001 P1XXXX partition 2 16.0 MiB [ 2.099889] mmcblk0rpmb: mmc0:0001 P1XXXX partition 3 128 KiB [ 2.101408] mmcblk0: p1 p2 p3 p4 < > [ 2.388666] Power Management for TI OMAP4+ devices. [ 2.393925] Registering SWP/SWPB emulation handler [ 2.441723] dmm 4e000000.dmm: workaround for errata i878 in use [ 2.450626] dmm 4e000000.dmm: initialized all PAT entries [ 2.460085] hctosys: unable to open rtc device (rtc0) [ 2.466739] net eth0: initializing cpsw version 1.15 (0) [ 2.574043] TI DP83822 10/100 Mbps PHY 48485000.mdio:00: attached PHY driver [TI DP83822 10/100 Mbps PHY] (mii_bus:phy_addr=48485000.mdio:00, irq=POLL) [ 2.590304] cpts ptp bc clkid 0 [ 2.598910] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 4.646511] cpsw 48484000.ethernet eth0: Link is Up - 100Mbps/Half - flow control off [ 4.670899] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 4.700869] IP-Config: Complete: [ 4.704118] device=eth0, hwaddr=00:a0:de:ad:be:ef, ipaddr=10.3.33.186, mask=255.255.248.0, gw=255.255.255.255 [ 4.714545] host=10.3.33.186, domain=, nis-domain=(none) [ 4.720320] bootserver=10.3.33.185, rootserver=10.3.33.185, rootpath= [ 4.728690] aic_dvdd: disabling [ 4.731853] vmmcwl_fixed: disabling [ 4.735368] pbias_mmc_omap5: disabling [ 4.739151] ALSA device list: [ 4.742133] No soundcards found. [ 4.768309] VFS: Mounted root (nfs filesystem) on device 0:14. [ 4.774816] devtmpfs: mounted [ 4.781086] Freeing unused kernel memory: 2048K [ 5.217515] systemd[1]: System time before build time, advancing clock. [ 5.287477] systemd[1]: systemd 234 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN) [ 5.309189] systemd[1]: Detected architecture arm. Welcome to Arago 2018.04! [ 5.342390] systemd[1]: Set hostname to <am57xx-evm>. [ 6.368742] random: systemd: uninitialized urandom read (16 bytes read) [ 6.409855] systemd[1]: Listening on Process Core Dump Socket. [ OK ] Listening on Process Core Dump Socket. [ 6.451233] random: systemd: uninitialized urandom read (16 bytes read) [ 6.458249] systemd[1]: Listening on udev Control Socket. [ OK ] Listening on udev Control Socket. [ 6.491031] random: systemd: uninitialized urandom read (16 bytes read) [ 6.502494] systemd[1]: Created slice User and Session Slice. [ OK ] Created slice User and Session Slice. [ 6.532801] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. [ OK ] Listening on /dev/initctl Compatibility Named Pipe. [ 6.571402] systemd[1]: Listening on Syslog Socket. [ OK ] Listening on Syslog Socket. [ 6.603426] systemd[1]: Created slice System Slice. [ OK ] Created slice System Slice. [ 6.647607] systemd[1]: Mounting POSIX Message Queue File System... Mounting POSIX Message Queue File System... [ OK ] Created slice system-serial\x2dgetty.slice. [ OK ] Started Dispatch Password Requests to Console Directory Watch. Mounting Kernel Debug File System... [ OK ] Created slice system-getty.slice. [ OK ] Reached target Remote File Systems. [ OK ] Started Forward Password Requests to Wall Directory Watch. [ OK ] Reached target Paths. [ OK ] Listening on Network Service Netlink Socket. [ OK ] Reached target Slices. [ OK ] Listening on udev Kernel Socket. [ OK ] Listening on Journal Socket (/dev/log). [ OK ] Listening on Journal Socket. Starting Journal Service... Starting Load Kernel Modules... Starting Remount Root and Kernel File Systems... [ 7.264959] cmemk: loading out-of-tree module taints kernel. Starting Create list of required st��…ce nodes for the current k[ 7.286826] CMEMK module: reference Linux version 4.14.40 ernel... [ 7.305997] cmemk initialized [ OK ] Reached target Swap. [ 7.351548] cryptodev: driver 1.9 loaded. Mounting Temporary Directory (/tmp)... [ 7.494141] usbcore: registered new interface driver usbfs [ 7.509859] usbcore: registered new interface driver hub [ 7.525378] usbcore: registered new device driver usb [ OK ] Mounted Kernel Debug File System. [ 7.548141] usbcore: registered new interface driver usbserial [ OK ] Mounted POSIX Message Queue File System. [ OK ] Mounted Temporary Directory (/tmp). [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. [ OK ] Started Remount Root and Kernel File Systems. [ OK ] Started Create list of required sta��…vice nodes for the current kernel. [ OK ] Started Journal Service. Starting udev Coldplug all Devices... Starting Create Static Device Nodes in /dev... Starting Flush Journal to Persistent Storage... Mounting Kernel Configuration File System... Starting Apply Kernel Variables... [ OK ] Mounted Kernel Configuration File System. [ OK ] Started Create Static Device Nodes in /dev. [ OK ] Started Apply Kernel Variables. [ 8.305326] systemd-journald[94]: Received request to flush runtime journal from PID 1 [ OK ] Reached target Local File Systems (Pre). Mounting /media/ram... Mounting /var/volatile... Starting udev Kernel Device Manager... [ OK ] Mounted /var/volatile. [ OK ] Mounted /media/ram. [ OK ] Started Flush Journal to Persistent Storage. Starting Load/Save Random Seed... [ OK ] Reached target Local File Systems. Starting Create Volatile Files and Directories... [ OK ] Started udev Kernel Device Manager. [ OK ] Started Load/Save Random Seed. [ OK ] Started Create Volatile Files and Directories. Starting Update UTMP about System Boot/Shutdown... Starting Network Time Synchronization... [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Started Network Time Synchronization. [ OK ] Reached target System Time Synchronized. [ 11.094130] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000 [ 11.143796] remoteproc remoteproc0: 58820000.ipu is available [ 11.201551] remoteproc remoteproc0: Direct firmware load for dra7-ipu1-fw.xem4 failed with error -2 [ 11.205931] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000 [ 11.206079] remoteproc remoteproc1: 55020000.ipu is available [ 11.218949] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000 [ 11.222643] remoteproc remoteproc2: 40800000.dsp is available [ 11.506741] remoteproc remoteproc0: powering up 58820000.ipu [ 11.555855] remoteproc remoteproc0: Direct firmware load for dra7-ipu1-fw.xem4 failed with error -2 [ 11.660752] remoteproc remoteproc0: request_firmware failed: -2 [ 11.726363] remoteproc remoteproc2: Direct firmware load for dra7-dsp1-fw.xe66 failed with error -2 [ OK ] Found device /dev/ttyS2. [ 11.802694] remoteproc remoteproc2: powering up 40800000.dsp [ 11.858744] remoteproc remoteproc2: Direct firmware load for dra7-dsp1-fw.xe66 failed with error -2 [ 11.956630] remoteproc remoteproc2: request_firmware failed: -2 [ 12.623950] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2 [ 12.670284] omap-des 480a5000.des: will run requests pump with realtime priority [ 13.531420] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin [ 13.605303] vpe 489d0000.vpe: Device registered as /dev/video0 [ OK ] Started udev Coldplug all Devices. [ OK ] Reached target System Initialization. [ OK ] Listening on D-Bus System Message Bus Socket. [ 13.857351] remoteproc remoteproc1: powering up 55020000.ipu [ 13.873975] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3743076 [ 13.938142] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1 Starting Network Service... [ OK ] Started Daily rotation of log files. [ OK ] Started Daily Cleanup of Temporary Directories. [ OK ] Reached target Timers. [ OK ] Listening on RPCbind Server Activation Socket. [ 14.356135] virtio_rpmsg_bus virtio0: rpmsg host is online [ 14.399976] remoteproc remoteproc1: registered virtio0 (type 7) [ 14.455899] remoteproc remoteproc1: remote processor 55020000.ipu is now up [ 14.509172] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65 [ 14.541580] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x66 [ 14.659209] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3 [ OK ] Listening on dropbear.socket. [ OK ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. [ 14.861239] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec [ 14.906049] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3 [ 14.950171] omap-aes 4b500000.aes: will run requests pump with realtime priority Starting Print notice about GPLv3 packages... [ 15.110223] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3 [ 15.160259] omap-aes 4b700000.aes: will run requests pump with realtime priority [ OK ] Started Hardware RNG Entropy Gatherer Daemon. [ OK ] Started Kernel Logging Service. [ OK ] Reached target Containers. Starting Login Service... Starting RPC Bind Service... Starting TI MultiCore Tools Daemon... Starting uim-sysfs.service... [ OK ] Started Job spooling tools. [ OK ] Started D-Bus System Message Bus. [ OK ] Started Periodic Command Scheduler. [ OK ] Started System Logging Service. Starting Avahi mDNS/DNS-SD Stack... [ OK ] Started Network Service. [ OK ] Started RPC Bind Service. [FAILED] Failed to start TI MultiCore Tools Daemon. See 'systemctl status ti-mct-daemon.service' for details. [ 20.376084] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. [ 20.379998] EXT4-fs (mmcblk0p2): mounting ext3 file system using the ext4 subsystem [ 20.482845] EXT4-fs (mmcblk0p2): recovery complete [ 20.482878] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 26.696771] rpmsg_rpc virtio0.rpmsg-rpc.-1.101: probing service dce-callback with src 1024 dst 101 [ 26.734045] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1 [ 26.764075] rpmsg_rpc virtio0.rpmsg-rpc.-1.102: probing service rpmsg-dce with src 1025 dst 102 [ 26.789436] rpmsg_rpc virtio0.rpmsg-rpc.-1.101: published functions = 4 [ 26.824944] rpmsg_rpc virtio0.rpmsg-rpc.-1.102: published functions = 9 [ OK ] Started uim-sysfs.service. *************************************************************** *************************************************************** NOTICE: This file system contains the following GPLv3 packages: autoconf bash-dev bash binutils-dev binutils bison-dev bison cifs-utils cpio cpp-symlinks cpp dosfstools elfutils-dev elfutils findutils g++-symlinks g++ gawk gcc-symlinks gcc gdb gdbc6x gdbserver gettext gstreamer1.0-libav gzip hidapi libasm1 libcairo-perf-utils libdw1 libelf1 libgdbm-compat4 libgdbm-dev libgdbm4 libgettextlib libgettextsrc libgmp10 libidn11 libmavconn libmpc3 libmpfr4 libreadline-dev libreadline7 libunistring2 m4-dev m4 make mavlink mavros-extras mavros-msgs mavros nettle parted python3-pycairo socketcan-interface swig-dev swig which If you do not wish to distribute GPLv3 components please remove the above packages prior to distribution. This can be done using the opkg remove command. i.e.: opkg remove <package> Where <package> is the name printed in the list above NOTE: If the package is a dependency of another package you will be notified of the dependent packages. You should use the --force-removal-of-dependent-packages option to also remove the dependent packages as well *************************************************************** *************************************************************** [ OK ] Started Print notice about GPLv3 packages. [ OK ] Started Avahi mDNS/DNS-SD Stack. [ OK ] Started Login Service. Starting rc.pvr.service... [ OK ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch. [ OK ] Reached target Network. Starting Enable and configure wl18xx bluetooth stack... Starting Simple Network Management Protocol (SNMP) Daemon.... [ OK ] Started Redis In-Memory Data Store. Starting Permit User Sessions... Starting Network Name Resolution... Starting Lightning Fast Webserver With Light System Requirements... Starting Wait for Network to be Configured... [ OK ] Started rc.pvr.service. [ OK ] Started Permit User Sessions. [ OK ] Started Enable and configure wl18xx bluetooth stack. [ OK ] Started Lightning Fast Webserver With Light System Requirements. [ OK ] Started Wait for Network to be Configured. [ OK ] Started Getty on tty1. [ OK ] Started Serial Getty on ttyS2. [ OK ] Reached target Login Prompts. Starting Synchronize System and HW clocks... Starting weston.service... [ OK ] Started Network Name Resolution. [FAILED] Failed to start Synchronize System and HW clocks. See 'systemctl status sync-clocks.service' for details. [ OK ] Started weston.service. [ OK ] Started Simple Network Management Protocol (SNMP) Daemon.. Starting tiipclad-daemon.service... Starting telnetd.service... [ OK ] Reached target Network is Online. [ OK ] Started strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf. [ OK ] Reached target Host and Network Name Lookups. [ OK ] Started NFS status monitor for NFSv2/3 locking.. [ OK ] Started telnetd.service. [ OK ] Started tiipclad-daemon.service. Starting thttpd.service... [ OK ] Started thttpd.service. [ 36.505297] NET: Registered protocol family 15 Starting rng-tools.service... [ OK ] Started rng-tools.service. Starting LSB: Redis, a key-value store... [ 36.869966] Initializing XFRM netlink socket [ OK ] Started LSB: Redis, a key-value store. Starting gdbserverproxy.service... [ OK ] Started gdbserverproxy.service. Starting matrix-gui-2.0.service... [ OK ] Started matrix-gui-2.0.service. Starting thermal-zone-init.service... [ OK ] Started thermal-zone-init.service. [ OK ] Reached target Multi-User System. Starting Update UTMP about System Runlevel Changes... [ OK ] Started Update UTMP about System Runlevel Changes. _____ _____ _ _ | _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_ | | _| .'| . | . | | __| _| . | | | -_| _| _| |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_| |___| |___| Arago Project http://arago-project.org am57xx-evm ttyS2 Arago 2018.04 am57xx-evm ttyS2 am57xx-evm login: root root@am57xx-evm:~#
CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_BLK_DEV_INITRD=y CONFIG_PERF_EVENTS=y CONFIG_PARTITION_ADVANCED=y CONFIG_CMDLINE_PARTITION=y # CONFIG_ARCH_MULTI_V5 is not set # CONFIG_ARCH_MULTI_V4 is not set CONFIG_MACH_ARTPEC6=y CONFIG_MACH_ARMADA_370=y CONFIG_MACH_ARMADA_375=y CONFIG_MACH_ARMADA_38X=y CONFIG_MACH_ARMADA_39X=y CONFIG_MACH_ARMADA_XP=y CONFIG_MACH_DOVE=y CONFIG_SOC_SAMA5D2=y CONFIG_SOC_SAMA5D3=y CONFIG_SOC_SAMA5D4=y CONFIG_ARCH_BCM2835=y CONFIG_ARCH_BCM_63XX=y CONFIG_MACH_BERLIN_BG2=y CONFIG_MACH_BERLIN_BG2CD=y CONFIG_MACH_BERLIN_BG2Q=y CONFIG_SOC_IMX50=y CONFIG_SOC_IMX51=y CONFIG_SOC_IMX53=y CONFIG_SOC_IMX6Q=y CONFIG_SOC_IMX6SL=y CONFIG_SOC_IMX6SX=y CONFIG_SOC_IMX6UL=y CONFIG_SOC_IMX7D=y CONFIG_SOC_VF610=y CONFIG_SOC_LS1021A=y CONFIG_MACH_SPEAR1310=y CONFIG_MACH_SPEAR1340=y CONFIG_EXYNOS5420_MCPM=y CONFIG_ARCH_R8A7743=y CONFIG_ARCH_R8A7745=y CONFIG_ARCH_R8A7792=y CONFIG_MACH_HREFV60=y CONFIG_MACH_SNOWBALL=y CONFIG_TRUSTED_FOUNDATIONS=y CONFIG_PCI_HOST_GENERIC=y CONFIG_PCI_KEYSTONE=y CONFIG_PCI_MSI=y CONFIG_PCI_MVEBU=y CONFIG_PCI_TEGRA=y CONFIG_PCI_RCAR_GEN2=y CONFIG_PCIE_RCAR=y CONFIG_PCIEPORTBUS=y CONFIG_HIGHPTE=y CONFIG_CMA=y CONFIG_EFI=y CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y CONFIG_ARM_IMX6Q_CPUFREQ=y CONFIG_ARM_ZYNQ_CPUIDLE=y CONFIG_ARM_EXYNOS_CPUIDLE=y CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y CONFIG_IPV6_ROUTER_PREF=y CONFIG_IPV6_OPTIMISTIC_DAD=y CONFIG_INET6_ESP=m CONFIG_IPV6_MIP6=m CONFIG_IPV6_MULTIPLE_TABLES=y CONFIG_NET_DSA=m CONFIG_NET_SWITCHDEV=y CONFIG_CAN_RAW=y CONFIG_CAN_BCM=y CONFIG_CAN_DEV=y CONFIG_CAN_AT91=m CONFIG_CAN_RCAR=m CONFIG_CAN_XILINXCAN=y CONFIG_CAN_MCP251X=y CONFIG_B53_SPI_DRIVER=m CONFIG_B53_MDIO_DRIVER=m CONFIG_B53_MMAP_DRIVER=m CONFIG_B53_SRAB_DRIVER=m CONFIG_CAN_SUN4I=y CONFIG_BT=m CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m CONFIG_CFG80211=m CONFIG_MAC80211=m CONFIG_RFKILL=y CONFIG_RFKILL_INPUT=y CONFIG_RFKILL_GPIO=y CONFIG_DMA_CMA=y CONFIG_OMAP_OCP2SCP=y CONFIG_SIMPLE_PM_BUS=y CONFIG_SUNXI_RSB=y CONFIG_MTD=y CONFIG_MTD_BLOCK=y CONFIG_MTD_M25P80=y CONFIG_MTD_NAND=y CONFIG_MTD_NAND_DENALI_DT=y CONFIG_MTD_NAND_ATMEL=y CONFIG_MTD_NAND_BRCMNAND=y CONFIG_MTD_NAND_VF610_NFC=y CONFIG_MTD_NAND_DAVINCI=y CONFIG_MTD_SPI_NOR=y CONFIG_SPI_FSL_QUADSPI=m CONFIG_MTD_UBI=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=65536 CONFIG_VIRTIO_BLK=y CONFIG_AD525X_DPOT=y CONFIG_AD525X_DPOT_I2C=y CONFIG_ATMEL_TCLIB=y CONFIG_ICS932S401=y CONFIG_ATMEL_SSC=m CONFIG_QCOM_COINCELL=m CONFIG_APDS9802ALS=y CONFIG_ISL29003=y CONFIG_EEPROM_AT24=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=y CONFIG_SCSI_MULTI_LUN=y CONFIG_AHCI_BRCM=y CONFIG_AHCI_DM816=y CONFIG_AHCI_ST=y CONFIG_AHCI_IMX=y CONFIG_AHCI_SUNXI=y CONFIG_AHCI_TEGRA=y CONFIG_SATA_HIGHBANK=y CONFIG_SATA_MV=y CONFIG_SATA_RCAR=y CONFIG_NETDEVICES=y CONFIG_VIRTIO_NET=y CONFIG_HIX5HD2_GMAC=y CONFIG_SUN4I_EMAC=y CONFIG_MACB=y CONFIG_BGMAC_BCMA=y CONFIG_NET_CALXEDA_XGMAC=y CONFIG_GIANFAR=y CONFIG_MV643XX_ETH=y CONFIG_MVNETA=y CONFIG_PXA168_ETH=m CONFIG_KS8851=y CONFIG_R8169=y CONFIG_SH_ETH=y CONFIG_SMSC911X=y CONFIG_STMMAC_ETH=y CONFIG_STMMAC_PLATFORM=y CONFIG_DWMAC_DWC_QOS_ETH=y CONFIG_XILINX_EMACLITE=y CONFIG_AT803X_PHY=y CONFIG_SMSC_PHY=y CONFIG_REALTEK_PHY=y CONFIG_FIXED_PHY=y CONFIG_ROCKCHIP_PHY=y CONFIG_USB_SUPPORT=y CONFIG_USB=m CONFIG_USB_PEGASUS=y CONFIG_USB_RTL8152=m CONFIG_USB_NET_SMSC75XX=y CONFIG_BRCMFMAC=m CONFIG_RT2X00=m CONFIG_RT2800USB=m CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y CONFIG_KEYBOARD_QT1070=m CONFIG_KEYBOARD_GPIO=y CONFIG_KEYBOARD_TEGRA=y CONFIG_KEYBOARD_SPEAR=y CONFIG_KEYBOARD_ST_KEYSCAN=y CONFIG_KEYBOARD_CROS_EC=m CONFIG_KEYBOARD_SAMSUNG=m CONFIG_MOUSE_PS2_ELANTECH=y CONFIG_MOUSE_CYAPA=m CONFIG_MOUSE_ELAN_I2C=y CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_ATMEL_MXT=m CONFIG_TOUCHSCREEN_MMS114=m CONFIG_TOUCHSCREEN_ST1232=m CONFIG_TOUCHSCREEN_STMPE=y CONFIG_TOUCHSCREEN_SUN4I=y CONFIG_TOUCHSCREEN_WM97XX=m CONFIG_INPUT_MISC=y CONFIG_INPUT_MAX77693_HAPTIC=m CONFIG_INPUT_MAX8997_HAPTIC=m CONFIG_INPUT_AXP20X_PEK=m CONFIG_INPUT_ADXL34X=m CONFIG_SERIO_AMBAKMI=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_MT6577=y CONFIG_SERIAL_8250_UNIPHIER=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y CONFIG_SERIAL_ATMEL=y CONFIG_SERIAL_ATMEL_CONSOLE=y CONFIG_SERIAL_ATMEL_TTYAT=y CONFIG_SERIAL_BCM63XX=y CONFIG_SERIAL_BCM63XX_CONSOLE=y CONFIG_SERIAL_MESON=y CONFIG_SERIAL_MESON_CONSOLE=y CONFIG_SERIAL_SAMSUNG=y CONFIG_SERIAL_SAMSUNG_CONSOLE=y CONFIG_SERIAL_SIRFSOC=y CONFIG_SERIAL_SIRFSOC_CONSOLE=y CONFIG_SERIAL_TEGRA=y CONFIG_SERIAL_IMX=y CONFIG_SERIAL_IMX_CONSOLE=y CONFIG_SERIAL_SH_SCI=y CONFIG_SERIAL_SH_SCI_NR_UARTS=20 CONFIG_SERIAL_SH_SCI_CONSOLE=y CONFIG_SERIAL_SH_SCI_DMA=y CONFIG_SERIAL_MSM=y CONFIG_SERIAL_MSM_CONSOLE=y CONFIG_SERIAL_VT8500=y CONFIG_SERIAL_VT8500_CONSOLE=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_OMAP_CONSOLE=y CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y CONFIG_SERIAL_FSL_LPUART_CONSOLE=y CONFIG_SERIAL_CONEXANT_DIGICOLOR_CONSOLE=y CONFIG_SERIAL_ST_ASC_CONSOLE=y CONFIG_HVC_DRIVER=y CONFIG_VIRTIO_CONSOLE=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_DAVINCI=y CONFIG_I2C_ARB_GPIO_CHALLENGE=m CONFIG_I2C_MUX_PCA954x=y CONFIG_I2C_MUX_PINCTRL=y CONFIG_I2C_DEMUX_PINCTRL=y CONFIG_I2C_AT91=m CONFIG_I2C_BCM2835=y CONFIG_I2C_CADENCE=y CONFIG_I2C_DIGICOLOR=m CONFIG_I2C_EMEV2=m CONFIG_I2C_EXYNOS5=y CONFIG_I2C_IMX=m CONFIG_I2C_MV64XXX=y CONFIG_I2C_RIIC=y CONFIG_I2C_S3C2410=y CONFIG_I2C_SH_MOBILE=y CONFIG_I2C_SIRF=y CONFIG_I2C_ST=y CONFIG_I2C_SUN6I_P2WI=y CONFIG_I2C_TEGRA=y CONFIG_I2C_UNIPHIER=y CONFIG_I2C_UNIPHIER_F=y CONFIG_I2C_RCAR=y CONFIG_I2C_CROS_EC_TUNNEL=m CONFIG_I2C_SLAVE_EEPROM=y CONFIG_SPI=y CONFIG_SPI_ATMEL=m CONFIG_SPI_BCM2835=y CONFIG_SPI_BCM2835AUX=y CONFIG_SPI_DAVINCI=y CONFIG_SPI_GPIO=m CONFIG_SPI_FSL_DSPI=m CONFIG_SPI_OMAP24XX=y CONFIG_SPI_ORION=y CONFIG_SPI_PL022=y CONFIG_SPI_RSPI=y CONFIG_SPI_S3C64XX=m CONFIG_SPI_SH_MSIOF=m CONFIG_SPI_SH_HSPI=y CONFIG_SPI_SIRF=y CONFIG_SPI_SUN4I=y CONFIG_SPI_SUN6I=y CONFIG_SPI_TEGRA114=y CONFIG_SPI_TEGRA20_SFLASH=y CONFIG_SPI_TEGRA20_SLINK=y CONFIG_SPMI=y CONFIG_PINCTRL_AS3722=y CONFIG_PINCTRL_PALMAS=y CONFIG_PINCTRL_BCM2835=y CONFIG_PINCTRL_APQ8064=y CONFIG_PINCTRL_APQ8084=y CONFIG_PINCTRL_IPQ8064=y CONFIG_PINCTRL_MSM8660=y CONFIG_PINCTRL_MSM8960=y CONFIG_PINCTRL_MSM8X74=y CONFIG_PINCTRL_MSM8916=y CONFIG_PINCTRL_QCOM_SPMI_PMIC=y CONFIG_PINCTRL_QCOM_SSBI_PMIC=y CONFIG_GPIO_DAVINCI=y CONFIG_GPIO_RCAR=y CONFIG_GPIO_ZYNQ=y CONFIG_GPIO_PCA953X_IRQ=y CONFIG_GPIO_TWL4030=y CONFIG_GPIO_PALMAS=y CONFIG_GPIO_SYSCON=y CONFIG_GPIO_TPS65910=y CONFIG_BATTERY_ACT8945A=y CONFIG_BATTERY_SBS=y CONFIG_BATTERY_MAX17040=m CONFIG_BATTERY_MAX17042=m CONFIG_CHARGER_MAX14577=m CONFIG_CHARGER_MAX77693=m CONFIG_CHARGER_MAX8997=m CONFIG_CHARGER_MAX8998=m CONFIG_CHARGER_TPS65090=y CONFIG_AXP20X_POWER=m CONFIG_POWER_RESET_AS3722=y CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_KEYSTONE=y CONFIG_POWER_RESET_RMOBILE=y CONFIG_POWER_RESET_ST=y CONFIG_POWER_AVS=y CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_SENSORS_IIO_HWMON=y CONFIG_SENSORS_LM90=y CONFIG_SENSORS_LM95245=y CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_PWM_FAN=m CONFIG_SENSORS_INA2XX=m CONFIG_BRCMSTB_THERMAL=m CONFIG_ROCKCHIP_THERMAL=y CONFIG_RCAR_THERMAL=y CONFIG_ARMADA_THERMAL=y CONFIG_DAVINCI_WATCHDOG=m CONFIG_EXYNOS_THERMAL=m CONFIG_ST_THERMAL_MEMMAP=y CONFIG_DA9063_WATCHDOG=m CONFIG_ARM_SP805_WATCHDOG=y CONFIG_AT91SAM9X_WATCHDOG=y CONFIG_SAMA5D4_WATCHDOG=y CONFIG_ORION_WATCHDOG=y CONFIG_ST_LPC_WATCHDOG=y CONFIG_SUNXI_WATCHDOG=y CONFIG_IMX2_WDT=y CONFIG_TEGRA_WATCHDOG=m CONFIG_MESON_WATCHDOG=y CONFIG_DIGICOLOR_WATCHDOG=y CONFIG_BCM2835_WDT=y CONFIG_BCM47XX_WDT=y CONFIG_BCM_KONA_WDT=y CONFIG_MFD_ACT8945A=y CONFIG_MFD_AC100=y CONFIG_MFD_AXP20X_RSB=y CONFIG_MFD_QCOM_RPM=y CONFIG_MFD_SPMI_PMIC=y CONFIG_REGULATOR_ACT8945A=y CONFIG_REGULATOR_AB8500=y CONFIG_POWER_RESET_SYSCON=y CONFIG_REGULATOR_MAX8997=m CONFIG_REGULATOR_MAX8998=m CONFIG_REGULATOR_QCOM_RPM=y CONFIG_REGULATOR_QCOM_SMD_RPM=y CONFIG_REGULATOR_WM8994=m CONFIG_USB_GSPCA=y CONFIG_SOC_CAMERA=m CONFIG_SOC_CAMERA_PLATFORM=m CONFIG_VIDEO_RCAR_VIN=m CONFIG_VIDEO_ATMEL_ISI=m CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS=m CONFIG_VIDEO_S5P_FIMC=m CONFIG_VIDEO_S5P_MIPI_CSIS=m CONFIG_VIDEO_EXYNOS_FIMC_LITE=m CONFIG_VIDEO_EXYNOS4_FIMC_IS=m CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m CONFIG_VIDEO_SAMSUNG_S5P_MFC=m CONFIG_VIDEO_SAMSUNG_EXYNOS_GSC=m CONFIG_VIDEO_STI_BDISP=m CONFIG_VIDEO_STI_HVA=m CONFIG_VIDEO_STI_DELTA=m CONFIG_VIDEO_RENESAS_JPU=m CONFIG_VIDEO_RENESAS_VSP1=m CONFIG_V4L_TEST_DRIVERS=y CONFIG_VIDEO_ADV7180=m CONFIG_VIDEO_ML86V7667=m CONFIG_DRM_I2C_ADV7511_AUDIO=y # CONFIG_DRM_I2C_CH7006 is not set # CONFIG_DRM_I2C_SIL164 is not set CONFIG_DRM_DUMB_VGA_DAC=m CONFIG_DRM_EXYNOS_FIMD=y CONFIG_DRM_EXYNOS_MIXER=y CONFIG_DRM_EXYNOS_DPI=y CONFIG_DRM_EXYNOS_DSI=y CONFIG_DRM_EXYNOS_HDMI=y CONFIG_DRM_ROCKCHIP=m CONFIG_ROCKCHIP_ANALOGIX_DP=y CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y CONFIG_ROCKCHIP_INNO_HDMI=y CONFIG_DRM_ATMEL_HLCDC=m CONFIG_DRM_RCAR_DU=m CONFIG_DRM_RCAR_LVDS=y CONFIG_DRM_SUN4I=m CONFIG_DRM_TEGRA=y CONFIG_DRM_PANEL_SAMSUNG_LD9040=m CONFIG_DRM_VC4=y CONFIG_FB_ARMCLCD=y CONFIG_FB_EFI=y CONFIG_FB_WM8505=y CONFIG_FB_SH_MOBILE_LCDC=y CONFIG_FB_SIMPLE=y CONFIG_FB_SH_MOBILE_MERAM=y CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_LCD_PLATFORM=m CONFIG_BACKLIGHT_AS3711=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_HDA_TEGRA=m CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_PATCH_LOADER=y CONFIG_SND_HDA_CODEC_REALTEK=m CONFIG_SND_HDA_CODEC_HDMI=m CONFIG_SND_USB_AUDIO=m CONFIG_SND_ATMEL_SOC_WM8904=m CONFIG_SND_ATMEL_SOC_PDMIC=m CONFIG_SND_BCM2835_SOC_I2S=m CONFIG_SND_SOC_ROCKCHIP=m CONFIG_SND_SOC_ROCKCHIP_SPDIF=m CONFIG_SND_SOC_ROCKCHIP_MAX98090=m CONFIG_SND_SOC_ROCKCHIP_RT5645=m CONFIG_SND_SOC_SAMSUNG=m CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=m CONFIG_SND_SOC_SMDK_WM8994_PCM=m CONFIG_SND_SOC_SNOW=m CONFIG_SND_SOC_SH4_FSI=m CONFIG_SND_SOC_RCAR=m CONFIG_SND_SIMPLE_SCU_CARD=m CONFIG_SND_SUN4I_CODEC=m CONFIG_SND_SOC_TEGRA=m CONFIG_SND_SOC_TEGRA20_I2S=m CONFIG_SND_SOC_TEGRA30_I2S=m CONFIG_SND_SOC_TEGRA_RT5640=m CONFIG_SND_SOC_TEGRA_WM8753=m CONFIG_SND_SOC_TEGRA_WM8903=m CONFIG_SND_SOC_TEGRA_WM9712=m CONFIG_SND_SOC_TEGRA_TRIMSLICE=m CONFIG_SND_SOC_TEGRA_ALC5632=m CONFIG_SND_SOC_TEGRA_MAX98090=m CONFIG_SND_SOC_SPDIF=m CONFIG_SND_SOC_STI=m CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_MVEBU=y CONFIG_USB_XHCI_RCAR=m CONFIG_USB_XHCI_TEGRA=m CONFIG_USB_XHCI_PLATFORM=m CONFIG_USB_EHCI_MSM=m CONFIG_USB_EHCI_EXYNOS=y CONFIG_USB_EHCI_TEGRA=y CONFIG_USB_EHCI_HCD_STI=y CONFIG_USB_EHCI_HCD_PLATFORM=y CONFIG_USB_ISP1760=y CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_HCD_STI=y CONFIG_USB_OHCI_HCD_PLATFORM=y CONFIG_USB_OHCI_EXYNOS=m CONFIG_USB_R8A66597_HCD=m CONFIG_USB_RENESAS_USBHS=m CONFIG_USB_STORAGE=y CONFIG_USB_MUSB_SUNXI=m CONFIG_USB_CHIPIDEA_UDC=y CONFIG_USB_CHIPIDEA_HOST=y CONFIG_AB8500_USB=y CONFIG_KEYSTONE_USB_PHY=y CONFIG_USB_GPIO_VBUS=y CONFIG_USB_ISP1301=y CONFIG_USB_MSM_OTG=m CONFIG_USB_MXS_PHY=y CONFIG_USB_FSL_USB2=y CONFIG_USB_RENESAS_USBHS_UDC=m CONFIG_MMC_BLOCK_MINORS=16 CONFIG_MMC_ARMMMCI=y CONFIG_MMC_SDHCI_OF_ARASAN=y CONFIG_MMC_SDHCI_OF_AT91=y CONFIG_MMC_SDHCI_OF_ESDHC=y CONFIG_MMC_SDHCI_ESDHC_IMX=y CONFIG_MMC_SDHCI_DOVE=y CONFIG_MMC_SDHCI_TEGRA=y CONFIG_MMC_SDHCI_PXAV3=y CONFIG_MMC_SDHCI_SPEAR=y CONFIG_MMC_SDHCI_S3C=y CONFIG_MMC_SDHCI_S3C_DMA=y CONFIG_MMC_SDHCI_BCM_KONA=y CONFIG_MMC_SDHCI_ST=y CONFIG_MMC_OMAP=y CONFIG_MMC_ATMELMCI=y CONFIG_MMC_SDHCI_MSM=y CONFIG_MMC_MVSDIO=y CONFIG_MMC_SDHI=y CONFIG_MMC_DW_PLTFM=y CONFIG_MMC_DW_EXYNOS=y CONFIG_MMC_DW_ROCKCHIP=y CONFIG_MMC_SH_MMCIF=y CONFIG_MMC_SUNXI=y CONFIG_MMC_BCM2835=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS_FLASH=m CONFIG_LEDS_GPIO=y CONFIG_LEDS_PWM=y CONFIG_LEDS_MAX77693=m CONFIG_LEDS_MAX8997=m CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_ONESHOT=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_LEDS_TRIGGER_TRANSIENT=y CONFIG_LEDS_TRIGGER_CAMERA=y CONFIG_EDAC_HIGHBANK_MC=y CONFIG_EDAC_HIGHBANK_L2=y CONFIG_RTC_CLASS=y CONFIG_RTC_DRV_AC100=y CONFIG_RTC_DRV_AS3722=y CONFIG_RTC_DRV_MAX8907=y CONFIG_RTC_DRV_MAX8998=m CONFIG_RTC_DRV_MAX8997=m CONFIG_RTC_DRV_MAX77686=y CONFIG_RTC_DRV_RK808=m CONFIG_RTC_DRV_ST_LPC=y CONFIG_RTC_DRV_DA9063=m CONFIG_RTC_DRV_EFI=m CONFIG_RTC_DRV_DIGICOLOR=m CONFIG_RTC_DRV_S5M=m CONFIG_RTC_DRV_S3C=m CONFIG_RTC_DRV_PL031=y CONFIG_RTC_DRV_AT91RM9200=m CONFIG_RTC_DRV_AT91SAM9=m CONFIG_RTC_DRV_VT8500=y CONFIG_RTC_DRV_SUN6I=y CONFIG_RTC_DRV_SUNXI=y CONFIG_RTC_DRV_MV=y CONFIG_RTC_DRV_TEGRA=y CONFIG_DMADEVICES=y CONFIG_DW_DMAC=y CONFIG_AT_HDMAC=y CONFIG_AT_XDMAC=y CONFIG_FSL_EDMA=y CONFIG_MV_XOR=y CONFIG_TEGRA20_APB_DMA=y CONFIG_SH_DMAE=y CONFIG_RCAR_DMAC=y CONFIG_RENESAS_USB_DMAC=m CONFIG_STE_DMA40=y CONFIG_SIRF_DMA=y CONFIG_TI_EDMA=y CONFIG_PL330_DMA=y CONFIG_IMX_SDMA=y CONFIG_IMX_DMA=y CONFIG_MXS_DMA=y CONFIG_DMA_BCM2835=y CONFIG_DMA_OMAP=y CONFIG_QCOM_BAM_DMA=y CONFIG_XILINX_DMA=y CONFIG_DMA_SUN6I=y CONFIG_ST_FDMA=m CONFIG_SENSORS_ISL29018=y CONFIG_SENSORS_ISL29028=y CONFIG_MFD_NVEC=y CONFIG_KEYBOARD_NVEC=y CONFIG_SERIO_NVEC_PS2=y CONFIG_NVEC_POWER=y CONFIG_NVEC_PAZ00=y CONFIG_BCMA=y CONFIG_BCMA_HOST_SOC=y CONFIG_BCMA_DRIVER_GMAC_CMN=y CONFIG_BCMA_DRIVER_GPIO=y CONFIG_QCOM_GSBI=y CONFIG_QCOM_PM=y CONFIG_QCOM_SMEM=y CONFIG_QCOM_SMD_RPM=y CONFIG_QCOM_SMP2P=y CONFIG_QCOM_SMSM=y CONFIG_QCOM_WCNSS_CTRL=m CONFIG_ROCKCHIP_PM_DOMAINS=y CONFIG_COMMON_CLK_QCOM=y CONFIG_QCOM_CLK_RPM=y CONFIG_STAGING_BOARD=y CONFIG_CROS_EC_CHARDEV=m CONFIG_COMMON_CLK_MAX77686=y CONFIG_COMMON_CLK_RK808=m CONFIG_COMMON_CLK_S2MPS11=m CONFIG_APQ_MMCC_8084=y CONFIG_MSM_GCC_8660=y CONFIG_MSM_MMCC_8960=y CONFIG_MSM_MMCC_8974=y CONFIG_HWSPINLOCK_QCOM=y CONFIG_ROCKCHIP_IOMMU=y CONFIG_TEGRA_IOMMU_GART=y CONFIG_TEGRA_IOMMU_SMMU=y CONFIG_ST_REMOTEPROC=m CONFIG_ARM_TEGRA_DEVFREQ=m CONFIG_MEMORY=y CONFIG_TI_AEMIF=y CONFIG_IIO=y CONFIG_IIO_SW_TRIGGER=y CONFIG_AT91_ADC=m CONFIG_AT91_SAMA5D2_ADC=m CONFIG_BERLIN2_ADC=m CONFIG_EXYNOS_ADC=m CONFIG_VF610_ADC=m CONFIG_XILINX_XADC=y CONFIG_MPU3050_I2C=y CONFIG_CM36651=m CONFIG_AK8975=y CONFIG_RASPBERRYPI_POWER=y CONFIG_IIO_HRTIMER_TRIGGER=y CONFIG_PWM=y CONFIG_PWM_ATMEL=m CONFIG_PWM_ATMEL_HLCDC_PWM=m CONFIG_PWM_ATMEL_TCB=m CONFIG_PWM_FSL_FTM=m CONFIG_PWM_RENESAS_TPU=y CONFIG_PWM_ROCKCHIP=m CONFIG_PWM_SAMSUNG=m CONFIG_PWM_SUN4I=y CONFIG_PWM_TEGRA=y CONFIG_PWM_VT8500=y CONFIG_PHY_HIX5HD2_SATA=y CONFIG_PWM_STI=y CONFIG_PWM_BCM2835=y CONFIG_PWM_BRCMSTB=m CONFIG_GENERIC_PHY=y CONFIG_OMAP_USB2=y CONFIG_TI_PIPE3=y CONFIG_PHY_BERLIN_USB=y CONFIG_PHY_BERLIN_SATA=y CONFIG_PHY_ROCKCHIP_DP=m CONFIG_PHY_ROCKCHIP_USB=y CONFIG_PHY_QCOM_APQ8064_SATA=m CONFIG_PHY_MIPHY28LP=y CONFIG_PHY_RCAR_GEN2=m CONFIG_PHY_STIH407_USB=y CONFIG_PHY_SUN4I_USB=y CONFIG_PHY_SUN9I_USB=y CONFIG_PHY_SAMSUNG_USB2=m CONFIG_PHY_TEGRA_XUSB=y CONFIG_PHY_BRCM_SATA=y CONFIG_NVMEM=y CONFIG_NVMEM_SUNXI_SID=y CONFIG_BCM2835_MBOX=y CONFIG_RASPBERRYPI_FIRMWARE=y CONFIG_EFI_VARS=m CONFIG_EFI_CAPSULE_LOADER=m CONFIG_BCM47XX_NVRAM=y CONFIG_BCM47XX_SPROM=y CONFIG_EXT4_FS=y CONFIG_AUTOFS4_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_NTFS_FS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_UBIFS_FS=y CONFIG_TMPFS=y CONFIG_SQUASHFS=y CONFIG_SQUASHFS_LZO=y CONFIG_SQUASHFS_XZ=y CONFIG_PSTORE=y CONFIG_PSTORE_CONSOLE=y CONFIG_PSTORE_PMSG=y CONFIG_PSTORE_RAM=y CONFIG_NFS_FS=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_ROOT_NFS=y CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ISO8859_1=y CONFIG_NLS_UTF8=y CONFIG_PRINTK_TIME=y CONFIG_MAGIC_SYSRQ=y CONFIG_KEYSTONE_IRQ=y CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_ST=y CONFIG_CRYPTO_USER=m CONFIG_CRYPTO_USER_API_RNG=m CONFIG_CRYPTO_USER_API_AEAD=m CONFIG_CRYPTO_DEV_MARVELL_CESA=m CONFIG_CRYPTO_DEV_EXYNOS_RNG=m CONFIG_CRYPTO_DEV_S5P=m CONFIG_CRYPTO_DEV_SUN4I_SS=m CONFIG_CRYPTO_DEV_ROCKCHIP=m CONFIG_ARM_CRYPTO=y CONFIG_CRYPTO_SHA1_ARM=m CONFIG_CRYPTO_SHA1_ARM_CE=m CONFIG_CRYPTO_SHA2_ARM_CE=m CONFIG_CRYPTO_AES_ARM=m CONFIG_CRYPTO_AES_ARM_CE=m CONFIG_CRYPTO_CHACHA20_NEON=m CONFIG_CRYPTO_CRC32_ARM_CE=m CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m CONFIG_CRYPTO_GHASH_ARM_CE=m CONFIG_CRYPTO_DEV_ATMEL_AES=m CONFIG_CRYPTO_DEV_ATMEL_TDES=m CONFIG_CRYPTO_DEV_ATMEL_SHA=m CONFIG_VIDEO_VIVID=m CONFIG_VIRTIO=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_VIRTIO_MMIO=y # Add config flags here that only appear in the multi_v7_defconfig CONFIG_ARCH_ALPINE=n CONFIG_ARCH_ARTPEC=n CONFIG_ARCH_AT91=n CONFIG_ARCH_BCM=n CONFIG_ARCH_BCM_CYGNUS=n CONFIG_ARCH_BCM_NSP=n CONFIG_ARCH_BCM_5301X=n CONFIG_ARCH_BCM_281XX=n CONFIG_ARCH_BCM_21664=n CONFIG_ARCH_BRCMSTB=n CONFIG_ARCH_BERLIN=n CONFIG_ARCH_DIGICOLOR=n CONFIG_ARCH_HIGHBANK=n CONFIG_ARCH_HISI=n CONFIG_ARCH_HI3xxx=n CONFIG_ARCH_HIP01=n CONFIG_ARCH_HIP04=n CONFIG_ARCH_HIX5HD2=n CONFIG_ARCH_MESON=n CONFIG_ARCH_MXC=n CONFIG_ARCH_MEDIATEK=n CONFIG_ARCH_QCOM=n CONFIG_ARCH_MSM8X60=n CONFIG_ARCH_MSM8960=n CONFIG_ARCH_MSM8974=n CONFIG_ARCH_ROCKCHIP=n CONFIG_ARCH_SOCFPGA=n CONFIG_ARCH_SPEAR13XX=n CONFIG_ARCH_STI=n CONFIG_ARCH_EXYNOS=n CONFIG_ARCH_SHMOBILE_MULTI=n CONFIG_ARCH_EMEV2=n CONFIG_ARCH_R7S72100=n CONFIG_ARCH_R8A73A4=n CONFIG_ARCH_R8A7740=n CONFIG_ARCH_R8A7778=n CONFIG_ARCH_R8A7779=n CONFIG_ARCH_R8A7790=n CONFIG_ARCH_R8A7791=n CONFIG_ARCH_R8A7793=n CONFIG_ARCH_R8A7794=n CONFIG_ARCH_RENESAS=n CONFIG_ARCH_SH73A0=n CONFIG_ARCH_SUNXI=n CONFIG_ARCH_SIRF=n CONFIG_ARCH_TEGRA=n CONFIG_ARCH_TEGRA_2x_SOC=n CONFIG_ARCH_TEGRA_3x_SOC=n CONFIG_ARCH_TEGRA_114_SOC=n CONFIG_ARCH_TEGRA_124_SOC=n CONFIG_ARCH_UNIPHIER=n CONFIG_ARCH_U8500=n CONFIG_ARCH_VEXPRESS=n CONFIG_ARCH_VEXPRESS_TC2_PM=n CONFIG_ARCH_WM8850=n CONFIG_ARCH_ZYNQ=n CONFIG_ARCH_VIRT=n CONFIG_ARCH_MVEBU=n CONFIG_PLAT_SPEAR=n CONFIG_CHROME_PLATFORMS=n ################################################## # TI Baseport Config Options ################################################## # Kernel compression CONFIG_KERNEL_GZIP=n CONFIG_KERNEL_LZMA=y CONFIG_KERNEL_LZ4=n CONFIG_KERNEL_XZ=n CONFIG_KERNEL_LZO=n # Enable process accounting CONFIG_BSD_PROCESS_ACCT=y # Have some way to pick up kernel config later on # Always useful to look at /proc/config.gz CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y # Add Bin2c CONFIG_BUILD_BIN2C=y # Add base Cgroups functions CONFIG_CGROUP_DEBUG=n CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_PAGE_COUNTER=y CONFIG_MEMCG=y CONFIG_MEMCG_SWAP=y CONFIG_MEMCG_SWAP_ENABLED=y CONFIG_DEBUG_BLK_CGROUP=n CONFIG_CGROUP_WRITEBACK=y # Choose CONFIG_EMBEDDED CONFIG_EMBEDDED=y CONFIG_EXPERT=y CONFIG_ARM_PATCH_PHYS_VIRT=y # Enable all kernel symbols please CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y # Enable AEABI CONFIG_AEABI=y # How do we want kernel Modules to work? CONFIG_BASE_FULL=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y CONFIG_MODULE_SIG=n CONFIG_MODULE_COMPRESS=n CONFIG_MODULES_TREE_LOOKUP=y # Boot options CONFIG_USE_OF=y CONFIG_ATAGS=y CONFIG_DEPRECATED_PARAM_STRUCT=n CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_ARM_APPENDED_DTB=y CONFIG_ARM_ATAG_DTB_COMPAT=y CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=n CONFIG_CMDLINE="" CONFIG_CMDLINE_FROM_BOOTLOADER=y CONFIG_CMDLINE_EXTEND=n CONFIG_CMDLINE_FORCE=n CONFIG_ATAGS_PROC=y CONFIG_CRASH_DUMP=n CONFIG_AUTO_ZRELADDR=y # Mem allocator CONFIG_SLAB=n CONFIG_SLUB=y # Enable NEON CONFIG_VFP=y CONFIG_NEON=y CONFIG_KERNEL_MODE_NEON=y # POSIX Message queue CONFIG_POSIX_MQUEUE=y # No Multi Cluster systems in TI yet.. CONFIG_MCPM=n # Serial CONFIG_SERIAL_8250_OMAP=y CONFIG_SERIAL_8250_OMAP_TTYO_FIXUP=y CONFIG_SERIAL_8250_NR_UARTS=10 CONFIG_SERIAL_8250_RUNTIME_UARTS=10 CONFIG_SERIAL_8250_DMA=y CONFIG_SERIAL_OMAP=n CONFIG_SERIAL_8250_DW=n CONFIG_SERIAL_8250_EM=n CONFIG_SERIAL_AMBA_PL011=n CONFIG_SERIAL_XILINX_PS_UART=n CONFIG_SERIAL_FSL_LPUART=n CONFIG_SERIAL_CONEXANT_DIGICOLOR=n CONFIG_SERIAL_ST_ASC=n CONFIG_JUMP_LABEL=y # Disable Extra debug options CONFIG_TIMER_STATS=n CONFIG_DEBUG_SPINLOCK=n CONFIG_DEBUG_MUTEXES=n CONFIG_DEBUG_LOCK_ALLOC=n CONFIG_PROVE_LOCKING=n CONFIG_LOCKDEP=n CONFIG_STACKTRACE=n CONFIG_FTRACE=n CONFIG_ARM_UNWIND=n CONFIG_DEBUG_PREEMPT=n CONFIG_SLUB_DEBUG=n CONFIG_LOCKUP_DETECTOR=n CONFIG_DETECT_HUNG_TASK=n CONFIG_IRQ_DOMAIN_DEBUG=n CONFIG_DEBUG_BUGVERBOSE=n CONFIG_DEBUG_FS=y # Enable System V IPC CONFIG_SYSVIPC=y # Power management options CONFIG_SUSPEND_FREEZER=y CONFIG_SUSPEND_SKIP_SYNC=n CONFIG_HIBERNATION=n CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y CONFIG_PM_AUTOSLEEP=n CONFIG_PM_WAKELOCKS=n CONFIG_PM=y CONFIG_PM_DEBUG=y CONFIG_APM_EMULATION=n CONFIG_PM_OPP=y CONFIG_PM_CLK=y CONFIG_PM_GENERIC_DOMAINS=y CONFIG_WQ_POWER_EFFICIENT_DEFAULT=n CONFIG_PM_GENERIC_DOMAINS_SLEEP=y CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_CPU_PM=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARM_CPU_SUSPEND=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y # Clock framework stuff we need CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y CONFIG_COMMON_CLK_SI5351=n CONFIG_COMMON_CLK_SI514=n CONFIG_COMMON_CLK_SI570=n CONFIG_COMMON_CLK_CDCE925=n CONFIG_CLK_TWL6040=n CONFIG_CLK_QORIQ=n CONFIG_COMMON_CLK_PALMAS=y CONFIG_COMMON_CLK_PWM=n CONFIG_COMMON_CLK_PXA=n CONFIG_COMMON_CLK_CDCE706=n CONFIG_CLKSRC_OF=y CONFIG_CLKSRC_PROBE=y CONFIG_CLKSRC_MMIO=y CONFIG_CLKSRC_TI_32K=y CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y CONFIG_ARM_GLOBAL_TIMER=n CONFIG_ARM_TIMER_SP804=n # Clock cleanup please CONFIG_OMAP_RESET_CLOCKS=y # CPU Idle CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_DT_IDLE_STATES=y # ARM CPU Idle Drivers CONFIG_ARM_CPUIDLE=y CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=n # CPU Frequency scaling CONFIG_CPU_FREQ_GOV_COMMON=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y # CPUFreq Driver Options CONFIG_CPUFREQ_DT=y CONFIG_ARM_BIG_LITTLE_CPUFREQ=n CONFIG_ARM_KIRKWOOD_CPUFREQ=n CONFIG_ARM_OMAP2PLUS_CPUFREQ=n CONFIG_ARM_TI_CPUFREQ=y CONFIG_QORIQ_CPUFREQ=n # AMx3 Power Config Options CONFIG_MAILBOX=y CONFIG_WKUP_M3_RPROC=m CONFIG_SOC_TI=y CONFIG_SOC_BRCMSTB=n CONFIG_WKUP_M3_IPC=m CONFIG_AMX3_PM=m CONFIG_SRAM=y CONFIG_TI_EMIF_SRAM=m CONFIG_SUNXI_SRAM=n CONFIG_PM_DEVFREQ=n # K2G Power config options # CONFIG_MAILBOX is enabled in AMx3 CONFIG_TI_MESSAGE_MANAGER=y CONFIG_TI_SCI_PROTOCOL=y CONFIG_TI_SCI_PM_DOMAINS=y CONFIG_TI_SCI_CLK=y # Enable Reset Controllers CONFIG_RESET_CONTROLLER=y CONFIG_RESET_TI_SYSCON=y CONFIG_RESET_TI_SCI=y # CPUFreq and OPP drivers CONFIG_OPP_DOMAIN_TI=y # Thermal CONFIG_THERMAL=y CONFIG_THERMAL_OF=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_BANG_BANG=y CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_CPU_THERMAL=y CONFIG_TI_SOC_THERMAL=y CONFIG_TI_THERMAL=y CONFIG_OMAP4_THERMAL=y CONFIG_OMAP5_THERMAL=y CONFIG_DRA752_THERMAL=y # Since HWMON is needed by Sensors.. CONFIG_HWMON=y CONFIG_SENSORS_TMP102=y CONFIG_SENSORS_GPIO_FAN=y # Enable the reset framework CONFIG_POWER_RESET=y CONFIG_POWER_SUPPLY=y # Pinctrl CONFIG_PINCTRL_TI_IODELAY=y CONFIG_PINCTRL_SINGLE=y # # Multifunction device drivers CONFIG_MFD_CORE=y CONFIG_MFD_AS3711=n CONFIG_MFD_AS3722=n CONFIG_PMIC_ADP5520=n CONFIG_MFD_AAT2870_CORE=n CONFIG_MFD_ATMEL_FLEXCOM=n CONFIG_MFD_ATMEL_HLCDC=n CONFIG_MFD_BCM590XX=n CONFIG_MFD_AXP20X=n CONFIG_MFD_AXP20X_I2C=n CONFIG_MFD_CROS_EC=n CONFIG_MFD_CROS_EC_I2C=n CONFIG_MFD_CROS_EC_SPI=n CONFIG_MFD_ASIC3=n CONFIG_PMIC_DA903X=n CONFIG_MFD_DA9052_SPI=n CONFIG_MFD_DA9052_I2C=n CONFIG_MFD_DA9055=n CONFIG_MFD_DA9062=n CONFIG_MFD_DA9063=n CONFIG_MFD_DA9150=n CONFIG_MFD_DLN2=n CONFIG_MFD_MC13XXX_SPI=n CONFIG_MFD_MC13XXX_I2C=n CONFIG_MFD_HI6421_PMIC=n CONFIG_HTC_EGPIO=n CONFIG_HTC_PASIC3=n CONFIG_HTC_I2CPLD=n CONFIG_LPC_ICH=n CONFIG_LPC_SCH=n CONFIG_INTEL_SOC_PMIC=n CONFIG_MFD_JANZ_CMODIO=n CONFIG_MFD_KEMPLD=n CONFIG_MFD_88PM800=n CONFIG_MFD_88PM805=n CONFIG_MFD_88PM860X=n CONFIG_MFD_MAX14577=n CONFIG_MFD_MAX77686=n CONFIG_MFD_MAX77693=n CONFIG_MFD_MAX77843=n CONFIG_MFD_MAX8907=n CONFIG_MFD_MAX8925=n CONFIG_MFD_MAX8997=n CONFIG_MFD_MAX8998=n CONFIG_MFD_MT6397=n CONFIG_MFD_MENF21BMC=n CONFIG_EZX_PCAP=n CONFIG_MFD_VIPERBOARD=n CONFIG_MFD_RETU=n CONFIG_MFD_PCF50633=n CONFIG_MFD_PM8XXX=n CONFIG_MFD_PM8921_CORE=n CONFIG_MFD_RDC321X=n CONFIG_MFD_RTSX_PCI=n CONFIG_MFD_RT5033=n CONFIG_MFD_RTSX_USB=n CONFIG_MFD_RC5T583=n CONFIG_MFD_RK808=n CONFIG_MFD_RN5T618=n CONFIG_MFD_SEC_CORE=n CONFIG_MFD_SI476X_CORE=n CONFIG_MFD_SM501=n CONFIG_MFD_SKY81452=n CONFIG_MFD_SMSC=n CONFIG_ABX500_CORE=n CONFIG_AB3100_CORE=n CONFIG_MFD_STMPE=n CONFIG_STMPE_I2C=n CONFIG_STMPE_SPI=n CONFIG_MFD_SYSCON=y CONFIG_MFD_TI_AM335X_TSCADC=m CONFIG_MFD_LP3943=n CONFIG_MFD_LP8788=n CONFIG_MFD_OMAP_USB_HOST=y CONFIG_MFD_PALMAS=y CONFIG_TPS6105X=n CONFIG_TPS65010=n CONFIG_TPS6507X=n CONFIG_MFD_TPS65086=n CONFIG_MFD_TPS65090=y CONFIG_MFD_TPS65217=y CONFIG_MFD_TPS65218=y CONFIG_MFD_TPS6586X=y CONFIG_MFD_TPS65910=y CONFIG_MFD_TPS65912_I2C=n CONFIG_MFD_TPS65912_SPI=n CONFIG_MFD_TPS80031=n CONFIG_TWL4030_CORE=n CONFIG_TWL4030_POWER=n CONFIG_MFD_TWL4030_AUDIO=n CONFIG_TWL6040_CORE=y CONFIG_MFD_WL1273_CORE=n CONFIG_MFD_LM3533=n CONFIG_MFD_TI_LP873X=y CONFIG_MFD_TI_LP87565=y CONFIG_MFD_TC3589X=n CONFIG_MFD_TMIO=n CONFIG_MFD_T7L66XB=n CONFIG_MFD_TC6387XB=n CONFIG_MFD_TC6393XB=n CONFIG_MFD_VX855=n CONFIG_MFD_ARIZONA_I2C=n CONFIG_MFD_ARIZONA_SPI=n CONFIG_MFD_WM8400=n CONFIG_MFD_WM831X_I2C=n CONFIG_MFD_WM831X_SPI=n CONFIG_MFD_WM8350_I2C=n CONFIG_MFD_WM8994=n CONFIG_MFD_VEXPRESS_SYSREG=n # Regulators CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_DEBUG=n CONFIG_REGULATOR_VIRTUAL_CONSUMER=n CONFIG_REGULATOR_USERSPACE_CONSUMER=n CONFIG_REGULATOR_ACT8865=n CONFIG_REGULATOR_AD5398=n CONFIG_REGULATOR_ANATOP=n CONFIG_REGULATOR_AS3711=n CONFIG_REGULATOR_AS3722=n CONFIG_REGULATOR_AXP20X=n CONFIG_REGULATOR_BCM590XX=n CONFIG_REGULATOR_DA9210=n CONFIG_REGULATOR_DA9211=n CONFIG_REGULATOR_FAN53555=n CONFIG_REGULATOR_GPIO=y CONFIG_REGULATOR_ISL9305=n CONFIG_REGULATOR_ISL6271A=n CONFIG_REGULATOR_LP3971=n CONFIG_REGULATOR_LP3972=n CONFIG_REGULATOR_LP872X=n CONFIG_REGULATOR_LP8755=n CONFIG_REGULATOR_LP873X=y CONFIG_REGULATOR_LP87565=y CONFIG_REGULATOR_LTC3589=n CONFIG_REGULATOR_MAX14577=n CONFIG_REGULATOR_MAX1586=n CONFIG_REGULATOR_MAX8649=n CONFIG_REGULATOR_MAX8660=n CONFIG_REGULATOR_MAX8907=n CONFIG_REGULATOR_MAX8952=n CONFIG_REGULATOR_MAX8973=n CONFIG_REGULATOR_MAX77686=n CONFIG_REGULATOR_MAX77693=n CONFIG_REGULATOR_MAX77802=n CONFIG_REGULATOR_MT6311=n CONFIG_REGULATOR_PALMAS=y CONFIG_REGULATOR_PBIAS=y CONFIG_REGULATOR_PFUZE100=n CONFIG_REGULATOR_PWM=n CONFIG_REGULATOR_RK808=n CONFIG_REGULATOR_S2MPA01=n CONFIG_REGULATOR_S2MPS11=n CONFIG_REGULATOR_S5M8767=n CONFIG_REGULATOR_TI_ABB=y CONFIG_REGULATOR_TPS51632=n CONFIG_REGULATOR_TPS62360=y CONFIG_REGULATOR_TPS65023=y CONFIG_REGULATOR_TPS6507X=y CONFIG_REGULATOR_TPS65090=y CONFIG_REGULATOR_TPS65217=y CONFIG_REGULATOR_TPS65218=y CONFIG_REGULATOR_TPS6524X=y CONFIG_REGULATOR_TPS6586X=y CONFIG_REGULATOR_TPS65910=y CONFIG_REGULATOR_TWL4030=n CONFIG_REGULATOR_VEXPRESS=n # Crypto Modules CONFIG_CRYPTO_DEV_OMAP=m CONFIG_CRYPTO_DEV_OMAP_SHAM=m CONFIG_CRYPTO_DEV_OMAP_AES=m CONFIG_CRYPTO_DEV_OMAP_DES=m CONFIG_CRYPTO_USER_API_HASH=m CONFIG_CRYPTO_USER_API_SKCIPHER=m CONFIG_CRYPTO_SHA1_ARM_NEON=m CONFIG_CRYPTO_SHA256_ARM=m CONFIG_CRYPTO_SHA512_ARM=m CONFIG_CRYPTO_AES_ARM_BS=m # # RTC drivers # CONFIG_RTC_DRV_ABB5ZES3=n CONFIG_RTC_DRV_ABX80X=n CONFIG_RTC_DRV_DS1307=m CONFIG_RTC_DRV_DS1374=n CONFIG_RTC_DRV_DS1672=n CONFIG_RTC_DRV_DS3232=n CONFIG_RTC_DRV_HYM8563=n CONFIG_RTC_DRV_MAX6900=n CONFIG_RTC_DRV_RS5C372=n CONFIG_RTC_DRV_ISL1208=n CONFIG_RTC_DRV_ISL12022=n CONFIG_RTC_DRV_ISL12057=n CONFIG_RTC_DRV_X1205=n CONFIG_RTC_DRV_PALMAS=m CONFIG_RTC_DRV_PCF2127=n CONFIG_RTC_DRV_PCF8523=n CONFIG_RTC_DRV_PCF8563=n CONFIG_RTC_DRV_PCF85063=n CONFIG_RTC_DRV_PCF8583=n CONFIG_RTC_DRV_M41T80=n CONFIG_RTC_DRV_BQ32K=n CONFIG_RTC_DRV_TPS6586X=m CONFIG_RTC_DRV_TPS65910=m CONFIG_RTC_DRV_TWL92330=y CONFIG_RTC_DRV_TWL4030=n CONFIG_RTC_DRV_S35390A=n CONFIG_RTC_DRV_FM3130=n CONFIG_RTC_DRV_RX8581=n CONFIG_RTC_DRV_RX8025=n CONFIG_RTC_DRV_EM3027=n CONFIG_RTC_DRV_RV3029C2=n CONFIG_RTC_DRV_RV8803=n CONFIG_RTC_DRV_M41T93=n CONFIG_RTC_DRV_M41T94=n CONFIG_RTC_DRV_DS1305=n CONFIG_RTC_DRV_DS1343=n CONFIG_RTC_DRV_DS1347=n CONFIG_RTC_DRV_DS1390=n CONFIG_RTC_DRV_MAX6902=n CONFIG_RTC_DRV_R9701=n CONFIG_RTC_DRV_RS5C348=n CONFIG_RTC_DRV_DS3234=n CONFIG_RTC_DRV_PCF2123=n CONFIG_RTC_DRV_RX4581=n CONFIG_RTC_DRV_MCP795=n CONFIG_RTC_DRV_CMOS=n CONFIG_RTC_DRV_DS1286=n CONFIG_RTC_DRV_DS1511=n CONFIG_RTC_DRV_DS1553=n CONFIG_RTC_DRV_DS1685_FAMILY=n CONFIG_RTC_DRV_DS1742=n CONFIG_RTC_DRV_DS2404=n CONFIG_RTC_DRV_STK17TA8=n CONFIG_RTC_DRV_M48T86=n CONFIG_RTC_DRV_M48T35=n CONFIG_RTC_DRV_M48T59=n CONFIG_RTC_DRV_MSM6242=n CONFIG_RTC_DRV_BQ4802=n CONFIG_RTC_DRV_RP5C01=n CONFIG_RTC_DRV_V3020=n CONFIG_RTC_DRV_ZYNQMP=n CONFIG_RTC_DRV_OMAP=m CONFIG_RTC_DRV_SNVS=n CONFIG_RTC_DRV_HID_SENSOR_TIME=n # WatchDog CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y CONFIG_WATCHDOG_NOWAYOUT=n # Watchdog Device Drivers CONFIG_SOFT_WATCHDOG=n CONFIG_GPIO_WATCHDOG=n CONFIG_XILINX_WATCHDOG=n CONFIG_CADENCE_WATCHDOG=n CONFIG_DW_WATCHDOG=n CONFIG_OMAP_WATCHDOG=m CONFIG_TWL4030_WATCHDOG=m CONFIG_MAX63XX_WATCHDOG=n CONFIG_ALIM7101_WDT=n CONFIG_I6300ESB_WDT=n CONFIG_BCM7038_WDT=n CONFIG_MEN_A21_WDT=n # No Staging drivers please CONFIG_STAGING=n # GPIO CONFIG_GPIOLIB=y CONFIG_GPIO_SYSFS=y CONFIG_DEBUG_GPIO=y # GPIO disable unused options CONFIG_GPIO_DWAPB=n CONFIG_GPIO_EM=n CONFIG_GPIO_GENERIC_PLATFORM=n CONFIG_GPIO_XILINX=n CONFIG_GPIO_TPS6586X=n # Enable options to facilitate testing CONFIG_CRYPTO_TEST=m CONFIG_RTC_DEBUG=y CONFIG_THERMAL_EMULATION=y # OPTEE Driver CONFIG_TEE=y CONFIG_OPTEE=y ################################################## # TI RPMsg/IPC Config Options ################################################## # HwSpinLock CONFIG_HWSPINLOCK=y CONFIG_HWSPINLOCK_OMAP=y # Mailbox CONFIG_OMAP2PLUS_MBOX=y # IOMMU CONFIG_IOMMU_SUPPORT=y CONFIG_OMAP_IOMMU=y CONFIG_OMAP_IOMMU_DEBUG=y # Remoteproc CONFIG_REMOTEPROC=m CONFIG_OMAP_REMOTEPROC=m CONFIG_KEYSTONE_REMOTEPROC=m CONFIG_DA8XX_REMOTEPROC=m CONFIG_PRUSS_REMOTEPROC=m # RPMsg CONFIG_RPMSG_VIRTIO=y CONFIG_RPMSG_PROTO=y CONFIG_RPMSG_RPC=y CONFIG_RPMSG_PRU=y # DSP Memory Mapper for Keystone MPM CONFIG_KEYSTONE_DSP_MEM=m # UIO Module CONFIG_UIO=m ################################################## # TI Connectivity Configs ################################################## # Disable unused I2C options CONFIG_I2C_MUX=n CONFIG_I2C_DESIGNWARE_PLATFORM=n CONFIG_I2C_GPIO=n CONFIG_I2C_RK3X=n CONFIG_I2C_XILINX=n # I2C GPIO expanders CONFIG_GPIO_PCF857X=y CONFIG_GPIO_TPIC2810=m #Networking drivers CONFIG_NET_VENDOR_TI=y CONFIG_KEYSTONE_NAVIGATOR_QMSS=y CONFIG_KEYSTONE_NAVIGATOR_DMA=y CONFIG_TI_KEYSTONE_NETCP=y CONFIG_TI_KEYSTONE_NETCP_ETHSS=y CONFIG_TI_DAVINCI_EMAC=y CONFIG_TI_DAVINCI_MDIO=y CONFIG_TI_DAVINCI_CPDMA=y CONFIG_TI_CPSW_PHY_SEL=y CONFIG_TI_CPSW_ALE=y CONFIG_TI_CPSW=y CONFIG_TI_CPTS=y # non-TI Net vendors CONFIG_NET_DSA_BCM_SF2=n CONFIG_B53=n CONFIG_SYSTEMPORT=n CONFIG_NET_VENDOR_3COM=n CONFIG_NET_VENDOR_ADAPTEC=n CONFIG_NET_VENDOR_AGERE=n CONFIG_NET_VENDOR_ALTEON=n CONFIG_NET_VENDOR_AMAZON=n CONFIG_NET_VENDOR_AMD=n CONFIG_NET_VENDOR_ARC=n CONFIG_NET_VENDOR_ATHEROS=n CONFIG_NET_VENDOR_BROCADE=n CONFIG_NET_VENDOR_CAVIUM=n CONFIG_NET_VENDOR_CHELSIO=n CONFIG_NET_CADENCE=n CONFIG_BCMGENET=n CONFIG_NET_VENDOR_CIRRUS=n CONFIG_NET_VENDOR_CISCO=n CONFIG_NET_VENDOR_DEC=n CONFIG_NET_VENDOR_DLINK=n CONFIG_NET_VENDOR_EMULEX=n CONFIG_NET_VENDOR_EZCHIP=n CONFIG_NET_VENDOR_EXAR=n CONFIG_NET_VENDOR_FARADAY=n CONFIG_NET_VENDOR_HISILICON=n CONFIG_NET_VENDOR_HP=n CONFIG_IGB=n CONFIG_NET_VENDOR_I825XX=n CONFIG_NET_VENDOR_MELLANOX=n CONFIG_NET_VENDOR_MICROCHIP=n CONFIG_NET_VENDOR_MYRI=n CONFIG_NET_VENDOR_NATSEMI=n CONFIG_NET_VENDOR_NETRONOME=n CONFIG_NET_VENDOR_NVIDIA=n CONFIG_NET_VENDOR_OKI=n CONFIG_NET_VENDOR_8390=n CONFIG_NET_VENDOR_QLOGIC=n CONFIG_NET_VENDOR_QUALCOMM=n CONFIG_NET_VENDOR_REALTEK=n CONFIG_NET_VENDOR_RENESAS=n CONFIG_NET_VENDOR_RDC=n CONFIG_NET_VENDOR_ROCKER=n CONFIG_NET_VENDOR_SAMSUNG=n CONFIG_NET_VENDOR_SILAN=n CONFIG_NET_VENDOR_SIS=n CONFIG_NET_VENDOR_SEEQ=n CONFIG_NET_VENDOR_STMICRO=n CONFIG_NET_VENDOR_SUN=n CONFIG_NET_VENDOR_SYNOPSYS=n CONFIG_NET_VENDOR_TEHUTI=n CONFIG_NET_VENDOR_VIA=n CONFIG_NET_VENDOR_WIZNET=n #Wireless LAN CONFIG_WLCORE=m CONFIG_WLCORE_SDIO=m CONFIG_WL18XX=m #MDIO phys CONFIG_MARVELL_PHY=y CONFIG_MICREL_PHY=y # unused PHY drivers CONFIG_BROADCOM_PHY=n CONFIG_ICPLUS_PHY=n #PRU MII PHYs for Industrial Boards CONFIG_DP83848_PHY=y # Enable phy for DRA72 evm CONFIG_DP83867_PHY=y #MTD CONFIG_OMAP_GPMC=y CONFIG_MTD_NAND_OMAP2=y CONFIG_MTD_NAND_OMAP_BCH=y CONFIG_MTD_NAND_OMAP_BCH_BUILD=y CONFIG_MTD_TESTS=m CONFIG_MTD_CMDLINE_PARTS=y #PCIE CONFIG_PCI=y CONFIG_PCI_ENDPOINT=y CONFIG_PCI_ENDPOINT_CONFIGFS=y CONFIG_PCI_EPF_TEST=y CONFIG_PCI_ENDPOINT_TEST=m CONFIG_PCI_DRA7XX=y CONFIG_PCI_DRA7XX_HOST=y CONFIG_PCI_DRA7XX_EP=y CONFIG_PCI_KEYSTONE_EP=y #These drivers have been used with DRA7x/AM57x PCIe RC with some success CONFIG_NET_VENDOR_BROADCOM=y CONFIG_NET_VENDOR_MARVELL=y CONFIG_NET_VENDOR_INTEL=y CONFIG_TIGON3=m CONFIG_SKGE=m CONFIG_E1000=m CONFIG_E1000E=m CONFIG_IWLWIFI=m CONFIG_IWLDVM=m CONFIG_IWLMVM=m #Generic Phys CONFIG_PHY_TI_KEYSTONE_SERDES=y # Networking CONFIG_HSR_PRP=y CONFIG_NF_CONNTRACK=m CONFIG_NF_CONNTRACK_IPV4=m CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_NAT=m CONFIG_NF_NAT_IPV4=m CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_BRIDGE=m CONFIG_XFRM_USER=m CONFIG_NET_KEY=m CONFIG_INET=y CONFIG_INET_AH=m CONFIG_INET6_AH=m CONFIG_INET6_IPCOMP=m CONFIG_INET6_XFRM_TUNNEL=m CONFIG_INET6_TUNNEL=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m CONFIG_INET_XFRM_MODE_TRANSPORT=m CONFIG_INET_XFRM_MODE_TUNNEL=m CONFIG_INET_XFRM_MODE_BEET=m CONFIG_IPV6_TUNNEL=m CONFIG_NETFILTER=y CONFIG_NETFILTER_XTABLES=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m CONFIG_NETFILTER_XT_TARGET_MARK=m CONFIG_NETFILTER_XT_MATCH_COMMENT=m CONFIG_NETFILTER_XT_MATCH_CPU=m CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m CONFIG_NETFILTER_XT_MATCH_MAC=m CONFIG_NETFILTER_XT_MATCH_MARK=m CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_POLICY=m CONFIG_NETFILTER_XT_MATCH_SCTP=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m CONFIG_BRIDGE_EBT_T_NAT=m CONFIG_BRIDGE_EBT_802_3=m CONFIG_BRIDGE_EBT_AMONG=m CONFIG_BRIDGE_EBT_ARP=m CONFIG_BRIDGE_EBT_IP=m CONFIG_BRIDGE_EBT_IP6=m CONFIG_BRIDGE_EBT_LIMIT=m CONFIG_BRIDGE_EBT_MARK=m CONFIG_BRIDGE_EBT_PKTTYPE=m CONFIG_BRIDGE_EBT_STP=m CONFIG_BRIDGE_EBT_VLAN=m CONFIG_BRIDGE_EBT_ARPREPLY=m CONFIG_BRIDGE_EBT_DNAT=m CONFIG_BRIDGE_EBT_MARK_T=m CONFIG_BRIDGE_EBT_REDIRECT=m CONFIG_BRIDGE_EBT_SNAT=m CONFIG_BRIDGE_EBT_LOG=m CONFIG_BRIDGE_EBT_NFLOG=m CONFIG_NET_SCHED=y CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_HFSC=m CONFIG_NET_SCH_PRIO=m CONFIG_NET_SCH_MULTIQ=m CONFIG_NET_SCH_RED=m CONFIG_NET_SCH_SFB=m CONFIG_NET_SCH_SFQ=m CONFIG_NET_SCH_TEQL=m CONFIG_NET_SCH_TBF=m CONFIG_NET_SCH_GRED=m CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_NETEM=m CONFIG_NET_SCH_DRR=m CONFIG_NET_SCH_MQPRIO=m CONFIG_NET_SCH_CHOKE=m CONFIG_NET_SCH_QFQ=m CONFIG_NET_SCH_CODEL=m CONFIG_NET_SCH_FQ_CODEL=m CONFIG_NET_SCH_INGRESS=m CONFIG_NET_CLS=y CONFIG_NET_CLS_BASIC=m CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_CLS_ROUTE4=m CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m CONFIG_CLS_U32_MARK=y CONFIG_NET_CLS_RSVP=m CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_FLOW=m CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 CONFIG_NET_EMATCH_CMP=m CONFIG_NET_EMATCH_NBYTE=m CONFIG_NET_EMATCH_U32=m CONFIG_NET_EMATCH_META=m CONFIG_NET_EMATCH_TEXT=m CONFIG_NET_CLS_ACT=y CONFIG_NET_ACT_POLICE=m CONFIG_NET_ACT_GACT=m CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=m CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_ACT_CSUM=m CONFIG_NET_CLS_IND=y CONFIG_NET_SCH_FIFO=y CONFIG_IP_SCTP=m CONFIG_VLAN_8021Q=m CONFIG_IP_MULTICAST=y #PRUSS Ethernet driver CONFIG_TI_PRUETH=m #MMC/SD support CONFIG_MMC=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_OMAP_HS=y CONFIG_MMC_SDHCI_OMAP=y CONFIG_MMC_DW=n #SPI CONFIG_SPI_CADENCE_QUADSPI=y CONFIG_SPI_TI_QSPI=y #Disable unused SPI controllers CONFIG_SPI_BITBANG=n CONFIG_SPI_CADENCE=n CONFIG_SPI_ROCKCHIP=n CONFIG_SPI_XILINX=n CONFIG_SPI_SPIDEV=n #Disable SPI NOR 4K SECTORS CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=n #SPI GPIO expanders CONFIG_GPIO_PISOSR=m #SATA CONFIG_SATA_AHCI_PLATFORM=m CONFIG_SATA_AHCI=m CONFIG_ATA=m #USB gadgets CONFIG_USB_GADGET=m CONFIG_USB_AUDIO=m CONFIG_USB_ETH=m CONFIG_USB_G_NCM=m CONFIG_USB_GADGETFS=m CONFIG_USB_FUNCTIONFS=m CONFIG_USB_FUNCTIONFS_ETH=y CONFIG_USB_FUNCTIONFS_RNDIS=y CONFIG_USB_FUNCTIONFS_GENERIC=y CONFIG_USB_MASS_STORAGE=m CONFIG_USB_G_SERIAL=m CONFIG_USB_MIDI_GADGET=m CONFIG_USB_G_PRINTER=m CONFIG_USB_CDC_COMPOSITE=m CONFIG_USB_G_ACM_MS=m CONFIG_USB_G_MULTI=m CONFIG_USB_G_MULTI_CDC=y CONFIG_USB_G_HID=m CONFIG_USB_G_DBGP=m CONFIG_USB_G_WEBCAM=m CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=32 CONFIG_USB_ZERO=m CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y CONFIG_USB_CONFIGFS_OBEX=y CONFIG_USB_CONFIGFS_NCM=y CONFIG_USB_CONFIGFS_ECM=y CONFIG_USB_CONFIGFS_ECM_SUBSET=y CONFIG_USB_CONFIGFS_RNDIS=y CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y CONFIG_USB_CONFIGFS_F_LB_SS=y CONFIG_USB_CONFIGFS_F_FS=y CONFIG_USB_CONFIGFS_F_UAC1=y CONFIG_USB_CONFIGFS_F_UAC2=y CONFIG_USB_CONFIGFS_F_MIDI=y CONFIG_USB_CONFIGFS_F_HID=y CONFIG_USB_CONFIGFS_F_UVC=y CONFIG_USB_CONFIGFS_F_PRINTER=y # USB DWC3 CONFIG_USB_DWC3=m CONFIG_USB_DWC3_DUAL_ROLE=y CONFIG_USB_DWC3_OMAP=m CONFIG_USB_DWC3_PCI=n CONFIG_USB_DWC2=n CONFIG_USB_CHIPIDEA=n #USB PHY CONFIG_NOP_USB_XCEIV=m #USB MUSB CONFIG_USB_MUSB_HDRC=m CONFIG_USB_MUSB_DUAL_ROLE=y CONFIG_USB_MUSB_OMAP2PLUS=m CONFIG_USB_MUSB_AM35X=m CONFIG_USB_MUSB_DSPS=m CONFIG_USB_MUSB_AM335X_CHILD=m CONFIG_TI_CPPI41=y CONFIG_USB_TI_CPPI41_DMA=y CONFIG_AM335X_CONTROL_USB=y CONFIG_AM335X_PHY_USB=y #USB EHCI CONFIG_USB=m CONFIG_USB_EHCI_HCD=m CONFIG_USB_EHCI_PCI=m CONFIG_USB_EHCI_HCD_OMAP=m #USB Networking CONFIG_USB_USBNET=m CONFIG_USB_NET_DRIVERS=m CONFIG_USB_NET_SMSC95XX=m #USB testing CONFIG_USB_TEST=m #USB Serial CONFIG_USB_ACM=m CONFIG_USB_SERIAL=m # Extcon drivers CONFIG_EXTCON=m CONFIG_EXTCON_PALMAS=m CONFIG_EXTCON_USB_GPIO=m # PWM CONFIG_PWM_TIECAP=y CONFIG_PWM_TIEHRPWM=y CONFIG_PWM_TIPWMSS=y # 1-wire Bus Masters CONFIG_W1=m CONFIG_HDQ_MASTER_OMAP=m # Matrix keypad CONFIG_KEYBOARD_MATRIX=m #Touchscreen/ADC CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m CONFIG_TI_AM335X_ADC=m #CAN CONFIG_CAN=m CONFIG_CAN_C_CAN=m CONFIG_CAN_C_CAN_PLATFORM=m CONFIG_CAN_M_CAN=m # Rotary Encoder CONFIG_INPUT_GPIO_DECODER=m # Filesystem extra options CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_CIFS=m CONFIG_CIFS_STATS=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y CONFIG_CIFS_ACL=y ################################################## # TI Audio/Display config options ################################################## CONFIG_CMA_SIZE_MBYTES=24 # backlight CONFIG_LEDS_CLASS=y CONFIG_LEDS_TLC591XX=y CONFIG_BACKLIGHT_PWM=y CONFIG_BACKLIGHT_GPIO=y CONFIG_BACKLIGHT_LED=y # fbdev CONFIG_FB_SSD1307=y # drm CONFIG_DRM=y # SGX driver needs legacy support CONFIG_DRM_LEGACY=y CONFIG_DRM_VM=y # Disable unneeded features CONFIG_VGA_ARB=n CONFIG_DRM_I2C_ADV7511=n CONFIG_DRM_NOUVEAU=n CONFIG_DRM_EXYNOS=n CONFIG_DRM_PANEL_SIMPLE=n CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=n CONFIG_DRM_NXP_PTN3460=n CONFIG_DRM_PARADE_PS8622=n CONFIG_DRM_STI=n CONFIG_LCD_CLASS_DEVICE=n # tilcdc CONFIG_DRM_I2C_NXP_TDA998X=y CONFIG_DRM_TILCDC=y # omapdrm CONFIG_DRM_OMAP=y CONFIG_DRM_OMAP_WB=y CONFIG_OMAP2_DSS=y CONFIG_OMAP2_DSS_DEBUGFS=y CONFIG_OMAP2_DSS_DPI=y CONFIG_OMAP2_DSS_VENC=n CONFIG_OMAP4_DSS_HDMI=y CONFIG_OMAP5_DSS_HDMI=y CONFIG_OMAP2_DSS_SDI=n CONFIG_OMAP2_DSS_DSI=n CONFIG_TI_DSS6=y CONFIG_DRM_OMAP_PANEL_DPI=y CONFIG_DRM_OMAP_CONNECTOR_HDMI=y CONFIG_DRM_OMAP_CONNECTOR_DVI=y CONFIG_DRM_OMAP_DRA7EVM_ENCODER_TPD12S015=y CONFIG_DRM_OMAP_ENCODER_TPD12S015=y CONFIG_DRM_OMAP_ENCODER_SII9022=y CONFIG_DRM_OMAP_ENCODER_TC358768=y CONFIG_DRM_OMAP_ENCODER_TFP410=y # sound CONFIG_SOUND=y CONFIG_SND=y CONFIG_SND_SOC=y CONFIG_SND_OMAP_SOC=y CONFIG_SND_EDMA_SOC=y CONFIG_SND_DAVINCI_SOC_MCASP=y CONFIG_SND_AM33XX_SOC_EVM=m CONFIG_SND_SIMPLE_CARD=m CONFIG_SND_SOC_TLV320AIC31XX=m CONFIG_SND_SOC_TLV320AIC3X=m CONFIG_SND_SOC_HDMI_CODEC=m CONFIG_SND_OMAP_SOC_HDMI_AUDIO=m # Disable what we don't want in our config CONFIG_SND_ARM=n CONFIG_SND_SPI=n CONFIG_SND_PCI=n CONFIG_SND_ATMEL_SOC=n CONFIG_SND_SOC_FSL_SAI=n CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=n CONFIG_SND_SOC_AK4642=n CONFIG_SND_SOC_SGTL5000=n CONFIG_SND_SOC_STI_SAS=n CONFIG_SND_SOC_WM8978=n # v4l2 CONFIG_MEDIA_SUPPORT=y CONFIG_MEDIA_CAMERA_SUPPORT=y CONFIG_MEDIA_CONTROLLER=y CONFIG_VIDEO_V4L2_SUBDEV_API=y CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_AM437X_VPFE=m CONFIG_VIDEO_TI_CAL=m CONFIG_VIDEO_TI_VIP=m CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_TI_VPE=m CONFIG_MEDIA_SUBDRV_AUTOSELECT=n CONFIG_VIDEO_OV2659=m CONFIG_VIDEO_OV1063X=m CONFIG_VIDEO_MT9T11X=m CONFIG_GPIO_PCA953X=m CONFIG_VIDEO_OV490=m CONFIG_MEDIA_USB_SUPPORT=y CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y # Touchscreen CONFIG_TOUCHSCREEN_EDT_FT5X06=m CONFIG_TOUCHSCREEN_PIXCIR=m CONFIG_TOUCHSCREEN_GOODIX=m CONFIG_HID_MULTITOUCH=m ################################################## # TI Base OMAP generation SoCs generic default ################################################## CONFIG_KEYSTONE2_DMA_COHERENT=n CONFIG_ARCH_OMAP=y CONFIG_ARCH_OMAP2PLUS=y CONFIG_OMAP_INTERCONNECT_BARRIER=y CONFIG_ARM_PSCI=n # Maximum Number of processors CONFIG_NR_CPUS=2 # Kexec CONFIG_KEXEC=y # EDAC CONFIG_EDAC=y CONFIG_EDAC_TI=m ################################################## # TI DRA7 specific config options ################################################## # Supported ARM CPUs CONFIG_ARCH_MULTI_V6=n CONFIG_ARCH_MULTI_V7=y CONFIG_ARCH_MULTI_V6_V7=n CONFIG_CPU_V6=n # Enable CONFIG_SMP CONFIG_SMP=y # Disable Socs other than DRA7 CONFIG_ARCH_OMAP2=n CONFIG_ARCH_OMAP3=n CONFIG_ARCH_OMAP4=n CONFIG_SOC_OMAP5=n CONFIG_SOC_AM33XX=n CONFIG_SOC_AM43XX=n CONFIG_SOC_DRA7XX=y CONFIG_ARCH_KEYSTONE=n CONFIG_ARM_LPAE=y CONFIG_TI_PTP_BC=y CONFIG_TI_1PPS_DM_TIMER=y ################################################## # Real Time Linux Configs ################################################## CONFIG_PREEMPT=y CONFIG_PREEMPT_RT_BASE=y CONFIG_PREEMPT_RT_FULL=y #Disable PM features CONFIG_CPU_IDLE=n CONFIG_CPU_FREQ=n CONFIG_SUSPEND=n CONFIG_HOTPLUG_CPU=y # SCHED_DEBUG provides a lot of additional options for scheduler # tuning in /proc/sys/kernel/ and allows to see scheduler statistic in # /proc/sched_debug # CONFIG_SCHED_DEBUG # --- RCU optimization options to reduce OS jitter # RCU_BOOST : This option boosts the priority of preempted RCU readers that # block the current preemptible RCU grace period for too long. # This option also prevents heavy loads from blocking RCU # callback invocation for all flavors of RCU # CONFIG_RCU_BOOST=n # RCU_NOCB_CPU : Use this option to reduce OS jitter for aggressive HPC or # real-time workloads. It can also be used to offload RCU # callback invocation to energy-efficient CPUs in battery-powered # asymmetric multiprocessors. # CONFIG_RCU_NOCB_CPU=y # RCU_NOCB_CPU_ALL: his option forces all CPUs to be no-CBs CPUs. # The rcu_nocbs= boot parameter will be ignored. All CPUs' RCU callbacks will # be executed in the context of per-CPU rcuo kthreads created for # this purpose. # CONFIG_RCU_NOCB_CPU_ALL=y ############################################## # # Kernel options needed for systemd enabled TI SDKs # See https://cgit.freedesktop.org/systemd/systemd/tree/README#n38 for details # ############################################## CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_CGROUPS=y CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_BLK_CGROUP=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_PERF=y CONFIG_INOTIFY_USER=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EPOLL=y CONFIG_NET=y CONFIG_SYSFS=y CONFIG_PROC_FS=y CONFIG_FHANDLE=y # udev will fail to work with the legacy sysfs layout: CONFIG_SYSFS_DEPRECATED=n # Legacy hotplug slows down the system and confuses udev: CONFIG_UEVENT_HELPER_PATH="" # Userspace firmware loading is not supported and should # be disabled in the kernel: CONFIG_FW_LOADER_USER_HELPER=n # Some udev rules and virtualization detection relies on it: # Only for UEFI based systems # http://cateee.net/lkddb/web-lkddb/DMI.html CONFIG_DMIID=n # Support for some SCSI devices serial number retrieval, to # create additional symlinks in /dev/disk/ and /dev/tape: CONFIG_BLK_DEV_BSG=y # Required for PrivateNetwork and PrivateDevices in service units: # Note that systemd-localed.service and other systemd units use # PrivateNetwork and PrivateDevices so this is effectively required. CONFIG_NAMESPACES=y CONFIG_NET_NS=y CONFIG_DEVPTS_MULTIPLE_INSTANCES=y # Optional but strongly recommended options: those are nice to have and # indeed recommended, but not necessarily systemd required. These to be # enabled in corresponding domain fragments since they are not specific # to supporting systemd. CONFIG_SECCOMP=y # for kcmp syscall CONFIG_CHECKPOINT_RESTORE=y # Required for CPUShares= in resource control unit settings CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y # Required for CPUQuota= in resource control unit settings CONFIG_CFS_BANDWIDTH=y # For systemd-bootchart, several proc debug interfaces are required: # Systemd-debug.cfg? CONFIG_SCHEDSTATS=y CONFIG_SCHED_DEBUG=y # We recommend to turn off Real-Time group scheduling in the # kernel when using systemd. RT group scheduling effectively # makes RT scheduling unavailable for most userspace, since it # requires explicit assignment of RT budgets to each unit whose # processes making use of RT. As there's no sensible way to # assign these budgets automatically this cannot really be # fixed, and it's best to disable group scheduling hence. CONFIG_RT_GROUP_SCHED=n # Note that kernel auditing is broken when used with systemd's # container code. When using systemd in conjunction with # containers, please make sure to either turn off auditing at # runtime using the kernel command line option "audit=0", or # turn it off at kernel compile time using: CONFIG_AUDIT=n
Bin:
It seems that "extcon_get_edev_by_phandle()" is returning an error.
See the code below in "dwc3-omap.c" file.
static int dwc3_omap_extcon_register(struct dwc3_omap *omap)
{
int ret;
struct device_node *node = omap->dev->of_node;
struct extcon_dev *edev;
if (of_property_read_bool(node, "extcon")) {
edev = extcon_get_edev_by_phandle(omap->dev, 0);
if (IS_ERR(edev)) {
dev_vdbg(omap->dev, "couldn't get extcon device\n");
return -EPROBE_DEFER;
}
......................
Billa
Moving forward with the debugging it seems that in function "extcon_get_edev_by_handle()" function in "extcon.c" file
it does not find the "extcon_usb2" entry in the device tree. See attached the dts file.
Billabridge_linux.dts.txt
Jose Carlos Billalabeitia said:I set compatible = "linux,extcon-usb.gpio" but I get a kernel error message "dwc3 488d0000.usb: failed to initialize core"
I think this is very close, but there is a typo: it should be "linux,extcon-usb-gpio", a 'dash', not 'dot' in front of 'gpio'. Please let me know if you see 488d0000.usb under /sys/class/udc/ after you correct this.
However, I don't think this compatible setting is correct for vbus detection. How is your board design for vbus detection? Please explain how the vbus pin of the receptacle feeds into the processor? Or provide the usb portion of the schematics.
In your schematics, the USB2 receptacle VBUS pin is connected to GPIO3_30, this is not correct. GPIO pins are not fail-safe, the processor could be damaged if the usb port is connected to a USB host when AM57x is not powered.
What is the +5V_VBUS signal on the schematics? I cannot find the symbol elsewhere.
Because AM57x USB2 max speed is high-speed, and I believe the Linux driver can still work for high-speed if the VBUS pin doesn't feed into the processor. So I think you can try to remove extcon_usb2 and its references in devicetree, and don't connect the receptacle VBUS pin to anywhere on your board. Let me know if your usb2 can functional. Of cause, you have to fix the usb2 phy problem above.
After reading your schematics more carefully, it seems your vbus detection logic is correct, I have removed my comments above. The only thing I am not sure is the voltage on the USB_DET signal, which seems to be only about 1.2V (6K/(10K+10K+6K). As a sw guy, I am not sure if 1.2V is high enough to drive the gpio pin.
Anyway, please try to enable usb2_phy1 in dts and let me know it goes.
Jose Carlos Billalabeitia said:I already set status="okay" in usb2_phy1 but the issue continues.
The same error in "devm_phy_get(dev, "usb2-phy")" as after you fixed the extcon compatible typo?
root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# dmesg | grep usb [ 7.618521] usbcore: registered new interface driver usbfs [ 7.626660] usbcore: registered new interface driver hub [ 7.638856] usbcore: registered new device driver usb [ 7.656818] usbcore: registered new interface driver usbserial [ 16.601652] extcon-usb-gpio extcon_usb2: GPIO lookup for consumer id [ 16.601663] extcon-usb-gpio extcon_usb2: using device tree for GPIO lookup [ 16.601675] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/extcon_usb2[0]' [ 16.601684] of_get_named_gpiod_flags: can't parse 'id-gpio' property of node '/extcon_usb2[0]' [ 16.601691] extcon-usb-gpio extcon_usb2: using lookup tables for GPIO lookup [ 16.601699] extcon-usb-gpio extcon_usb2: lookup for GPIO id failed [ 16.601707] extcon-usb-gpio extcon_usb2: GPIO lookup for consumer vbus [ 16.601714] extcon-usb-gpio extcon_usb2: using device tree for GPIO lookup [ 16.601723] of_get_named_gpiod_flags: can't parse 'vbus-gpios' property of node '/extcon_usb2[0]' [ 16.609969] of_get_named_gpiod_flags: parsed 'vbus-gpio' property of node '/extcon_usb2[0]' - status (0) [ 26.771889] dwc3 488d0000.usb: failed to initialize core [ 26.865662] dwc3 488d0000.usb: failed to initialize core [ 27.011745] dwc3 488d0000.usb: failed to initialize core root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# dmesg | grep dcw3 root@am57xx-evm:~# dmesg | grep dwc3 [ 26.771889] dwc3 488d0000.usb: failed to initialize core [ 26.865662] dwc3 488d0000.usb: failed to initialize core [ 27.011745] dwc3 488d0000.usb: failed to initialize core root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# ./chkusb.sh chkusb.sh Version 0.2.4 Linux am57xx-evm 4.14.40-rt29-gd5443cbd3b #5 SMP PREEMPT RT Mon Oct 29 08:43:33 CET 2018 armv7l GNU/Linux USB initialization failed Warning: CONFIG_USB_OTG undefined, which is required for DRD mode. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-plat-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@48890000: otg, disabled ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@488d0000: peripheral, okay Gadget Kernel Config: g_zero is enabled Gadget Kernel Config: g_audio is enabled Gadget Kernel Config: g_ether is enabled Gadget Kernel Config: g_ncm is enabled Gadget Kernel Config: g_mass_storage is enabled Gadget Kernel Config: g_serial is enabled Gadget Kernel Config: g_printer is enabled gadget driver loaded: (none) The list of USB gadget drivers installed: /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/: function/ legacy/ libcomposite.ko udc/ /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/function: u_audio.ko u_ether.ko u_serial.ko usb_f_acm.ko usb_f_ecm.ko usb_f_ecm_subset.ko usb_f_eem.ko usb_f_fs.ko usb_f_hid.ko usb_f_mass_storage.ko usb_f_midi.ko usb_f_ncm.ko usb_f_obex.ko usb_f_printer.ko usb_f_rndis.ko usb_f_serial.ko usb_f_ss_lb.ko usb_f_uac1.ko usb_f_uac2.ko usb_f_uvc.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/legacy: g_acm_ms.ko g_audio.ko g_cdc.ko g_dbgp.ko g_ether.ko g_ffs.ko g_hid.ko g_mass_storage.ko g_midi.ko g_multi.ko g_ncm.ko g_printer.ko g_serial.ko g_webcam.ko g_zero.ko gadgetfs.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/udc: udc-core.ko root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# ls -l /sys/class/udc/ root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# modprobe g_ether [ 126.318826] udc-core: couldn't find an available UDC - added [g_ether] to list of pending drivers root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# ls -l /sys/class/udc/ root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# ./chkusb.sh chkusb.sh Version 0.2.4 Linux am57xx-evm 4.14.40-rt29-gd5443cbd3b #5 SMP PREEMPT RT Mon Oct 29 08:43:33 CET 2018 armv7l GNU/Linux USB initialization failed Warning: CONFIG_USB_OTG undefined, which is required for DRD mode. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-plat-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. Error: /lib/modules/4.14.40-rt29-gd5443cbd3b/modules.dep seems to be valid, but xhci-hcd.ko is not loaded. Please provide /proc/config.gz and /lib/module/4.14.40-rt29-gd5443cbd3b/* for further investigation. ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@48890000: otg, disabled ./chkusb.sh: line 320: warning: command substitution: ignored null byte in input ./chkusb.sh: line 321: warning: command substitution: ignored null byte in input usb@488d0000: peripheral, okay Gadget Kernel Config: g_zero is enabled Gadget Kernel Config: g_audio is enabled Gadget Kernel Config: g_ether is enabled Gadget Kernel Config: g_ncm is enabled Gadget Kernel Config: g_mass_storage is enabled Gadget Kernel Config: g_serial is enabled Gadget Kernel Config: g_printer is enabled gadget driver loaded: (none) The list of USB gadget drivers installed: /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/: function/ legacy/ libcomposite.ko udc/ /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/function: u_audio.ko u_ether.ko u_serial.ko usb_f_acm.ko usb_f_ecm.ko usb_f_ecm_subset.ko usb_f_eem.ko usb_f_fs.ko usb_f_hid.ko usb_f_mass_storage.ko usb_f_midi.ko usb_f_ncm.ko usb_f_obex.ko usb_f_printer.ko usb_f_rndis.ko usb_f_serial.ko usb_f_ss_lb.ko usb_f_uac1.ko usb_f_uac2.ko usb_f_uvc.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/legacy: g_acm_ms.ko g_audio.ko g_cdc.ko g_dbgp.ko g_ether.ko g_ffs.ko g_hid.ko g_mass_storage.ko g_midi.ko g_multi.ko g_ncm.ko g_printer.ko g_serial.ko g_webcam.ko g_zero.ko gadgetfs.ko /lib/modules/4.14.40-rt29-gd5443cbd3b/kernel/drivers/usb/gadget/udc: udc-core.ko root@am57xx-evm:~# root@am57xx-evm:~# root@am57xx-evm:~# CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.7 | VT102 | Offline | ttyUSB0
I did grep the kernel message for "usb" and "dwc3".
Also I run the script "./chkusb.sh" and check "/sys/class/udc" directory before and after "modprobe g_ether".
Hope this help.
Billa
Hello,
could you post your complete DTB file which you are using to boot ?
Cheers,
--Prabhakar Lad
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.14.40-rt29-gd5443cbd3b (bridge@PC932) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #5 SMP PREEMPT RT Mon Oct 29 08:43:33 CET 2018 [ 0.000000] CPU: ARMv7 Processor [412fc0f2] revision 2 (ARMv7), cr=30c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache [ 0.000000] OF: fdt: Machine model: TI DRA718 EVM [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] Reserved memory: created CMA memory pool at 0x0000000095800000, size 56 MiB [ 0.000000] OF: reserved mem: initialized node ipu2-memory@95800000, compatible id shared-dma-pool [ 0.000000] Reserved memory: created CMA memory pool at 0x0000000099000000, size 64 MiB [ 0.000000] OF: reserved mem: initialized node dsp1-memory@99000000, compatible id shared-dma-pool [ 0.000000] Reserved memory: created CMA memory pool at 0x000000009d000000, size 32 MiB [ 0.000000] OF: reserved mem: initialized node ipu1-memory@9d000000, compatible id shared-dma-pool [ 0.000000] cma: Reserved 24 MiB at 0x0000000094000000 [ 0.000000] OMAP4: Map 0x000000009fd00000 to fe600000 for dram barrier [ 0.000000] On node 0 totalpages: 130304 [ 0.000000] free_area_init_node: node 0, pgdat c10579c0, node_mem_map df77f000 [ 0.000000] DMA zone: 1146 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 130304 pages, LIFO batch:31 [ 0.000000] DRA722 ES2.1 [ 0.000000] percpu: Embedded 15 pages/cpu @dfc33000 s31968 r8192 d21280 u61440 [ 0.000000] pcpu-alloc: s31968 r8192 d21280 u61440 alloc=15*4096 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 129158 [ 0.000000] Kernel command line: console=ttyO2,115200n8 root=/dev/nfs nfsroot=10.3.33.185:/home/bridge/SDK-Bridge/ti-processor-sdk-linux-rt-am57xx-evm-05.00.00.15/targetNFS,nolock rw ip=10.3.33.186:10.3.33.185::255.255.248.0:::off [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 319708K/521216K available (8192K kernel code, 357K rwdata, 2476K rodata, 2048K init, 347K bss, 21284K reserved, 180224K cma-reserved, 0K highmem) [ 0.000000] Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xe0000000 - 0xff800000 ( 504 MB) lowmem : 0xc0000000 - 0xdfd00000 ( 509 MB) pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) modules : 0xbf000000 - 0xbfe00000 ( 14 MB) .text : 0xc0008000 - 0xc0a00000 (10208 kB) .init : 0xc0e00000 - 0xc1000000 (2048 kB) .data : 0xc1000000 - 0xc1059620 ( 358 kB) .bss : 0xc105b000 - 0xc10b1d84 ( 348 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1. [ 0.000000] RCU priority boosting: priority 1 delay 500 ms. [ 0.000000] No expedited grace period (rcu_normal_after_boot). [ 0.000000] Tasks RCU enabled. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1 [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] OMAP clockevent source: timer1 at 32786 Hz [ 0.000000] arch_timer: cp15 timer(s) running at 6.14MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x16af5adb9, max_idle_ns: 440795202250 ns [ 0.000005] sched_clock: 56 bits at 6MHz, resolution 162ns, wraps every 4398046511023ns [ 0.000012] Switching to timer-based delay loop, resolution 162ns [ 0.000345] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns [ 0.000347] OMAP clocksource: 32k_counter at 32768 Hz [ 0.000862] Console: colour dummy device 80x30 [ 0.000982] WARNING: Your 'console=ttyO2' has been replaced by 'ttyS2' [ 0.000984] This ensures that you still see kernel messages. Please [ 0.000986] update your kernel commandline. [ 0.000998] Calibrating delay loop (skipped), value calculated using timer frequency.. 12.29 BogoMIPS (lpj=61475) [ 0.001005] pid_max: default: 32768 minimum: 301 [ 0.001123] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.001130] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.001739] CPU: Testing write buffer coherency: ok [ 0.001977] /cpus/cpu@0 missing clock-frequency property [ 0.002009] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.039882] Setting up static identity map for 0x80200000 - 0x80200060 [ 0.079876] Hierarchical SRCU implementation. [ 0.140349] EFI services will not be available. [ 0.160009] smp: Bringing up secondary CPUs ... [ 0.160019] smp: Brought up 1 node, 1 CPU [ 0.160029] SMP: Total of 1 processors activated (12.29 BogoMIPS). [ 0.160036] CPU: All CPU(s) started in HYP mode. [ 0.160042] CPU: Virtualization extensions available. [ 0.160595] devtmpfs: initialized [ 0.195063] random: get_random_u32 called from bucket_table_alloc+0x14c/0x288 with crng_init=0 [ 0.200218] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0 [ 0.200476] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.200496] futex hash table entries: 256 (order: 2, 16384 bytes) [ 0.204401] pinctrl core: initialized pinctrl subsystem [ 0.205223] DMI not present or invalid. [ 0.205674] NET: Registered protocol family 16 [ 0.208153] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.209032] omap_hwmod: l3_main_2 using broken dt data from ocp [ 0.414957] gpio gpiochip0: (gpio): added GPIO chardev (254:0) [ 0.415068] gpiochip_setup_dev: registered GPIOs 0 to 31 on device: gpiochip0 (gpio) [ 0.415338] OMAP GPIO hardware version 0.1 [ 0.416261] gpio gpiochip1: (gpio): added GPIO chardev (254:1) [ 0.416371] gpiochip_setup_dev: registered GPIOs 32 to 63 on device: gpiochip1 (gpio) [ 0.417415] gpio gpiochip2: (gpio): added GPIO chardev (254:2) [ 0.417520] gpiochip_setup_dev: registered GPIOs 64 to 95 on device: gpiochip2 (gpio) [ 0.418575] gpio gpiochip3: (gpio): added GPIO chardev (254:3) [ 0.418685] gpiochip_setup_dev: registered GPIOs 96 to 127 on device: gpiochip3 (gpio) [ 0.419732] gpio gpiochip4: (gpio): added GPIO chardev (254:4) [ 0.419842] gpiochip_setup_dev: registered GPIOs 128 to 159 on device: gpiochip4 (gpio) [ 0.421048] gpio gpiochip5: (gpio): added GPIO chardev (254:5) [ 0.421157] gpiochip_setup_dev: registered GPIOs 160 to 191 on device: gpiochip5 (gpio) [ 0.422237] gpio gpiochip6: (gpio): added GPIO chardev (254:6) [ 0.422342] gpiochip_setup_dev: registered GPIOs 192 to 223 on device: gpiochip6 (gpio) [ 0.423398] gpio gpiochip7: (gpio): added GPIO chardev (254:7) [ 0.423509] gpiochip_setup_dev: registered GPIOs 224 to 255 on device: gpiochip7 (gpio) [ 0.447654] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. [ 0.447667] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.448138] omap4_sram_init:Unable to allocate sram needed to handle errata I688 [ 0.448149] omap4_sram_init:Unable to get sram pool needed to handle errata I688 [ 0.449490] OMAP DMA hardware revision 0.0 [ 0.504477] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported) [ 0.507002] edma 43300000.edma: memcpy is disabled [ 0.513045] edma 43300000.edma: TI EDMA DMA engine driver [ 0.513712] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm12v0[0]' [ 0.514069] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm5v0[0]' [ 0.514155] evm_5v0: supplied by evm_12v0 [ 0.514582] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm_3v6[0]' [ 0.514643] evm_3v6: supplied by evm_5v0 [ 0.515062] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-vsys3v3[0]' [ 0.515127] vsys_3v3: supplied by evm_12v0 [ 0.515547] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm_3v3[0]' [ 0.515610] evm_3v3: supplied by vsys_3v3 [ 0.516026] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-aic_dvdd[0]' [ 0.516090] aic_dvdd: supplied by evm_3v3 [ 0.516678] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator-mmcwl[0]' - status (0) [ 0.517078] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-evm_1v8[0]' [ 0.517839] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/gpio-regulator-TPS74801[0]' [ 0.517888] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-regulator-TPS74801[0]' - status (0) [ 0.517945] vddshv8: invalid voltage constraints [ 0.517960] gpio-regulator gpio-regulator-TPS74801: Failed to register regulator: -22 [ 0.518051] gpio-regulator: probe of gpio-regulator-TPS74801 failed with error -22 [ 0.521548] omap-iommu 40d01000.mmu: 40d01000.mmu registered [ 0.522057] omap-iommu 40d02000.mmu: 40d02000.mmu registered [ 0.522663] omap-iommu 58882000.mmu: 58882000.mmu registered [ 0.523264] omap-iommu 55082000.mmu: 55082000.mmu registered [ 0.523838] iommu: Adding device 58820000.ipu to group 1 [ 0.524028] iommu: Adding device 55020000.ipu to group 2 [ 0.524367] iommu: Adding device 40800000.dsp to group 0 [ 0.526369] media: Linux media interface: v0.10 [ 0.526419] Linux video capture interface: v2.00 [ 0.526536] pps_core: LinuxPPS API ver. 1 registered [ 0.526545] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.526568] PTP clock support registered [ 0.526610] EDAC MC: Ver: 3.0.0 [ 0.530804] dmi: Firmware registration failed. [ 0.531382] omap-mailbox 48840000.mailbox: omap mailbox rev 0x400 [ 0.531674] omap-mailbox 48842000.mailbox: omap mailbox rev 0x400 [ 0.532233] Advanced Linux Sound Architecture Driver Initialized. [ 0.540865] clocksource: Switched to clocksource arch_sys_counter [ 0.554299] NET: Registered protocol family 2 [ 0.555147] TCP established hash table entries: 4096 (order: 2, 16384 bytes) [ 0.555199] TCP bind hash table entries: 4096 (order: 4, 114688 bytes) [ 0.555323] TCP: Hash tables configured (established 4096 bind 4096) [ 0.555422] UDP hash table entries: 256 (order: 2, 16384 bytes) [ 0.555455] UDP-Lite hash table entries: 256 (order: 2, 16384 bytes) [ 0.555704] NET: Registered protocol family 1 [ 0.576238] RPC: Registered named UNIX socket transport module. [ 0.576251] RPC: Registered udp transport module. [ 0.576260] RPC: Registered tcp transport module. [ 0.576269] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.576283] PCI: CLS 0 bytes, default 64 [ 0.577627] hw perfevents: no interrupt-affinity property for /pmu, guessing. [ 0.577844] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available [ 0.579678] workingset: timestamp_bits=14 max_order=17 bucket_order=3 [ 0.587722] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.598634] NFS: Registering the id_resolver key type [ 0.598667] Key type id_resolver registered [ 0.598676] Key type id_legacy registered [ 0.598749] ntfs: driver 2.1.32 [Flags: R/O]. [ 0.601279] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245) [ 0.601294] io scheduler noop registered [ 0.601304] io scheduler deadline registered [ 0.601455] io scheduler cfq registered (default) [ 0.601467] io scheduler mq-deadline registered [ 0.601477] io scheduler kyber registered [ 0.607598] pinctrl-single 4a003400.pinmux: 282 pins at pa fc003400 size 1128 [ 0.607849] pinctrl-single 4a002e8c.pinmux: please update dts to use #pinctrl-cells = <1> [ 0.607940] pinctrl-single 4a002e8c.pinmux: initialized with no interrupts [ 0.607952] pinctrl-single 4a002e8c.pinmux: 1 pins at pa fc002e8c size 4 [ 0.703228] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled [ 0.707843] 4806a000.serial: ttyS0 at MMIO 0x4806a000 (irq = 43, base_baud = 3000000) is a 8250 [ 0.709582] 48020000.serial: ttyS2 at MMIO 0x48020000 (irq = 44, base_baud = 3000000) is a 8250 [ 1.616533] console [ttyS2] enabled [ 1.621853] 48068000.serial: ttyS5 at MMIO 0x48068000 (irq = 45, base_baud = 3000000) is a 8250 [ 1.633262] omap_rng 48090000.rng: Random Number Generator ver. 20 [ 1.657888] brd: module loaded [ 1.672503] loop: module loaded [ 1.681113] m25p80 spi0.0: found n25q256a, expected s25fl256s1 [ 1.687476] m25p80 spi0.0: n25q256a (32768 Kbytes) [ 1.692375] 10 ofpart partitions found on MTD device spi0.0 [ 1.697973] Creating 10 MTD partitions on "spi0.0": [ 1.702877] 0x000000000000-0x000000010000 : "QSPI.SPL" [ 1.709246] 0x000000010000-0x000000020000 : "QSPI.SPL.backup1" [ 1.716236] 0x000000020000-0x000000030000 : "QSPI.SPL.backup2" [ 1.723245] 0x000000030000-0x000000040000 : "QSPI.SPL.backup3" [ 1.730228] 0x000000040000-0x000000140000 : "QSPI.u-boot" [ 1.736778] 0x000000140000-0x0000001c0000 : "QSPI.u-boot-spl-os" [ 1.743947] 0x0000001c0000-0x0000001d0000 : "QSPI.u-boot-env" [ 1.750839] 0x0000001d0000-0x0000001e0000 : "QSPI.u-boot-env.backup1" [ 1.758455] 0x0000001e0000-0x0000009e0000 : "QSPI.kernel" [ 1.765024] 0x0000009e0000-0x000002000000 : "QSPI.file-system" [ 1.772976] mdio_bus fixed-0: GPIO lookup for consumer reset [ 1.772984] mdio_bus fixed-0: using lookup tables for GPIO lookup [ 1.772991] mdio_bus fixed-0: lookup for GPIO reset failed [ 1.773017] libphy: Fixed MDIO Bus: probed [ 1.781383] mdio_bus 48485000.mdio: GPIO lookup for consumer reset [ 1.781391] mdio_bus 48485000.mdio: using device tree for GPIO lookup [ 1.781433] of_get_named_gpiod_flags: parsed 'reset-gpios' property of node '/ocp/ethernet@48484000/mdio@48485000[0]' - status (0) [ 1.781490] mdio_bus 48485000.mdio: GPIO lookup for consumer reset [ 1.781497] mdio_bus 48485000.mdio: using device tree for GPIO lookup [ 1.781523] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/ethernet@48484000/mdio@48485000[1]' [ 1.781533] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/ethernet@48484000/mdio@48485000[1]' [ 1.781540] mdio_bus 48485000.mdio: using lookup tables for GPIO lookup [ 1.781547] mdio_bus 48485000.mdio: lookup for GPIO reset failed [ 1.840910] davinci_mdio 48485000.mdio: davinci mdio revision 1.6, bus freq 1000000 [ 1.848607] libphy: 48485000.mdio: probed [ 1.865480] davinci_mdio 48485000.mdio: phy[0]: device 48485000.mdio:00, driver TI DP83822 10/100 Mbps PHY [ 1.875914] cpsw 48484000.ethernet: Detected MACID = 00:a0:de:ad:be:ef [ 1.882478] cpsw 48484000.ethernet: GMAC port 0 [ 1.887125] cpsw 48484000.ethernet: initialized cpsw ale version 1.4 [ 1.893512] cpsw 48484000.ethernet: ALE Table size 1024 [ 1.898774] cpsw 48484000.ethernet: device node lookup for pps timer failed [ 1.905808] cpsw 48484000.ethernet: cpts: overflow check period 500 (jiffies) [ 1.914777] net eth0: rpmsg goose driver init: 0 [ 1.919498] net eth0: ocmc rxbuf: pa x40300000 va e1100000 size 0xe000 [ 1.926779] i2c /dev entries driver [ 1.931559] IR NEC protocol handler initialized [ 1.936114] IR RC5(x/sz) protocol handler initialized [ 1.941189] IR RC6 protocol handler initialized [ 1.945742] IR JVC protocol handler initialized [ 1.950296] IR Sony protocol handler initialized [ 1.955301] IR SANYO protocol handler initialized [ 1.960028] IR Sharp protocol handler initialized [ 1.964755] IR MCE Keyboard/mouse protocol handler initialized [ 1.970616] IR XMP protocol handler initialized [ 1.975564] poweroff-gpio gpio-poweroff: GPIO lookup for consumer (null) [ 1.975571] poweroff-gpio gpio-poweroff: using device tree for GPIO lookup [ 1.975615] of_get_named_gpiod_flags: parsed 'gpios' property of node '/gpio-poweroff[0]' - status (0) [ 1.981459] sdhci: Secure Digital Host Controller Interface driver [ 1.987671] sdhci: Copyright(c) Pierre Ossman [ 1.992942] sdhci-pltfm: SDHCI platform and OF driver helper [ 2.000166] sdhci-omap 480b4000.mmc: GPIO lookup for consumer cd [ 2.000174] sdhci-omap 480b4000.mmc: using device tree for GPIO lookup [ 2.000185] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/mmc@480b4000[0]' [ 2.000194] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/mmc@480b4000[0]' [ 2.000201] sdhci-omap 480b4000.mmc: using lookup tables for GPIO lookup [ 2.000209] sdhci-omap 480b4000.mmc: lookup for GPIO cd failed [ 2.000218] sdhci-omap 480b4000.mmc: GPIO lookup for consumer wp [ 2.000224] sdhci-omap 480b4000.mmc: using device tree for GPIO lookup [ 2.000233] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@480b4000[0]' [ 2.000241] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@480b4000[0]' [ 2.000247] sdhci-omap 480b4000.mmc: using lookup tables for GPIO lookup [ 2.000254] sdhci-omap 480b4000.mmc: lookup for GPIO wp failed [ 2.060911] mmc0: SDHCI controller on 480b4000.mmc [480b4000.mmc] using ADMA [ 2.080643] NET: Registered protocol family 10 [ 2.096697] Segment Routing with IPv6 [ 2.100487] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 2.107264] NET: Registered protocol family 17 [ 2.112213] Key type dns_resolver registered [ 2.116755] omap_voltage_late_init: Voltage driver support not added [ 2.121292] ti-iodelay 4844a000.padconf: Set reg 0x18c Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121303] ti-iodelay 4844a000.padconf: Set reg 0x1a4 Delay(a: 119 g: 0), Elements(C=0 F=3)0x29003 [ 2.121313] ti-iodelay 4844a000.padconf: Set reg 0x1b0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121323] ti-iodelay 4844a000.padconf: Set reg 0x1bc Delay(a: 18 g: 0), Elements(C=0 F=0)0x29000 [ 2.121332] ti-iodelay 4844a000.padconf: Set reg 0x1c8 Delay(a: 894 g: 0), Elements(C=2 F=0)0x29040 [ 2.121341] ti-iodelay 4844a000.padconf: Set reg 0x1d4 Delay(a: 30 g: 0), Elements(C=0 F=0)0x29000 [ 2.121350] ti-iodelay 4844a000.padconf: Set reg 0x1e0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121358] ti-iodelay 4844a000.padconf: Set reg 0x1ec Delay(a: 23 g: 0), Elements(C=0 F=0)0x29000 [ 2.121367] ti-iodelay 4844a000.padconf: Set reg 0x1f8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121375] ti-iodelay 4844a000.padconf: Set reg 0x360 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121384] ti-iodelay 4844a000.padconf: Set reg 0x194 Delay(a: 152 g: 0), Elements(C=0 F=4)0x29004 [ 2.121392] ti-iodelay 4844a000.padconf: Set reg 0x1ac Delay(a: 206 g: 0), Elements(C=0 F=6)0x29006 [ 2.121401] ti-iodelay 4844a000.padconf: Set reg 0x1b8 Delay(a: 78 g: 0), Elements(C=0 F=2)0x29002 [ 2.121409] ti-iodelay 4844a000.padconf: Set reg 0x1c4 Delay(a: 2 g: 0), Elements(C=0 F=0)0x29000 [ 2.121417] ti-iodelay 4844a000.padconf: Set reg 0x1d0 Delay(a: 266 g: 0), Elements(C=0 F=8)0x29008 [ 2.121426] ti-iodelay 4844a000.padconf: Set reg 0x1dc Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121434] ti-iodelay 4844a000.padconf: Set reg 0x1e8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121443] ti-iodelay 4844a000.padconf: Set reg 0x1f4 Delay(a: 43 g: 0), Elements(C=0 F=1)0x29001 [ 2.121451] ti-iodelay 4844a000.padconf: Set reg 0x200 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121483] ti-iodelay 4844a000.padconf: Set reg 0x368 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121492] ti-iodelay 4844a000.padconf: Set reg 0x190 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121500] ti-iodelay 4844a000.padconf: Set reg 0x1a8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121509] ti-iodelay 4844a000.padconf: Set reg 0x1b4 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121517] ti-iodelay 4844a000.padconf: Set reg 0x1c0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121525] ti-iodelay 4844a000.padconf: Set reg 0x1d8 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121533] ti-iodelay 4844a000.padconf: Set reg 0x1e4 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121542] ti-iodelay 4844a000.padconf: Set reg 0x1f0 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121550] ti-iodelay 4844a000.padconf: Set reg 0x1fc Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121559] ti-iodelay 4844a000.padconf: Set reg 0x364 Delay(a: 0 g: 0), Elements(C=0 F=0)0x29000 [ 2.121637] mmc0: new DDR MMC card at address 0001 [ 2.124453] mmcblk0: mmc0:0001 P1XXXX 7.20 GiB [ 2.126342] mmcblk0boot0: mmc0:0001 P1XXXX partition 1 16.0 MiB [ 2.128023] mmcblk0boot1: mmc0:0001 P1XXXX partition 2 16.0 MiB [ 2.129915] mmcblk0rpmb: mmc0:0001 P1XXXX partition 3 128 KiB [ 2.131424] mmcblk0: p1 p2 p3 p4 < > [ 2.418868] Power Management for TI OMAP4+ devices. [ 2.424134] Registering SWP/SWPB emulation handler [ 2.471839] dmm 4e000000.dmm: workaround for errata i878 in use [ 2.480645] dmm 4e000000.dmm: initialized all PAT entries [ 2.490687] hctosys: unable to open rtc device (rtc0) [ 2.497341] net eth0: initializing cpsw version 1.15 (0) [ 2.604091] TI DP83822 10/100 Mbps PHY 48485000.mdio:00: attached PHY driver [TI DP83822 10/100 Mbps PHY] (mii_bus:phy_addr=48485000.mdio:00, irq=POLL) [ 2.620339] cpts ptp bc clkid 0 [ 2.628944] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 4.726454] cpsw 48484000.ethernet eth0: Link is Up - 100Mbps/Half - flow control off [ 4.730920] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 4.760890] IP-Config: Complete: [ 4.764139] device=eth0, hwaddr=00:a0:de:ad:be:ef, ipaddr=10.3.33.186, mask=255.255.248.0, gw=255.255.255.255 [ 4.774574] host=10.3.33.186, domain=, nis-domain=(none) [ 4.780350] bootserver=10.3.33.185, rootserver=10.3.33.185, rootpath= [ 4.788737] aic_dvdd: disabling [ 4.791902] vmmcwl_fixed: disabling [ 4.795418] pbias_mmc_omap5: disabling [ 4.799201] ALSA device list: [ 4.802184] No soundcards found. [ 4.828941] VFS: Mounted root (nfs filesystem) on device 0:14. [ 4.836185] devtmpfs: mounted [ 4.842432] Freeing unused kernel memory: 2048K [ 5.282831] systemd[1]: System time before build time, advancing clock. [ 5.353444] systemd[1]: systemd 234 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN default-hierarchy=hybrid) [ 5.375162] systemd[1]: Detected architecture arm. [ 5.412434] systemd[1]: Set hostname to <am57xx-evm>. [ 6.427903] random: systemd: uninitialized urandom read (16 bytes read) [ 6.435192] systemd[1]: Listening on Journal Socket. [ 6.471123] random: systemd: uninitialized urandom read (16 bytes read) [ 6.478093] systemd[1]: Listening on Journal Socket (/dev/log). [ 6.511047] random: systemd: uninitialized urandom read (16 bytes read) [ 6.518126] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. [ 6.567038] systemd[1]: Created slice User and Session Slice. [ 6.601282] systemd[1]: Listening on udev Kernel Socket. [ 6.641743] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [ 6.681481] systemd[1]: Listening on udev Control Socket. [ 7.485040] cmemk: loading out-of-tree module taints kernel. [ 7.499247] CMEMK module: reference Linux version 4.14.40 [ 7.510091] cmemk initialized [ 7.543956] cryptodev: driver 1.9 loaded. [ 7.618521] usbcore: registered new interface driver usbfs [ 7.626660] usbcore: registered new interface driver hub [ 7.638856] usbcore: registered new device driver usb [ 7.656818] usbcore: registered new interface driver usbserial [ 8.696865] systemd-journald[95]: Received request to flush runtime journal from PID 1 [ 11.097367] omap-rproc 58820000.ipu: assigned reserved memory node ipu1-memory@9d000000 [ 11.161165] remoteproc remoteproc0: 58820000.ipu is available [ 11.207592] remoteproc remoteproc0: Direct firmware load for dra7-ipu1-fw.xem4 failed with error -2 [ 11.216418] omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000 [ 11.219229] remoteproc remoteproc1: 55020000.ipu is available [ 11.228178] omap-rproc 40800000.dsp: assigned reserved memory node dsp1-memory@99000000 [ 11.239356] remoteproc remoteproc2: 40800000.dsp is available [ 11.516335] remoteproc remoteproc0: powering up 58820000.ipu [ 11.566955] remoteproc remoteproc0: Direct firmware load for dra7-ipu1-fw.xem4 failed with error -2 [ 11.667233] remoteproc remoteproc0: request_firmware failed: -2 [ 11.740066] remoteproc remoteproc2: Direct firmware load for dra7-dsp1-fw.xe66 failed with error -2 [ 11.818909] remoteproc remoteproc2: powering up 40800000.dsp [ 11.899983] remoteproc remoteproc2: Direct firmware load for dra7-dsp1-fw.xe66 failed with error -2 [ 11.981533] remoteproc remoteproc2: request_firmware failed: -2 [ 12.652793] CAN device driver interface [ 12.950750] omap-des 480a5000.des: OMAP DES hw accel rev: 2.2 [ 12.987677] omap-des 480a5000.des: will run requests pump with realtime priority [ 13.125108] c_can_platform 48480000.can: c_can_platform device registered (regs=fa480000, irq=83) [ 13.643967] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin [ 13.761224] vpe 489d0000.vpe: Device registered as /dev/video0 [ 13.885222] remoteproc remoteproc1: powering up 55020000.ipu [ 13.893269] remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3743076 [ 13.936743] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1 [ 14.707802] virtio_rpmsg_bus virtio0: rpmsg host is online [ 14.722155] remoteproc remoteproc1: registered virtio0 (type 7) [ 14.747389] remoteproc remoteproc1: remote processor 55020000.ipu is now up [ 14.773473] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x65 [ 14.784900] virtio_rpmsg_bus virtio0: creating channel rpmsg-rpc addr 0x66 [ 14.830829] omap-sham 4b101000.sham: hw accel on OMAP rev 4.3 [ 14.982017] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec [ 15.014777] omap-aes 4b500000.aes: OMAP AES hw accel rev: 3.3 [ 15.061012] omap-aes 4b500000.aes: will run requests pump with realtime priority [ 15.203015] omap-aes 4b700000.aes: OMAP AES hw accel rev: 3.3 [ 15.239126] omap-aes 4b700000.aes: will run requests pump with realtime priority [ 16.601652] extcon-usb-gpio extcon_usb2: GPIO lookup for consumer id [ 16.601663] extcon-usb-gpio extcon_usb2: using device tree for GPIO lookup [ 16.601675] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/extcon_usb2[0]' [ 16.601684] of_get_named_gpiod_flags: can't parse 'id-gpio' property of node '/extcon_usb2[0]' [ 16.601691] extcon-usb-gpio extcon_usb2: using lookup tables for GPIO lookup [ 16.601699] extcon-usb-gpio extcon_usb2: lookup for GPIO id failed [ 16.601707] extcon-usb-gpio extcon_usb2: GPIO lookup for consumer vbus [ 16.601714] extcon-usb-gpio extcon_usb2: using device tree for GPIO lookup [ 16.601723] of_get_named_gpiod_flags: can't parse 'vbus-gpios' property of node '/extcon_usb2[0]' [ 16.609969] of_get_named_gpiod_flags: parsed 'vbus-gpio' property of node '/extcon_usb2[0]' - status (0) [ 16.618105] omap_gpio 48057000.gpio: Could not set line 30 debounce to 20000 microseconds (-22) [ 20.603019] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. [ 20.628670] EXT4-fs (mmcblk0p2): mounting ext3 file system using the ext4 subsystem [ 20.739168] EXT4-fs (mmcblk0p2): recovery complete [ 20.739202] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 26.754988] rpmsg_rpc virtio0.rpmsg-rpc.-1.101: probing service dce-callback with src 1024 dst 101 [ 26.771889] dwc3 488d0000.usb: failed to initialize core [ 26.822746] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1 [ 26.856529] rpmsg_rpc virtio0.rpmsg-rpc.-1.102: probing service rpmsg-dce with src 1025 dst 102 [ 26.865662] dwc3 488d0000.usb: failed to initialize core [ 26.880426] rpmsg_rpc virtio0.rpmsg-rpc.-1.101: published functions = 4 [ 26.949036] rpmsg_rpc virtio0.rpmsg-rpc.-1.102: published functions = 9 [ 27.011745] dwc3 488d0000.usb: failed to initialize core [ 36.788168] NET: Registered protocol family 15 [ 37.164529] Initializing XFRM netlink socket [ 126.318826] udc-core: couldn't find an available UDC - added [g_ether] to list of pending drivers
/** * core.c - DesignWare USB3 DRD Controller Core file * * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com * * Authors: Felipe Balbi <balbi@ti.com>, * Sebastian Andrzej Siewior <bigeasy@linutronix.de> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 of * the License as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <linux/version.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/slab.h> #include <linux/spinlock.h> #include <linux/platform_device.h> #include <linux/pm_runtime.h> #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/io.h> #include <linux/list.h> #include <linux/delay.h> #include <linux/dma-mapping.h> #include <linux/of.h> #include <linux/acpi.h> #include <linux/pinctrl/consumer.h> #include <linux/usb/ch9.h> #include <linux/usb/gadget.h> #include <linux/usb/of.h> #include <linux/usb/otg.h> #include "core.h" #include "gadget.h" #include "io.h" #include "debug.h" #define DWC3_DEFAULT_AUTOSUSPEND_DELAY 5000 /* ms */ /** * dwc3_get_dr_mode - Validates and sets dr_mode * @dwc: pointer to our context structure */ static int dwc3_get_dr_mode(struct dwc3 *dwc) { enum usb_dr_mode mode; struct device *dev = dwc->dev; unsigned int hw_mode; if (dwc->dr_mode == USB_DR_MODE_UNKNOWN) dwc->dr_mode = USB_DR_MODE_OTG; mode = dwc->dr_mode; hw_mode = DWC3_GHWPARAMS0_MODE(dwc->hwparams.hwparams0); switch (hw_mode) { case DWC3_GHWPARAMS0_MODE_GADGET: if (IS_ENABLED(CONFIG_USB_DWC3_HOST)) { dev_err(dev, "Controller does not support host mode.\n"); return -EINVAL; } mode = USB_DR_MODE_PERIPHERAL; break; case DWC3_GHWPARAMS0_MODE_HOST: if (IS_ENABLED(CONFIG_USB_DWC3_GADGET)) { dev_err(dev, "Controller does not support device mode.\n"); return -EINVAL; } mode = USB_DR_MODE_HOST; break; default: if (IS_ENABLED(CONFIG_USB_DWC3_HOST)) mode = USB_DR_MODE_HOST; else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET)) mode = USB_DR_MODE_PERIPHERAL; } if (mode != dwc->dr_mode) { dev_warn(dev, "Configuration mismatch. dr_mode forced to %s\n", mode == USB_DR_MODE_HOST ? "host" : "gadget"); dwc->dr_mode = mode; } return 0; } void dwc3_set_prtcap(struct dwc3 *dwc, u32 mode) { u32 reg; reg = dwc3_readl(dwc->regs, DWC3_GCTL); reg &= ~(DWC3_GCTL_PRTCAPDIR(DWC3_GCTL_PRTCAP_OTG)); reg |= DWC3_GCTL_PRTCAPDIR(mode); dwc3_writel(dwc->regs, DWC3_GCTL, reg); dwc->current_dr_role = mode; } static void __dwc3_set_mode(struct work_struct *work) { struct dwc3 *dwc = work_to_dwc(work); unsigned long flags; int ret; if (dwc->dr_mode != USB_DR_MODE_OTG) return; if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_OTG) dwc3_otg_update(dwc, 0); if (!dwc->desired_dr_role) return; if (dwc->desired_dr_role == dwc->current_dr_role) return; if (dwc->desired_dr_role == DWC3_GCTL_PRTCAP_OTG && dwc->edev) return; if (dwc->desired_dr_role == DWC3_GCTL_PRTCAP_OTG) return; switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_HOST: dwc3_host_exit(dwc); break; case DWC3_GCTL_PRTCAP_DEVICE: dwc3_gadget_exit(dwc); dwc3_event_buffers_cleanup(dwc); break; case DWC3_GCTL_PRTCAP_OTG: dwc3_otg_exit(dwc); spin_lock_irqsave(&dwc->lock, flags); dwc->desired_otg_role = DWC3_OTG_ROLE_IDLE; spin_unlock_irqrestore(&dwc->lock, flags); dwc3_otg_update(dwc, 1); break; default: break; } spin_lock_irqsave(&dwc->lock, flags); dwc3_set_prtcap(dwc, dwc->desired_dr_role); spin_unlock_irqrestore(&dwc->lock, flags); switch (dwc->desired_dr_role) { case DWC3_GCTL_PRTCAP_HOST: ret = dwc3_host_init(dwc); if (ret) { dev_err(dwc->dev, "failed to initialize host\n"); } else { if (dwc->usb2_phy) otg_set_vbus(dwc->usb2_phy->otg, true); if (dwc->usb2_generic_phy) phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST); } break; case DWC3_GCTL_PRTCAP_DEVICE: dwc3_event_buffers_setup(dwc); if (dwc->usb2_phy) otg_set_vbus(dwc->usb2_phy->otg, false); if (dwc->usb2_generic_phy) phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_DEVICE); ret = dwc3_gadget_init(dwc); if (ret) dev_err(dwc->dev, "failed to initialize peripheral\n"); break; case DWC3_GCTL_PRTCAP_OTG: dwc3_otg_init(dwc); dwc3_otg_update(dwc, 0); break; default: break; } } void dwc3_set_mode(struct dwc3 *dwc, u32 mode) { unsigned long flags; spin_lock_irqsave(&dwc->lock, flags); dwc->desired_dr_role = mode; spin_unlock_irqrestore(&dwc->lock, flags); queue_work(system_freezable_wq, &dwc->drd_work); } u32 dwc3_core_fifo_space(struct dwc3_ep *dep, u8 type) { struct dwc3 *dwc = dep->dwc; u32 reg; dwc3_writel(dwc->regs, DWC3_GDBGFIFOSPACE, DWC3_GDBGFIFOSPACE_NUM(dep->number) | DWC3_GDBGFIFOSPACE_TYPE(type)); reg = dwc3_readl(dwc->regs, DWC3_GDBGFIFOSPACE); return DWC3_GDBGFIFOSPACE_SPACE_AVAILABLE(reg); } /** * dwc3_core_soft_reset - Issues core soft reset and PHY reset * @dwc: pointer to our context structure */ static int dwc3_core_soft_reset(struct dwc3 *dwc) { u32 reg; int retries = 1000; int ret; usb_phy_init(dwc->usb2_phy); usb_phy_init(dwc->usb3_phy); ret = phy_init(dwc->usb2_generic_phy); if (ret < 0) return ret; ret = phy_init(dwc->usb3_generic_phy); if (ret < 0) { phy_exit(dwc->usb2_generic_phy); return ret; } /* * We're resetting only the device side because, if we're in host mode, * XHCI driver will reset the host block. If dwc3 was configured for * host-only mode, then we can return early. */ if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_HOST) return 0; reg = dwc3_readl(dwc->regs, DWC3_DCTL); reg |= DWC3_DCTL_CSFTRST; dwc3_writel(dwc->regs, DWC3_DCTL, reg); do { reg = dwc3_readl(dwc->regs, DWC3_DCTL); if (!(reg & DWC3_DCTL_CSFTRST)) return 0; udelay(1); } while (--retries); return -ETIMEDOUT; } /* * dwc3_frame_length_adjustment - Adjusts frame length if required * @dwc3: Pointer to our controller context structure */ static void dwc3_frame_length_adjustment(struct dwc3 *dwc) { u32 reg; u32 dft; if (dwc->revision < DWC3_REVISION_250A) return; if (dwc->fladj == 0) return; reg = dwc3_readl(dwc->regs, DWC3_GFLADJ); dft = reg & DWC3_GFLADJ_30MHZ_MASK; if (!dev_WARN_ONCE(dwc->dev, dft == dwc->fladj, "request value same as default, ignoring\n")) { reg &= ~DWC3_GFLADJ_30MHZ_MASK; reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj; dwc3_writel(dwc->regs, DWC3_GFLADJ, reg); } } /** * dwc3_free_one_event_buffer - Frees one event buffer * @dwc: Pointer to our controller context structure * @evt: Pointer to event buffer to be freed */ static void dwc3_free_one_event_buffer(struct dwc3 *dwc, struct dwc3_event_buffer *evt) { dma_free_coherent(dwc->sysdev, evt->length, evt->buf, evt->dma); } /** * dwc3_alloc_one_event_buffer - Allocates one event buffer structure * @dwc: Pointer to our controller context structure * @length: size of the event buffer * * Returns a pointer to the allocated event buffer structure on success * otherwise ERR_PTR(errno). */ static struct dwc3_event_buffer *dwc3_alloc_one_event_buffer(struct dwc3 *dwc, unsigned length) { struct dwc3_event_buffer *evt; evt = devm_kzalloc(dwc->dev, sizeof(*evt), GFP_KERNEL); if (!evt) return ERR_PTR(-ENOMEM); evt->dwc = dwc; evt->length = length; evt->cache = devm_kzalloc(dwc->dev, length, GFP_KERNEL); if (!evt->cache) return ERR_PTR(-ENOMEM); evt->buf = dma_alloc_coherent(dwc->sysdev, length, &evt->dma, GFP_KERNEL); if (!evt->buf) return ERR_PTR(-ENOMEM); return evt; } /** * dwc3_free_event_buffers - frees all allocated event buffers * @dwc: Pointer to our controller context structure */ static void dwc3_free_event_buffers(struct dwc3 *dwc) { struct dwc3_event_buffer *evt; evt = dwc->ev_buf; if (evt) dwc3_free_one_event_buffer(dwc, evt); } /** * dwc3_alloc_event_buffers - Allocates @num event buffers of size @length * @dwc: pointer to our controller context structure * @length: size of event buffer * * Returns 0 on success otherwise negative errno. In the error case, dwc * may contain some buffers allocated but not all which were requested. */ static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length) { struct dwc3_event_buffer *evt; evt = dwc3_alloc_one_event_buffer(dwc, length); if (IS_ERR(evt)) { dev_err(dwc->dev, "can't allocate event buffer\n"); return PTR_ERR(evt); } dwc->ev_buf = evt; return 0; } /** * dwc3_event_buffers_setup - setup our allocated event buffers * @dwc: pointer to our controller context structure * * Returns 0 on success otherwise negative errno. */ int dwc3_event_buffers_setup(struct dwc3 *dwc) { struct dwc3_event_buffer *evt; evt = dwc->ev_buf; evt->lpos = 0; dwc3_writel(dwc->regs, DWC3_GEVNTADRLO(0), lower_32_bits(evt->dma)); dwc3_writel(dwc->regs, DWC3_GEVNTADRHI(0), upper_32_bits(evt->dma)); dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(0), DWC3_GEVNTSIZ_SIZE(evt->length)); dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 0); return 0; } void dwc3_event_buffers_cleanup(struct dwc3 *dwc) { struct dwc3_event_buffer *evt; evt = dwc->ev_buf; evt->lpos = 0; dwc3_writel(dwc->regs, DWC3_GEVNTADRLO(0), 0); dwc3_writel(dwc->regs, DWC3_GEVNTADRHI(0), 0); dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(0), DWC3_GEVNTSIZ_INTMASK | DWC3_GEVNTSIZ_SIZE(0)); dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(0), 0); } static int dwc3_alloc_scratch_buffers(struct dwc3 *dwc) { if (!dwc->has_hibernation) return 0; if (!dwc->nr_scratch) return 0; dwc->scratchbuf = kmalloc_array(dwc->nr_scratch, DWC3_SCRATCHBUF_SIZE, GFP_KERNEL); if (!dwc->scratchbuf) return -ENOMEM; return 0; } static int dwc3_setup_scratch_buffers(struct dwc3 *dwc) { dma_addr_t scratch_addr; u32 param; int ret; if (!dwc->has_hibernation) return 0; if (!dwc->nr_scratch) return 0; /* should never fall here */ if (!WARN_ON(dwc->scratchbuf)) return 0; scratch_addr = dma_map_single(dwc->sysdev, dwc->scratchbuf, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL); if (dma_mapping_error(dwc->sysdev, scratch_addr)) { dev_err(dwc->sysdev, "failed to map scratch buffer\n"); ret = -EFAULT; goto err0; } dwc->scratch_addr = scratch_addr; param = lower_32_bits(scratch_addr); ret = dwc3_send_gadget_generic_command(dwc, DWC3_DGCMD_SET_SCRATCHPAD_ADDR_LO, param); if (ret < 0) goto err1; param = upper_32_bits(scratch_addr); ret = dwc3_send_gadget_generic_command(dwc, DWC3_DGCMD_SET_SCRATCHPAD_ADDR_HI, param); if (ret < 0) goto err1; return 0; err1: dma_unmap_single(dwc->sysdev, dwc->scratch_addr, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL); err0: return ret; } static void dwc3_free_scratch_buffers(struct dwc3 *dwc) { if (!dwc->has_hibernation) return; if (!dwc->nr_scratch) return; /* should never fall here */ if (!WARN_ON(dwc->scratchbuf)) return; dma_unmap_single(dwc->sysdev, dwc->scratch_addr, dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE, DMA_BIDIRECTIONAL); kfree(dwc->scratchbuf); } static void dwc3_core_num_eps(struct dwc3 *dwc) { struct dwc3_hwparams *parms = &dwc->hwparams; dwc->num_eps = DWC3_NUM_EPS(parms); } static void dwc3_cache_hwparams(struct dwc3 *dwc) { struct dwc3_hwparams *parms = &dwc->hwparams; parms->hwparams0 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS0); parms->hwparams1 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS1); parms->hwparams2 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS2); parms->hwparams3 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS3); parms->hwparams4 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS4); parms->hwparams5 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS5); parms->hwparams6 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS6); parms->hwparams7 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS7); parms->hwparams8 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS8); } static int dwc3_core_ulpi_init(struct dwc3 *dwc) { int intf; int ret = 0; intf = DWC3_GHWPARAMS3_HSPHY_IFC(dwc->hwparams.hwparams3); if (intf == DWC3_GHWPARAMS3_HSPHY_IFC_ULPI || (intf == DWC3_GHWPARAMS3_HSPHY_IFC_UTMI_ULPI && dwc->hsphy_interface && !strncmp(dwc->hsphy_interface, "ulpi", 4))) ret = dwc3_ulpi_init(dwc); return ret; } /** * dwc3_phy_setup - Configure USB PHY Interface of DWC3 Core * @dwc: Pointer to our controller context structure * * Returns 0 on success. The USB PHY interfaces are configured but not * initialized. The PHY interfaces and the PHYs get initialized together with * the core in dwc3_core_init. */ static int dwc3_phy_setup(struct dwc3 *dwc) { u32 reg; reg = dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)); /* * Make sure UX_EXIT_PX is cleared as that causes issues with some * PHYs. Also, this bit is not supposed to be used in normal operation. */ reg &= ~DWC3_GUSB3PIPECTL_UX_EXIT_PX; /* * Above 1.94a, it is recommended to set DWC3_GUSB3PIPECTL_SUSPHY * to '0' during coreConsultant configuration. So default value * will be '0' when the core is reset. Application needs to set it * to '1' after the core initialization is completed. */ if (dwc->revision > DWC3_REVISION_194A) reg |= DWC3_GUSB3PIPECTL_SUSPHY; if (dwc->u2ss_inp3_quirk) reg |= DWC3_GUSB3PIPECTL_U2SSINP3OK; if (dwc->dis_rxdet_inp3_quirk) reg |= DWC3_GUSB3PIPECTL_DISRXDETINP3; if (dwc->req_p1p2p3_quirk) reg |= DWC3_GUSB3PIPECTL_REQP1P2P3; if (dwc->del_p1p2p3_quirk) reg |= DWC3_GUSB3PIPECTL_DEP1P2P3_EN; if (dwc->del_phy_power_chg_quirk) reg |= DWC3_GUSB3PIPECTL_DEPOCHANGE; if (dwc->lfps_filter_quirk) reg |= DWC3_GUSB3PIPECTL_LFPSFILT; if (dwc->rx_detect_poll_quirk) reg |= DWC3_GUSB3PIPECTL_RX_DETOPOLL; if (dwc->tx_de_emphasis_quirk) reg |= DWC3_GUSB3PIPECTL_TX_DEEPH(dwc->tx_de_emphasis); if (dwc->dis_u3_susphy_quirk) reg &= ~DWC3_GUSB3PIPECTL_SUSPHY; if (dwc->dis_del_phy_power_chg_quirk) reg &= ~DWC3_GUSB3PIPECTL_DEPOCHANGE; dwc3_writel(dwc->regs, DWC3_GUSB3PIPECTL(0), reg); reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)); /* Select the HS PHY interface */ switch (DWC3_GHWPARAMS3_HSPHY_IFC(dwc->hwparams.hwparams3)) { case DWC3_GHWPARAMS3_HSPHY_IFC_UTMI_ULPI: if (dwc->hsphy_interface && !strncmp(dwc->hsphy_interface, "utmi", 4)) { reg &= ~DWC3_GUSB2PHYCFG_ULPI_UTMI; break; } else if (dwc->hsphy_interface && !strncmp(dwc->hsphy_interface, "ulpi", 4)) { reg |= DWC3_GUSB2PHYCFG_ULPI_UTMI; dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg); } else { /* Relying on default value. */ if (!(reg & DWC3_GUSB2PHYCFG_ULPI_UTMI)) break; } /* FALLTHROUGH */ case DWC3_GHWPARAMS3_HSPHY_IFC_ULPI: /* FALLTHROUGH */ default: break; } switch (dwc->hsphy_mode) { case USBPHY_INTERFACE_MODE_UTMI: reg &= ~(DWC3_GUSB2PHYCFG_PHYIF_MASK | DWC3_GUSB2PHYCFG_USBTRDTIM_MASK); reg |= DWC3_GUSB2PHYCFG_PHYIF(UTMI_PHYIF_8_BIT) | DWC3_GUSB2PHYCFG_USBTRDTIM(USBTRDTIM_UTMI_8_BIT); break; case USBPHY_INTERFACE_MODE_UTMIW: reg &= ~(DWC3_GUSB2PHYCFG_PHYIF_MASK | DWC3_GUSB2PHYCFG_USBTRDTIM_MASK); reg |= DWC3_GUSB2PHYCFG_PHYIF(UTMI_PHYIF_16_BIT) | DWC3_GUSB2PHYCFG_USBTRDTIM(USBTRDTIM_UTMI_16_BIT); break; default: break; } /* * Above 1.94a, it is recommended to set DWC3_GUSB2PHYCFG_SUSPHY to * '0' during coreConsultant configuration. So default value will * be '0' when the core is reset. Application needs to set it to * '1' after the core initialization is completed. */ if (dwc->revision > DWC3_REVISION_194A) reg |= DWC3_GUSB2PHYCFG_SUSPHY; if (dwc->dis_u2_susphy_quirk) reg &= ~DWC3_GUSB2PHYCFG_SUSPHY; if (dwc->dis_enblslpm_quirk) reg &= ~DWC3_GUSB2PHYCFG_ENBLSLPM; if (dwc->dis_u2_freeclk_exists_quirk) reg &= ~DWC3_GUSB2PHYCFG_U2_FREECLK_EXISTS; dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg); return 0; } static void dwc3_core_exit(struct dwc3 *dwc) { dwc3_event_buffers_cleanup(dwc); usb_phy_shutdown(dwc->usb2_phy); usb_phy_shutdown(dwc->usb3_phy); phy_exit(dwc->usb2_generic_phy); phy_exit(dwc->usb3_generic_phy); usb_phy_set_suspend(dwc->usb2_phy, 1); usb_phy_set_suspend(dwc->usb3_phy, 1); phy_power_off(dwc->usb2_generic_phy); phy_power_off(dwc->usb3_generic_phy); } static bool dwc3_core_is_valid(struct dwc3 *dwc) { u32 reg; reg = dwc3_readl(dwc->regs, DWC3_GSNPSID); /* This should read as U3 followed by revision number */ if ((reg & DWC3_GSNPSID_MASK) == 0x55330000) { /* Detected DWC_usb3 IP */ dwc->revision = reg; } else if ((reg & DWC3_GSNPSID_MASK) == 0x33310000) { /* Detected DWC_usb31 IP */ dwc->revision = dwc3_readl(dwc->regs, DWC3_VER_NUMBER); dwc->revision |= DWC3_REVISION_IS_DWC31; } else { return false; } return true; } static void dwc3_core_setup_global_control(struct dwc3 *dwc) { u32 hwparams4 = dwc->hwparams.hwparams4; u32 reg; reg = dwc3_readl(dwc->regs, DWC3_GCTL); reg &= ~DWC3_GCTL_SCALEDOWN_MASK; switch (DWC3_GHWPARAMS1_EN_PWROPT(dwc->hwparams.hwparams1)) { case DWC3_GHWPARAMS1_EN_PWROPT_CLK: /** * WORKAROUND: DWC3 revisions between 2.10a and 2.50a have an * issue which would cause xHCI compliance tests to fail. * * Because of that we cannot enable clock gating on such * configurations. * * Refers to: * * STAR#9000588375: Clock Gating, SOF Issues when ref_clk-Based * SOF/ITP Mode Used */ if ((dwc->dr_mode == USB_DR_MODE_HOST || dwc->dr_mode == USB_DR_MODE_OTG) && (dwc->revision >= DWC3_REVISION_210A && dwc->revision <= DWC3_REVISION_250A)) reg |= DWC3_GCTL_DSBLCLKGTNG | DWC3_GCTL_SOFITPSYNC; else reg &= ~DWC3_GCTL_DSBLCLKGTNG; break; case DWC3_GHWPARAMS1_EN_PWROPT_HIB: /* enable hibernation here */ dwc->nr_scratch = DWC3_GHWPARAMS4_HIBER_SCRATCHBUFS(hwparams4); /* * REVISIT Enabling this bit so that host-mode hibernation * will work. Device-mode hibernation is not yet implemented. */ reg |= DWC3_GCTL_GBLHIBERNATIONEN; break; default: /* nothing */ break; } /* check if current dwc3 is on simulation board */ if (dwc->hwparams.hwparams6 & DWC3_GHWPARAMS6_EN_FPGA) { dev_info(dwc->dev, "Running with FPGA optmizations\n"); dwc->is_fpga = true; } WARN_ONCE(dwc->disable_scramble_quirk && !dwc->is_fpga, "disable_scramble cannot be used on non-FPGA builds\n"); if (dwc->disable_scramble_quirk && dwc->is_fpga) reg |= DWC3_GCTL_DISSCRAMBLE; else reg &= ~DWC3_GCTL_DISSCRAMBLE; if (dwc->u2exit_lfps_quirk) reg |= DWC3_GCTL_U2EXIT_LFPS; /* * WORKAROUND: DWC3 revisions <1.90a have a bug * where the device can fail to connect at SuperSpeed * and falls back to high-speed mode which causes * the device to enter a Connect/Disconnect loop */ if (dwc->revision < DWC3_REVISION_190A) reg |= DWC3_GCTL_U2RSTECN; dwc3_writel(dwc->regs, DWC3_GCTL, reg); } static int dwc3_core_get_phy(struct dwc3 *dwc); static int dwc3_core_ulpi_init(struct dwc3 *dwc); /** * dwc3_core_init - Low-level initialization of DWC3 Core * @dwc: Pointer to our controller context structure * * Returns 0 on success otherwise negative errno. */ static int dwc3_core_init(struct dwc3 *dwc) { u32 reg; int ret; if (!dwc3_core_is_valid(dwc)) { dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n"); ret = -ENODEV; goto err0; } /* * Write Linux Version Code to our GUID register so it's easy to figure * out which kernel version a bug was found. */ dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE); /* Handle USB2.0-only core configuration */ if (DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3) == DWC3_GHWPARAMS3_SSPHY_IFC_DIS) { if (dwc->maximum_speed == USB_SPEED_SUPER) dwc->maximum_speed = USB_SPEED_HIGH; } ret = dwc3_phy_setup(dwc); if (ret) goto err0; if (!dwc->ulpi_ready) { ret = dwc3_core_ulpi_init(dwc); if (ret) goto err0; dwc->ulpi_ready = true; } if (!dwc->phys_ready) { ret = dwc3_core_get_phy(dwc); if (ret) goto err0a; dwc->phys_ready = true; } ret = dwc3_core_soft_reset(dwc); if (ret) goto err0a; dwc3_core_setup_global_control(dwc); dwc3_core_num_eps(dwc); ret = dwc3_setup_scratch_buffers(dwc); if (ret) goto err1; /* Adjust Frame Length */ dwc3_frame_length_adjustment(dwc); usb_phy_set_suspend(dwc->usb2_phy, 0); usb_phy_set_suspend(dwc->usb3_phy, 0); ret = phy_power_on(dwc->usb2_generic_phy); if (ret < 0) goto err2; ret = phy_power_on(dwc->usb3_generic_phy); if (ret < 0) goto err3; ret = dwc3_event_buffers_setup(dwc); if (ret) { dev_err(dwc->dev, "failed to setup event buffers\n"); goto err4; } /* * ENDXFER polling is available on version 3.10a and later of * the DWC_usb3 controller. It is NOT available in the * DWC_usb31 controller. */ if (!dwc3_is_usb31(dwc) && dwc->revision >= DWC3_REVISION_310A) { reg = dwc3_readl(dwc->regs, DWC3_GUCTL2); reg |= DWC3_GUCTL2_RST_ACTBITLATER; dwc3_writel(dwc->regs, DWC3_GUCTL2, reg); } if (dwc->revision >= DWC3_REVISION_250A) { reg = dwc3_readl(dwc->regs, DWC3_GUCTL1); /* * Enable hardware control of sending remote wakeup * in HS when the device is in the L1 state. */ if (dwc->revision >= DWC3_REVISION_290A) reg |= DWC3_GUCTL1_DEV_L1_EXIT_BY_HW; if (dwc->dis_tx_ipgap_linecheck_quirk) reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS; dwc3_writel(dwc->regs, DWC3_GUCTL1, reg); } return 0; err4: phy_power_off(dwc->usb3_generic_phy); err3: phy_power_off(dwc->usb2_generic_phy); err2: usb_phy_set_suspend(dwc->usb2_phy, 1); usb_phy_set_suspend(dwc->usb3_phy, 1); err1: usb_phy_shutdown(dwc->usb2_phy); usb_phy_shutdown(dwc->usb3_phy); phy_exit(dwc->usb2_generic_phy); phy_exit(dwc->usb3_generic_phy); err0a: dwc3_ulpi_exit(dwc); err0: return ret; } static int dwc3_core_get_phy(struct dwc3 *dwc) { struct device *dev = dwc->dev; struct device_node *node = dev->of_node; int ret; if (node) { dwc->usb2_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 0); dwc->usb3_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 1); } else { dwc->usb2_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); dwc->usb3_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB3); } if (IS_ERR(dwc->usb2_phy)) { ret = PTR_ERR(dwc->usb2_phy); if (ret == -ENXIO || ret == -ENODEV) { dwc->usb2_phy = NULL; } else if (ret == -EPROBE_DEFER) { return ret; } else { dev_err(dev, "no usb2 phy configured\n"); return ret; } } if (IS_ERR(dwc->usb3_phy)) { ret = PTR_ERR(dwc->usb3_phy); if (ret == -ENXIO || ret == -ENODEV) { dwc->usb3_phy = NULL; } else if (ret == -EPROBE_DEFER) { return ret; } else { dev_err(dev, "no usb3 phy configured\n"); return ret; } } dwc->usb2_generic_phy = devm_phy_get(dev, "usb2-phy"); if (IS_ERR(dwc->usb2_generic_phy)) { ret = PTR_ERR(dwc->usb2_generic_phy); if (ret == -ENOSYS || ret == -ENODEV) { dwc->usb2_generic_phy = NULL; } else if (ret == -EPROBE_DEFER) { return ret; } else { dev_err(dev, "no usb2 phy configured\n"); return ret; } } dwc->usb3_generic_phy = devm_phy_get(dev, "usb3-phy"); if (IS_ERR(dwc->usb3_generic_phy)) { ret = PTR_ERR(dwc->usb3_generic_phy); if (ret == -ENOSYS || ret == -ENODEV) { dwc->usb3_generic_phy = NULL; } else if (ret == -EPROBE_DEFER) { return ret; } else { dev_err(dev, "no usb3 phy configured\n"); return ret; } } return 0; } static int dwc3_core_init_mode(struct dwc3 *dwc) { struct device *dev = dwc->dev; int ret; switch (dwc->dr_mode) { case USB_DR_MODE_PERIPHERAL: dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_DEVICE); if (dwc->usb2_phy) otg_set_vbus(dwc->usb2_phy->otg, false); if (dwc->usb2_generic_phy) phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_DEVICE); ret = dwc3_gadget_init(dwc); if (ret) { if (ret != -EPROBE_DEFER) dev_err(dev, "failed to initialize gadget\n"); return ret; } break; case USB_DR_MODE_HOST: dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_HOST); if (dwc->usb2_phy) otg_set_vbus(dwc->usb2_phy->otg, true); if (dwc->usb2_generic_phy) phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST); ret = dwc3_host_init(dwc); if (ret) { if (ret != -EPROBE_DEFER) dev_err(dev, "failed to initialize host\n"); return ret; } break; case USB_DR_MODE_OTG: INIT_WORK(&dwc->drd_work, __dwc3_set_mode); ret = dwc3_drd_init(dwc); if (ret) { if (ret != -EPROBE_DEFER) dev_err(dev, "failed to initialize dual-role\n"); return ret; } break; default: dev_err(dev, "Unsupported mode of operation %d\n", dwc->dr_mode); return -EINVAL; } return 0; } static void dwc3_core_exit_mode(struct dwc3 *dwc) { switch (dwc->dr_mode) { case USB_DR_MODE_PERIPHERAL: dwc3_gadget_exit(dwc); break; case USB_DR_MODE_HOST: dwc3_host_exit(dwc); break; case USB_DR_MODE_OTG: dwc3_drd_exit(dwc); break; default: /* do nothing */ break; } } static void dwc3_get_properties(struct dwc3 *dwc) { struct device *dev = dwc->dev; u8 lpm_nyet_threshold; u8 tx_de_emphasis; u8 hird_threshold; /* default to highest possible threshold */ lpm_nyet_threshold = 0xff; /* default to -3.5dB de-emphasis */ tx_de_emphasis = 1; /* * default to assert utmi_sleep_n and use maximum allowed HIRD * threshold value of 0b1100 */ hird_threshold = 12; dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->dr_mode = usb_get_dr_mode(dev); dwc->hsphy_mode = of_usb_get_phy_mode(dev->of_node); dwc->sysdev_is_parent = device_property_read_bool(dev, "linux,sysdev_is_parent"); if (dwc->sysdev_is_parent) dwc->sysdev = dwc->dev->parent; else dwc->sysdev = dwc->dev; dwc->has_lpm_erratum = device_property_read_bool(dev, "snps,has-lpm-erratum"); device_property_read_u8(dev, "snps,lpm-nyet-threshold", &lpm_nyet_threshold); dwc->is_utmi_l1_suspend = device_property_read_bool(dev, "snps,is-utmi-l1-suspend"); device_property_read_u8(dev, "snps,hird-threshold", &hird_threshold); dwc->usb3_lpm_capable = device_property_read_bool(dev, "snps,usb3_lpm_capable"); dwc->disable_scramble_quirk = device_property_read_bool(dev, "snps,disable_scramble_quirk"); dwc->u2exit_lfps_quirk = device_property_read_bool(dev, "snps,u2exit_lfps_quirk"); dwc->u2ss_inp3_quirk = device_property_read_bool(dev, "snps,u2ss_inp3_quirk"); dwc->req_p1p2p3_quirk = device_property_read_bool(dev, "snps,req_p1p2p3_quirk"); dwc->del_p1p2p3_quirk = device_property_read_bool(dev, "snps,del_p1p2p3_quirk"); dwc->del_phy_power_chg_quirk = device_property_read_bool(dev, "snps,del_phy_power_chg_quirk"); dwc->lfps_filter_quirk = device_property_read_bool(dev, "snps,lfps_filter_quirk"); dwc->rx_detect_poll_quirk = device_property_read_bool(dev, "snps,rx_detect_poll_quirk"); dwc->dis_u3_susphy_quirk = device_property_read_bool(dev, "snps,dis_u3_susphy_quirk"); dwc->dis_u2_susphy_quirk = device_property_read_bool(dev, "snps,dis_u2_susphy_quirk"); dwc->dis_enblslpm_quirk = device_property_read_bool(dev, "snps,dis_enblslpm_quirk"); dwc->dis_rxdet_inp3_quirk = device_property_read_bool(dev, "snps,dis_rxdet_inp3_quirk"); dwc->dis_u2_freeclk_exists_quirk = device_property_read_bool(dev, "snps,dis-u2-freeclk-exists-quirk"); dwc->dis_del_phy_power_chg_quirk = device_property_read_bool(dev, "snps,dis-del-phy-power-chg-quirk"); dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev, "snps,dis-tx-ipgap-linecheck-quirk"); dwc->tx_de_emphasis_quirk = device_property_read_bool(dev, "snps,tx_de_emphasis_quirk"); device_property_read_u8(dev, "snps,tx_de_emphasis", &tx_de_emphasis); device_property_read_string(dev, "snps,hsphy_interface", &dwc->hsphy_interface); device_property_read_u32(dev, "snps,quirk-frame-length-adjustment", &dwc->fladj); dwc->dis_metastability_quirk = device_property_read_bool(dev, "snps,dis_metastability_quirk"); dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->tx_de_emphasis = tx_de_emphasis; dwc->hird_threshold = hird_threshold | (dwc->is_utmi_l1_suspend << 4); dwc->imod_interval = 0; } /* check whether the core supports IMOD */ bool dwc3_has_imod(struct dwc3 *dwc) { return ((dwc3_is_usb3(dwc) && dwc->revision >= DWC3_REVISION_300A) || (dwc3_is_usb31(dwc) && dwc->revision >= DWC3_USB31_REVISION_120A)); } static void dwc3_check_params(struct dwc3 *dwc) { struct device *dev = dwc->dev; /* Check for proper value of imod_interval */ if (dwc->imod_interval && !dwc3_has_imod(dwc)) { dev_warn(dwc->dev, "Interrupt moderation not supported\n"); dwc->imod_interval = 0; } /* * Workaround for STAR 9000961433 which affects only version * 3.00a of the DWC_usb3 core. This prevents the controller * interrupt from being masked while handling events. IMOD * allows us to work around this issue. Enable it for the * affected version. */ if (!dwc->imod_interval && (dwc->revision == DWC3_REVISION_300A)) dwc->imod_interval = 1; /* Check the maximum_speed parameter */ switch (dwc->maximum_speed) { case USB_SPEED_LOW: case USB_SPEED_FULL: case USB_SPEED_HIGH: case USB_SPEED_SUPER: case USB_SPEED_SUPER_PLUS: break; default: dev_err(dev, "invalid maximum_speed parameter %d\n", dwc->maximum_speed); /* fall through */ case USB_SPEED_UNKNOWN: /* default to superspeed */ dwc->maximum_speed = USB_SPEED_SUPER; /* * default to superspeed plus if we are capable. */ if (dwc3_is_usb31(dwc) && (DWC3_GHWPARAMS3_SSPHY_IFC(dwc->hwparams.hwparams3) == DWC3_GHWPARAMS3_SSPHY_IFC_GEN2)) dwc->maximum_speed = USB_SPEED_SUPER_PLUS; break; } } static int dwc3_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct resource *res; struct dwc3 *dwc; int ret; void __iomem *regs; dwc = devm_kzalloc(dev, sizeof(*dwc), GFP_KERNEL); if (!dwc) return -ENOMEM; dwc->dev = dev; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(dev, "missing memory resource\n"); return -ENODEV; } dwc->xhci_resources[0].start = res->start; dwc->xhci_resources[0].end = dwc->xhci_resources[0].start + DWC3_XHCI_REGS_END; dwc->xhci_resources[0].flags = res->flags; dwc->xhci_resources[0].name = res->name; res->start += DWC3_GLOBALS_REGS_START; /* * Request memory region but exclude xHCI regs, * since it will be requested by the xhci-plat driver. */ regs = devm_ioremap_resource(dev, res); if (IS_ERR(regs)) { ret = PTR_ERR(regs); goto err0; } dwc->regs = regs; dwc->regs_size = resource_size(res); dwc3_get_properties(dwc); platform_set_drvdata(pdev, dwc); dwc3_cache_hwparams(dwc); spin_lock_init(&dwc->lock); pm_runtime_set_active(dev); pm_runtime_use_autosuspend(dev); pm_runtime_set_autosuspend_delay(dev, DWC3_DEFAULT_AUTOSUSPEND_DELAY); pm_runtime_enable(dev); ret = pm_runtime_get_sync(dev); if (ret < 0) goto err1; pm_runtime_forbid(dev); ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE); if (ret) { dev_err(dwc->dev, "failed to allocate event buffers\n"); ret = -ENOMEM; goto err2; } ret = dwc3_get_dr_mode(dwc); if (ret) goto err3; ret = dwc3_alloc_scratch_buffers(dwc); if (ret) goto err3; ret = dwc3_core_init(dwc); if (ret) { dev_err(dev, "failed to initialize core\n"); goto err4; } dwc3_check_params(dwc); ret = dwc3_core_init_mode(dwc); if (ret) goto err5; dwc3_debugfs_init(dwc); pm_runtime_put(dev); return 0; err5: dwc3_event_buffers_cleanup(dwc); err4: dwc3_free_scratch_buffers(dwc); err3: dwc3_free_event_buffers(dwc); err2: pm_runtime_allow(&pdev->dev); err1: pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); err0: /* * restore res->start back to its original value so that, in case the * probe is deferred, we don't end up getting error in request the * memory region the next time probe is called. */ res->start -= DWC3_GLOBALS_REGS_START; return ret; } static int dwc3_remove(struct platform_device *pdev) { struct dwc3 *dwc = platform_get_drvdata(pdev); struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); pm_runtime_get_sync(&pdev->dev); /* * restore res->start back to its original value so that, in case the * probe is deferred, we don't end up getting error in request the * memory region the next time probe is called. */ res->start -= DWC3_GLOBALS_REGS_START; dwc3_debugfs_exit(dwc); dwc3_core_exit_mode(dwc); dwc3_core_exit(dwc); dwc3_ulpi_exit(dwc); pm_runtime_put_sync(&pdev->dev); pm_runtime_allow(&pdev->dev); pm_runtime_disable(&pdev->dev); dwc3_free_event_buffers(dwc); dwc3_free_scratch_buffers(dwc); return 0; } #ifdef CONFIG_PM static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg) { unsigned long flags; switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: spin_lock_irqsave(&dwc->lock, flags); dwc3_gadget_suspend(dwc); spin_unlock_irqrestore(&dwc->lock, flags); dwc3_core_exit(dwc); break; case DWC3_GCTL_PRTCAP_HOST: /* do nothing during host runtime_suspend */ if (!PMSG_IS_AUTO(msg)) dwc3_core_exit(dwc); break; case DWC3_GCTL_PRTCAP_OTG: /* do nothing during runtime_suspend */ if (PMSG_IS_AUTO(msg)) break; if (dwc->current_otg_role == DWC3_OTG_ROLE_DEVICE) { spin_lock_irqsave(&dwc->lock, flags); dwc3_gadget_suspend(dwc); spin_unlock_irqrestore(&dwc->lock, flags); } dwc3_otg_exit(dwc); dwc3_core_exit(dwc); break; default: /* do nothing */ break; } return 0; } static int dwc3_resume_common(struct dwc3 *dwc, pm_message_t msg) { unsigned long flags; int ret; switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: ret = dwc3_core_init(dwc); if (ret) return ret; dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_DEVICE); spin_lock_irqsave(&dwc->lock, flags); dwc3_gadget_resume(dwc); spin_unlock_irqrestore(&dwc->lock, flags); break; case DWC3_GCTL_PRTCAP_HOST: /* nothing to do on host runtime_resume */ if (!PMSG_IS_AUTO(msg)) { ret = dwc3_core_init(dwc); if (ret) return ret; dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_HOST); } break; case DWC3_GCTL_PRTCAP_OTG: /* nothing to do on runtime_resume */ if (PMSG_IS_AUTO(msg)) break; ret = dwc3_core_init(dwc); if (ret) return ret; dwc3_set_prtcap(dwc, dwc->current_dr_role); dwc3_otg_init(dwc); if (dwc->current_otg_role == DWC3_OTG_ROLE_HOST) { dwc3_otg_host_init(dwc); } else if (dwc->current_otg_role == DWC3_OTG_ROLE_DEVICE) { spin_lock_irqsave(&dwc->lock, flags); dwc3_gadget_resume(dwc); spin_unlock_irqrestore(&dwc->lock, flags); } break; default: /* do nothing */ break; } return 0; } static int dwc3_runtime_checks(struct dwc3 *dwc) { switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: if (dwc->connected) return -EBUSY; break; case DWC3_GCTL_PRTCAP_HOST: default: /* do nothing */ break; } return 0; } static int dwc3_runtime_suspend(struct device *dev) { struct dwc3 *dwc = dev_get_drvdata(dev); int ret; if (dwc3_runtime_checks(dwc)) return -EBUSY; ret = dwc3_suspend_common(dwc, PMSG_AUTO_SUSPEND); if (ret) return ret; device_init_wakeup(dev, true); return 0; } static int dwc3_runtime_resume(struct device *dev) { struct dwc3 *dwc = dev_get_drvdata(dev); int ret; device_init_wakeup(dev, false); ret = dwc3_resume_common(dwc, PMSG_AUTO_RESUME); if (ret) return ret; switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: dwc3_gadget_process_pending_events(dwc); break; case DWC3_GCTL_PRTCAP_HOST: default: /* do nothing */ break; } pm_runtime_mark_last_busy(dev); pm_runtime_put(dev); return 0; } static int dwc3_runtime_idle(struct device *dev) { struct dwc3 *dwc = dev_get_drvdata(dev); switch (dwc->current_dr_role) { case DWC3_GCTL_PRTCAP_DEVICE: if (dwc3_runtime_checks(dwc)) return -EBUSY; break; case DWC3_GCTL_PRTCAP_HOST: default: /* do nothing */ break; } pm_runtime_mark_last_busy(dev); pm_runtime_autosuspend(dev); return 0; } #endif /* CONFIG_PM */ #ifdef CONFIG_PM_SLEEP static int dwc3_suspend(struct device *dev) { struct dwc3 *dwc = dev_get_drvdata(dev); int ret; ret = dwc3_suspend_common(dwc, PMSG_SUSPEND); if (ret) return ret; pinctrl_pm_select_sleep_state(dev); return 0; } static int dwc3_resume(struct device *dev) { struct dwc3 *dwc = dev_get_drvdata(dev); int ret; pinctrl_pm_select_default_state(dev); ret = dwc3_resume_common(dwc, PMSG_RESUME); if (ret) return ret; pm_runtime_disable(dev); pm_runtime_set_active(dev); pm_runtime_enable(dev); return 0; } #endif /* CONFIG_PM_SLEEP */ static const struct dev_pm_ops dwc3_dev_pm_ops = { SET_SYSTEM_SLEEP_PM_OPS(dwc3_suspend, dwc3_resume) SET_RUNTIME_PM_OPS(dwc3_runtime_suspend, dwc3_runtime_resume, dwc3_runtime_idle) }; #ifdef CONFIG_OF static const struct of_device_id of_dwc3_match[] = { { .compatible = "snps,dwc3" }, { .compatible = "synopsys,dwc3" }, { }, }; MODULE_DEVICE_TABLE(of, of_dwc3_match); #endif #ifdef CONFIG_ACPI #define ACPI_ID_INTEL_BSW "808622B7" static const struct acpi_device_id dwc3_acpi_match[] = { { ACPI_ID_INTEL_BSW, 0 }, { }, }; MODULE_DEVICE_TABLE(acpi, dwc3_acpi_match); #endif static struct platform_driver dwc3_driver = { .probe = dwc3_probe, .remove = dwc3_remove, .driver = { .name = "dwc3", .of_match_table = of_match_ptr(of_dwc3_match), .acpi_match_table = ACPI_PTR(dwc3_acpi_match), .pm = &dwc3_dev_pm_ops, }, }; module_platform_driver(dwc3_driver); MODULE_ALIAS("platform:dwc3"); MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>"); MODULE_LICENSE("GPL v2"); MODULE_DESCRIPTION("DesignWare USB3 DRD Controller Driver");
Bin Liu said:Now I think the only way to solve the issue is that you to debug the kernel routine to understand why dwc3 is not registered in udc. All the related code is under kernel drivers/usb/dwc3/ folder, dwc3-omap.c, core.c, and gadget.c.
dwc3_omap_probe() in dwc3-omap.c is called first, then triggers dwc3_probe() in core.c, which calls dwc3_core_init_mode(), --> dwc3_gadget_init() in gadget.c, --> usb_add_gadget_udc() to register itself to udc.
Jose Carlos Billalabeitia said:Bin:
I already set status="okay" in usb2_phy1 but the issue continues.
The +5V_VBUS is supplied by the host when it is connected.
I checked with the oscillo that the USB_DET signal works properly when connecting/disconnecting USB cable.
Billa
Hi Brad,
Well, regarding the USB_DET signal I double-checked that the gpio is on/off when plugging/unplugging the USB cable.
As for the rail voltages I am not an expert on it, but I guess that it is related to the USB_DET signal, right?
I run the commands you suggested and attached is the file with the outputs.
Regards
Billa
root@am57xx-evm:~# omapconf export ctt am57xx-clocks.rd1.txt Warning: chip not recognized, running in safe mode (only platform-generic functions allowed). Function disabled in safe mode, sorry ... root@am57xx-evm:~# devmem2 0x4a008184 /dev/mem opened. Memory mapped at address 0xb6fb2000. Read at address 0x4A008184 (0xb6fb2184): 0x00000012 root@am57xx-evm:~#
Billa,
I think I see an issue in your output:
root@am57xx-evm:~# dmesg | grep usb
[ 7.618521] usbcore: registered new interface driver usbfs
[ 7.626660] usbcore: registered new interface driver hub
[ 7.638856] usbcore: registered new device driver usb
[ 7.656818] usbcore: registered new interface driver usbserial
[ 16.601652] extcon-usb-gpio extcon_usb2: GPIO lookup for consumer id
[ 16.601663] extcon-usb-gpio extcon_usb2: using device tree for GPIO lookup
[ 16.601675] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/extcon_usb2[0]'
[ 16.601684] of_get_named_gpiod_flags: can't parse 'id-gpio' property of node '/extcon_usb2[0]'
[ 16.601691] extcon-usb-gpio extcon_usb2: using lookup tables for GPIO lookup
[ 16.601699] extcon-usb-gpio extcon_usb2: lookup for GPIO id failed
[ 16.601707] extcon-usb-gpio extcon_usb2: GPIO lookup for consumer vbus
[ 16.601714] extcon-usb-gpio extcon_usb2: using device tree for GPIO lookup
[ 16.601723] of_get_named_gpiod_flags: can't parse 'vbus-gpios' property of node '/extcon_usb2[0]'
[ 16.609969] of_get_named_gpiod_flags: parsed 'vbus-gpio' property of node '/extcon_usb2[0]' - status (0)
[ 26.771889] dwc3 488d0000.usb: failed to initialize core
[ 26.865662] dwc3 488d0000.usb: failed to initialize core
[ 27.011745] dwc3 488d0000.usb: failed to initialize core
It couldn't find anything called 'id-gpios' or 'id-gpio' in your dts. Now in contrast on the AM570x EVM I see the following:
[ 12.569452] of_get_named_gpiod_flags: can't parse 'id-gpios' property of node '/extcon_usb2[0]'
[ 12.569490] of_get_named_gpiod_flags: parsed 'id-gpio' property of node '/extcon_usb2[0]' - status (0)
So I think that might be the issue preventing you from having anything at all working.
Brad
The VBUS pin is 5V when cable connected and 0V when cable disconnected.
USB_DET pin configured as gpio3_30 is working fine (0 when disconnected and 1 when connected).
With few workarounds, we are able to make USB Ethernet work on this board:
Change 1. Deleted the following lines from the dra71-evm.dts:
&usb2_phy1 {
phy-supply = <&lp8733_ldo1_reg>;
};
&usb2_phy2 {
phy-supply = <&lp8733_ldo1_reg>;
};
This change resolved error “dwc3 488d0000.usb: failed to initialize core”, and we could see usb0 interface after inserting kernel module g_ether.
At this point, Ethernet was very unstable. Also, when connected USB to a Ubuntu desktop host, observed the following errors in dmesg of the Ubuntu host:
[707716.695950] usb 3-5.3: new high-speed USB device number 127 using xhci_hcd
[707716.776020] usb 3-5.3: Device not responding to setup address.
[707717.004582] usb 3-5.3: config 2 interface 0 altsetting 0 endpoint 0x82 has an invalid bInterval 32, changing to 9
[707717.004587] usb 3-5.3: config 2 interface 1 altsetting 0 bulk endpoint 0x81 has invalid maxpacket 64
[707717.004591] usb 3-5.3: config 2 interface 1 altsetting 0 bulk endpoint 0x1 has invalid maxpacket 64
[707717.004925] usb 3-5.3: config 1 interface 0 altsetting 0 endpoint 0x82 has an invalid bInterval 32, changing to 9
[707717.004929] usb 3-5.3: config 1 interface 1 altsetting 1 bulk endpoint 0x81 has invalid maxpacket 64
[707717.004932] usb 3-5.3: config 1 interface 1 altsetting 1 bulk endpoint 0x1 has invalid maxpacket 64
[707717.005605] usb 3-5.3: New USB device found, idVendor=0525, idProduct=a4a2
[707717.005608] usb 3-5.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[707717.005611] usb 3-5.3: Product: RNDIS/Ethernet Gadget
[707717.005615] usb 3-5.3: Manufacturer: Linux 4.14.40-rt29-gd5443cbd3b with dwc3-gadget
[707717.013630] cdc_ether 3-5.3:1.0 usb0: register 'cdc_ether' at usb-0000:00:14.0-5.3, CDC Ethernet Device, 8e:a0:8a:7a:f3:bc
[707717.025788] cdc_ether 3-5.3:1.0 enp0s20u5u3: renamed from usb0
[707717.067266] IPv6: ADDRCONF(NETDEV_UP): enp0s20u5u3: link is not ready
[707717.067531] cdc_ether 3-5.3:1.0 enp0s20u5u3: kevent 12 may have been dropped
[707717.267538] userif-4: sent link down event.
[707717.267542] userif-4: sent link up event.
Also, observed this error in board's dmesg:
[ 26.078835] dwc3 488d0000.usb: changing max_speed on rev 5533202a
Change 2. Changed usb2 configuration in dra7.dtsi (bold lines changed):
omap_dwc3_2: omap_dwc3_2@488c0000 {
compatible = "ti,dwc3";
ti,hwmods = "usb_otg_ss2";
reg = <0x488c0000 0x10000>;
interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <1>;
utmi-mode = <2>;
ranges;
usb2: usb@488d0000 {
compatible = "snps,dwc3";
reg = <0x488d0000 0x17000>;
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "peripheral",
"host",
"otg";
phys = <&usb2_phy2>;
phy-names = "usb2-phy";
maximum-speed = "full-speed";
dr_mode = "otg";
snps,dis_u3_susphy_quirk;
snps,dis_u2_susphy_quirk;
snps,dis_metastability_quirk;
};
};
With these two changes, USB Ethernet works fine. Also, Its interface goes UP or DOWN based on cable is connected or not. vbus-gpio seems to be working fine.
Ethernet Speed:
On Windows, speed of this USB Ethernet is detected as 9.7 Mbps. When measured using iperf tool, actual Ethernet speed is 6.5 Mbps
Queries: Do these work-rounds suggest a HW or FW issue? If yes, how to diagnose this issue, if any ?