Re: How to enable usb in exynos4412

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Randy,

On Thursday 28 of November 2013 22:00:41 randy wrote:
> I have development board whose SoC is exynos4412, I try to enable the
> usb in it but I failed. I saw the document
> Documentation/devicetree/bindings/usb/samsung-usbphy.txt, does it mean
> that the usb driver is not done?
> And about that document, in samsung datasheet(32.8.2), the address reg
> 0x125B_0000 + 32bits contains hsic1, hsic0, phy1 and phy0's power
> control. And in 0x1002_0704 + 3 * 32 bits, it contains usb_phy,
> hsic1_phy and hsic2_phy control(8.8.1.27). So I doubt the documents.
> 
> Here is the log and dts
> ===========================log================================
> [    1.000000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> [    1.010000] ehci-exynos: EHCI EXYNOS driver
> [    1.015000] unable to find transceiver of type USB2 PHY
> [    1.020000] exynos-ehci 12580000.ehci: no platform data or
> transceiver defined
> [    1.025000] platform 12580000.ehci: Driver exynos-ehci requests probe
> deferral

First of all, do you have CONFIG_SAMSUNG_USB2PHY enabled in your kernel
config? Also, see below.

> 
> ================================dts==================================
> diff --git a/arch/arm/boot/dts/exynos4412-tiny4412.dts
> b/arch/arm/boot/dts/exynos4412-tiny4412.dts
> new file mode 100644
> index 0000000..c8d4cfa
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos4412-tiny4412.dts
> @@ -0,0 +1,176 @@
> +/*
> + * Hardkernel's Exynos4412 based tiny4412 1306 board device tree source
> + *
> + * Copyright (c) 2013 Tomoya Gitsufuki <ayaka@xxxxxxxxxxxxxxxx>
> + *
> + * Device tree source file for Friendyarm tiny4412 1306 board which is
> based on
> + * Samsung's Exynos4412 SoC.
> + *
> + * 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 "exynos4412.dtsi"
> +
> +/ {
> +	model = "Friendly Arm Tiny4412 1306 board based on Exynos4412";
> +	compatible = "friendlyarm,tiny4412-1306", "samsung,exynos4412";
> +
> +	memory {
> +		reg = <0x40000000 0x40000000>;
> +	};
> +
> +	chosen {
> +		bootargs ="root=/dev/mmcblk0p1 rootfstype=ext4 rw
> console=ttySAC0,115200 init=/sbin/init";
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		led1 {
> +			label = "led1:heart";
> +			gpios = <&gpm4 0 1>;
> +			default-state = "on";
> +			linux,default-trigger = "heartbeat";
> +		};
> +		led2 {
> +			label = "led2:mmc0";
> +			gpios = <&gpm4 1 1>;
> +			default-state = "on";
> +			linux,default-trigger = "mmc0";
> +		};
> +
> +	};
> +
> +	regulators {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +
> +		vemmc_reg: regulator-0 {
> +			compatible = "regulator-fixed";
> +			regulator-name = "VMEM_VDD_2.8V";
> +			regulator-min-microvolt = <2800000>;
> +			regulator-max-microvolt = <2800000>;
> +			gpio = <&gpk0 2 0>;
> +			enable-active-high;
> +		};
> +
> +	};
> +
> +	/*
> +	mshc@12550000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
> +		pinctrl-names = "default";
> +		status = "okay";
> +
> +		vmmc-supply = <&vemmc_reg>;
> +		clocks = <&clock 301>, <&clock 149>;
> +		clocks-name = "dwmci", "sclk_dwmci";
> +		clock-frequency = <400000000>;
> +
> +		num-slots = <1>;
> +		supports-highspeed;
> +		broken-cd;
> +		fifo-depth = <0x80>;
> +		card-detect-delay = <200>;
> +		samsung,dw-mshc-sdr-timing = <2 3>;
> +		samsung,dw-mshc-ddr-timing = <1 2>;
> +
> +		slot@0 {
> +			reg = <0>;
> +			bus-width = <8>;
> +				
> +		};
> +	};
> +	*/
> +
> +	rtc@10070000 {
> +		status = "okay";
> +	};
> +
> +	sdhci@12530000 {
> +		bus-width = <4>;
> +		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
> +		pinctrl-names = "default";
> +		status = "okay";
> +	};
> +	sdhci@1254000 {
> +		bus-width = <4>;
> +		pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4 &sd3_cd>;
> +		pinctrl-names = "default";
> +		status = "okay";
> +	};
> +
> +	usb_phy: usbphy@125B0000 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "samsung,exynos4210-usbphy";

This is not the compatible listed in [1]. Moreover, it looks like the
compatible string for Exynos4x12 is not documented. According to driver
code, it should be "samsung,exynos4x12-usb2phy".

[1] Documentation/devicetree/bindings/usb/samsung-usbphy.txt

> +		reg = <0x12B0000 0x100>;

The address should be 0x125B0000.

> +		ranges;
> +
> +		clocks = <&clock 2>, <&clock 305>;
> +		clock-names = "xusbxti", "otg";
> +		usbphy-sys {
> +			/* USB device and host PHY_CONTROL registers */
> +			reg = <0x10020704 0x8>;

reg should be <0x10020704 0xc 0x1001021c 0x4> on Exynos4x12.

In general, this PHY driver is only preliminary and there is already
work going on a completely new PHY driver that will cover full USB
functionality present on Exynos 4 and should be much more reliable.

The currently available one might or might not work for you, even after
correcting the things I pointed above.

Best regards,
Tomasz

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux