TX2 Carrier Board USB Debug (JetPack4.2)

TX2 Carrier Board-A302 NV USB and PCIe USB Debug

一、硬件连接
W8&W9 --- PCIe-USB3.0 转接口(1xPCIe-to-4xUSB3.0,共享5.0GHz带宽)
W7 --- USBSS0(靠近PCB板侧,即下侧USB) + USBSS1
Tegra自带USB 控制器名称: tegra-xusb
PCIe-USB扩展 控制器名称: xhci_hcd

image.png
image.png

二、ODMDATA (参考Jetson TX2_OEM_Product_DesignGuide.pdf)
ODMDATA 是与PCIE&USB 配置相关

配置修改路径:Linux_for_Tegra/p2771-0000.conf.common
查看ODMDATA &USB Phy/Pinmux名称:

ls -l /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data 
xxd /proc/device-tree/xhci@3530000/phy-names
ls /proc/device-tree/pinctrl@3520000/pinmux/
ls /proc/device-tree/pcie-controller@10003000/
image.png

Lane allocation can be performed by either ODMDATA, in p2771-0000.conf.common by default, or alloted to UPHY to each client in the bpmp-dtb file.
For example:

  • ODMDATA=0x1090000 default for Jetson TX2 for Configuration #2
  • ODMDATA=0x90000 for Configuration #1
  • ODMDATA=0x6090000 for Configuration #3
image.png
ODMDATA  = 0x609000
nvidia@tw-tx2:~$ ls -l /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data
total 0
-r--r--r-- 1 root root 4 4月  18 17:22 android-build
-r--r--r-- 1 root root 4 4月  18 17:22 disable-pmic-wdt
-r--r--r-- 1 root root 4 4月  18 17:22 disable-sdmmc-hwcq
-r--r--r-- 1 root root 4 4月  18 17:22 disable-tegra-wdt
-r--r--r-- 1 root root 4 4月  18 17:22 enable-debug-console
-r--r--r-- 1 root root 4 4月  18 17:22 enable-denver-wdt
-r--r--r-- 1 root root 4 4月  18 17:22 enable-pcie-on-uphy-lane0
-r--r--r-- 1 root root 4 4月  18 17:22 enable-pcie-on-uphy-lane4
-r--r--r-- 1 root root 4 4月  18 17:22 enable-sata-on-uphy-lane5
-r--r--r-- 1 root root 4 4月  18 17:22 enable-xusb-on-uphy-lane1
-r--r--r-- 1 root root 4 4月  18 17:22 enable-xusb-on-uphy-lane2
-r--r--r-- 1 root root 9 4月  18 17:22 name
-r--r--r-- 1 root root 4 4月  18 17:22 no-battery
-r--r--r-- 1 root root 4 4月  18 17:22 normal-flashed

ODMDATA  = 0x709000
nvidia@tw-tx2:~$ ls -l /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data
total 0
-r--r--r-- 1 root root 4 4月  18 16:39 android-build
-r--r--r-- 1 root root 4 4月  18 16:39 disable-pmic-wdt
-r--r--r-- 1 root root 4 4月  18 16:39 disable-sdmmc-hwcq
-r--r--r-- 1 root root 4 4月  18 16:39 disable-tegra-wdt
-r--r--r-- 1 root root 4 4月  18 16:39 enable-debug-console
-r--r--r-- 1 root root 4 4月  18 16:39 enable-denver-wdt
-r--r--r-- 1 root root 4 4月  18 16:39 enable-pcie-on-uphy-lane4
-r--r--r-- 1 root root 4 4月  18 16:39 enable-sata-on-uphy-lane5
-r--r--r-- 1 root root 4 4月  18 16:39 enable-xusb-on-uphy-lane0
-r--r--r-- 1 root root 4 4月  18 16:39 enable-xusb-on-uphy-lane1
-r--r--r-- 1 root root 4 4月  18 16:39 enable-xusb-on-uphy-lane2
-r--r--r-- 1 root root 9 4月  18 16:39 name
-r--r--r-- 1 root root 4 4月  18 16:39 no-battery
-r--r--r-- 1 root root 4 4月  18 16:39 normal-flashed

三、TX2+A302+JetPack4.2
1、 ODMDATA = 0x709000 + NV DTB --- 仅识别W7 下面的一个USB,但是无法识别PCIE-USB和上面的USB
2、 ODMDATA = 0x709000 + TW DTB --- 可以识别Default USB,但是无法识别PCIE-USB
3、 ODMDATA = 0x609000 + NV DTB --- 可以识别W7 下面的一个USB和PCIE-USB (W8&W9)
3、 ODMDATA = 0x609000 + TW DTB --- 可以识别W7 两个USB和PCIE-USB (W8&W9)

验证一、(2019/04/19 14:00)

ODM-DATA = 0x709000

>   pcie-controller@10003000 {
>       pci@1,0 {
>           nvidia,num-lanes = <4>;
>           nvidia,disable-clock-request;
>       };
>       pci@2,0 {
>           nvidia,num-lanes = <0>;
>       };
>       pci@3,0 {
>           nvidia,num-lanes = <1>;
>       };
>   };
nvidia@tw-tx2:~$ xxd /proc/device-tree/xhci@3530000/phy-names
00000000: 7573 6232 2d30 0075 7362 322d 3100 7573  usb2-0.usb2-1.us
00000010: 6232 2d32 0075 7362 332d 3000            b2-2.usb3-0.
nvidia@tw-tx2:~$ xxd /proc/device-tree/pinctrl@3520000/pinmux/
e3325-usb3-std-A-HS/ e3325-usb3-std-A-SS/ linux,phandle
name phandle usb2-micro-AB/  usb2-std-A-port2/  usb3-std-A-port2/

U盘插入W7 上侧口 (插入U盘后开机状态),lsusb --- USB2.0
nvidia@tw-tx2:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/3p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
    |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M

U盘拔出W7 上侧口,再插入W7 下侧USB口,lsusb --- USB3.0
nvidia@tw-tx2:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/3p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M

关机再开机(U盘默认插入W7 下侧USB口)后,lsusb --- USB2.0
nvidia@tw-tx2:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/3p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
    |__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
nvidia@tw-tx2:~$ 
U盘拔出W7下侧口,再插入W7 上侧USB口后,lsusb --- USB2.0
nvidia@tw-tx2:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/3p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
    |__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
nvidia@tw-tx2:~$ 
U盘拔出W7上侧口,再插入W7下侧USB口后,lsusb --- 变为USB3.0
nvidia@tw-tx2:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/3p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M


------------------------------------------------------------------------------------------------
验证二、(2019/04/19 14:00)
ODM-DATA = 0x709000
去除plugin 无USB控制器 可识别
nvidia@tw-tx2:~$ xxd /proc/device-tree/xhci@3530000/phy-names
00000000: 7574 6d69 2d30 0075 746d 692d 3100 7574  utmi-0.utmi-1.ut
00000010: 6d69 2d32 0075 7362 332d 3000 7573 6233  mi-2.usb3-0.usb3
00000020: 2d31 0075 7362 332d 3200                 -1.usb3-2.
nvidia@tw-tx2:~$ ls /proc/device-tree/pinctrl@3520000/pinmux/
linux,phandle  name  phandle  usb2-1  usb2-2  usb2-micro-AB  usb3-a  usb3-b  usb3-c
上述三个USB2和三个USB3/status 均为okay

实验一和二 总结如下:
Kernel4.9 版本DTS已弃用4.4版本的tegra_xusb_padctl内容定义方式改为了新版本具体参考如下:

#if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2
    xhci@3530000 {
        status = "okay";
        phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
            <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
            <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-2}>,
            <&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-0}>;
        phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0";
    };
#else
    xhci@3530000 {
        status = "okay";
        phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
                    <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(2)>;
        phy-names = "utmi-0", "utmi-1","utmi-2", "usb3-0", "usb3-1", "usb3-2";
        /*
        phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>;
        phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-1";
        */
        nvidia,boost_cpu_freq = <800>;
    };
#endif

验证三、(2019/04/20 12:00 已解决全部问题,可发布)

ODM-DATA = 0x609000 
1. NV 默认DTS 可识别PCIe-USB + USB W7下侧USB2.0,上侧不识别且无USB3.0
nvidia@tw-tx2:~$ dmesg | grep "2019"
[    0.000000] Linux version 4.9.140-tegra (dennis@dennisJiang) (gcc version 6.4.1 20170707 (Linaro GCC 6.4-2017.08) ) #3 SMP PREEMPT Sat Apr 13 17:54:43 CST 2019
[    0.184019] DTB Build time: Apr 19 2019 16:36:29
[    0.437377] DTB Build time: Apr 19 2019 16:36:29
[    5.039749] tegra_rtc c2a0000.rtc: setting system clock to 2019-04-19 08:38:12 UTC (1555663092)
[   12.062019] wl_android_wifi_on in

nvidia@tw-tx2:~$ ls -l /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data
-r--r--r-- 1 root root 4 4月  19 16:41 enable-pcie-on-uphy-lane0
-r--r--r-- 1 root root 4 4月  19 16:41 enable-pcie-on-uphy-lane4
-r--r--r-- 1 root root 4 4月  19 16:41 enable-sata-on-uphy-lane5
-r--r--r-- 1 root root 4 4月  19 16:41 enable-xusb-on-uphy-lane1
-r--r--r-- 1 root root 4 4月  19 16:41 enable-xusb-on-uphy-lane2

nvidia@tw-tx2:~$ xxd /proc/device-tree/xhci@3530000/phy-names
00000000: 7573 6232 2d30 0075 7362 322d 3100       usb2-0.usb2-1.

nvidia@tw-tx2:~$ ls /proc/device-tree/pinctrl@3520000/pinmux/
e3325-usb3-std-A-HS  e3325-usb3-std-A-SS  linux,phandle  name  phandle  usb2-micro-AB  usb2-std-A-port2  usb3-std-A-port2

2. 修改DTS后可识别PCIe-USB + USB W7 双USB2.0+ 单USB3.0
nvidia@tw-tx2:~$ 
nvidia@tw-tx2:~$ ls -l /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data 
total 0
-r--r--r-- 1 root root 4 4月  20 14:43 enable-pcie-on-uphy-lane0
-r--r--r-- 1 root root 4 4月  20 14:43 enable-pcie-on-uphy-lane4
-r--r--r-- 1 root root 4 4月  20 14:43 enable-sata-on-uphy-lane5
-r--r--r-- 1 root root 4 4月  20 14:43 enable-xusb-on-uphy-lane1
-r--r--r-- 1 root root 4 4月  20 14:43 enable-xusb-on-uphy-lane2

nvidia@tw-tx2:~$ xxd /proc/device-tree/xhci@3530000/phy-names
00000000: 7573 6232 2d30 0075 7362 322d 3100 7573  usb2-0.usb2-1.us
00000010: 6232 2d32 0075 7362 332d 3000 7573 6233  b2-2.usb3-0.usb3
00000020: 2d31 0075 7362 332d 3200                 -1.usb3-2.

nvidia@tw-tx2:~$ ls /proc/device-tree/pinctrl@3520000/pinmux/
linux,phandle  name  phandle  usb2-a  usb2-b  usb2-micro-AB  usb3-a  usb3-b  usb3-c

修改 tegra186-quill-p3310-1000-c03-00-base.dts 删除掉如下内容padctl旧版本
xhci@3530000 {
  status = "okay";
  phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
          <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
          <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>;
  phy-names = "utmi-0", "utmi-1","utmi-2";
    };

A300(007) USB Debug

如下W7(上下仅识别为USB2.0) 
#if TEGRA_XUSB_PADCONTROL_VERSION >= DT_VERSION_2
    xusb_padctl@3520000 {
        status = "okay";
        pinctrl-0 = <&vbus_en0_default_state>;
        pinctrl-1 = <&vbus_en1_default_state>;
        pinctrl-2 = <&vbus_en0_sfio_tristate_state>;
        pinctrl-3 = <&vbus_en1_sfio_tristate_state>;
        pinctrl-4 = <&vbus_en0_sfio_passthrough_state>;
        pinctrl-5 = <&vbus_en1_sfio_passthrough_state>;
        pinctrl-names = "vbus_en0_default", "vbus_en1_default",
            "vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate",
            "vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough";

        pads {
            usb2 {
                lanes {
                    usb2-0 {
                        nvidia,function = "xusb";
                        status = "okay";
                    };
                    usb2-1 {
                        nvidia,function = "xusb";
                        status = "okay";
                    };
                    usb2-2 {
                        nvidia,function = "xusb";
                        status = "okay";
                    };
                };
            };
            usb3 {
                lanes {
                    usb3-0 {
                        nvidia,function = "xusb";
                        status = "okay";
                    };
                    usb3-1 {
                        nvidia,function = "xusb";
                        status = "okay";
                    };
                    usb3-2 {
                        nvidia,function = "xusb";
                        status = "okay";
                    };
                };
            };
        };

        ports {
            usb2-0 {
                status = "okay";
                mode = "otg";
                vbus-supply = <&vdd_usb0_5v>;
            };
            usb2-1 {
                status = "okay";
                mode = "host";
                vbus-supply = <&vdd_usb1_5v>;
            };
            usb2-2 {
                status = "okay";
                mode = "host";
                vbus-supply = <&battery_reg>;
            };
            usb3-0 {
                nvidia,usb2-companion = <0>;
                status = "okay";
            };
            usb3-1 {
                nvidia,usb2-companion = <1>;
                status = "okay";
            };
            usb3-2 {
                nvidia,usb2-companion = <2>;
                status = "okay";
            };
        };
    };
#endif
    pinctrl@3520000 {
        status = "okay";
        pinctrl-0 = <&tegra_xusb_padctl_pinmux_default>;
        pinctrl-1 = <&vbus_en0_sfio_tristate_state>;
        pinctrl-2 = <&vbus_en1_sfio_tristate_state>;
        pinctrl-3 = <&vbus_en0_sfio_passthrough_state>;
        pinctrl-4 = <&vbus_en1_sfio_passthrough_state>;
        pinctrl-5 = <&vbus_en0_default_state>;
        pinctrl-6 = <&vbus_en1_default_state>;
        pinctrl-names = "default",
            "vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate",
            "vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough",
            "vbus_en0_default", "vbus_en1_default";
        tegra_xusb_padctl_pinmux_default: pinmux {
            /* Quill does not support usb3-micro AB */
            usb2-micro-AB {
                nvidia,lanes = "otg-0";
                nvidia,function = "xusb";
                nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
                nvidia,oc-pin = <0>;
            };
                usb2-a {
                        nvidia,lanes = "otg-1";
                        nvidia,function = "xusb";
                    nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                nvidia,oc-pin = <1>;    
                status = "okay";
                };
                usb2-b {
                nvidia,lanes = "otg-2";
                nvidia,function = "xusb";
                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;    
                status = "okay";            
                };
                usb3-a {
                    nvidia,lanes = "usb3-0";
                    nvidia,function = "xusb";
                    nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                status = "okay";            
                };
                usb3-b {
                    nvidia,lanes = "usb3-1";
                    nvidia,function = "xusb";
                    nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                status = "okay";            
                };
                usb3-c {
                    nvidia,lanes = "usb3-2";
                    nvidia,function = "xusb";
                    nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                status = "okay";            
                };

        };
    };
如下仅W7 上侧USB一直为USB2.0
usb3-0 {
    nvidia,usb2-companion = <1>;
    status = "okay";
};
usb3-1 {
    nvidia,usb2-companion = <2>;
    status = "okay";
};
usb3-2 {
    nvidia,usb2-companion = <0>;
    status = "okay";
};

如下仅W7 上下侧USB均为USB3.0
usb3-0 {
    nvidia,usb2-companion = <1>;
    status = "okay";
};
usb3-1 {
    nvidia,usb2-companion = <0>;
    status = "okay";
};
usb3-2 {
    nvidia,usb2-companion = <2>;
    status = "okay";
};
或
usb3-0 {
    nvidia,usb2-companion = <0>;
    status = "okay";
};
usb3-1 {
    nvidia,usb2-companion = <1>;
    status = "okay";
};
usb3-2 {
    nvidia,usb2-companion = <2>;
    status = "okay";
};

源码路径:
/home/dennis/sda/home/dennis/git/jetpack_4.2_linux_p3310/Linux_for_Tegra/sources/kernel/kernel-4.9

下载路径:
/home/dennis/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3310/Linux_for_Tegra

cp /home/dennis/sda/home/dennis/git/jetpack_4.2_linux_p3310/Linux_for_Tegra/out/kernel_out/arch/arm64/boot/dts/tegra186-quill-p3310-1000-c03-00-base.dtb kernel/dtb/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353