Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp5220594iob; Mon, 9 May 2022 11:14:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJze84RiGSa2PUi+YEIMr3kGLpHSHEaO/DpqH4/JMbpyuWZt0i0jMUyttp0TRmMrn2RYvPvy X-Received: by 2002:a05:6870:15c3:b0:ed:9d61:a56c with SMTP id k3-20020a05687015c300b000ed9d61a56cmr7846198oad.152.1652120044187; Mon, 09 May 2022 11:14:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652120044; cv=none; d=google.com; s=arc-20160816; b=rSc85n/VOtLLadfWG83s/oF3053t4/C15dJvWWdiOXVSzxS30YOogVgUTQWZM34OYU W589WkOiDiEas8Q0wKMnc5kJjaZDzPca3IrIKOPk1K2n/dF37C8thg7AxB5Bp8GUIXdz QIfz2CfdYR9XkuvNK93IFoygHg4iHN/ydWJriBvJHkQbA+7VMiXmVJaGw81VJDHO93gA gJfnX9KZuU4P4Txcu4004iiBzN6S9G0O2n0siGSV+c+MFBnRFAg3aTJPYWP4Vheu9XzT Xn2zLrS9S0p3eQtqPVHW3cinAvRI9spHGmoL6L95rG+GK8WK1OSGce53HnNViBrPhBdd AOVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :mime-version:user-agent:date:message-id:subject:to:from; bh=r2MlE+frcxhpkICTkxRpgUXZEGnX564BuJCELiL04t0=; b=SfnEx4+pykMeRm3ZFxqhmDhooyv4+/GuijMyN5fbjFgcQWQvvsH1O4Fnqj+idzVqsh XXd5zR88AeVU+Rt1aat2UYIo1zJjrwAQ4sA/c0nos6M7UHBr5aH6Tzd4RCZZPE3DU4wo rqr/IGdWE9gA1xaSfXce+uHxZGKbnvwDRuQ5/PxW8nMN65FnU4PuW7vXOuG2SdeToJqQ 2gzKknx7neVK9qxqOjKZA1fTnf+Jcwz2tn0FiJ70s+ICBwFfUpae13IezSPa+I3XZCfm yVq1rBQVltvwGCFD3Hnexa4t/AItvXDaovzvRx2fJ+fXkCGvuCGz7/nlOU8PbaMp8Snl 1R2Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id v11-20020a056830090b00b006067c8019absi7191600ott.150.2022.05.09.11.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 May 2022 11:14:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 02EDC2AC6EC; Mon, 9 May 2022 11:08:50 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240027AbiEISMb (ORCPT + 99 others); Mon, 9 May 2022 14:12:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240001AbiEISMa (ORCPT ); Mon, 9 May 2022 14:12:30 -0400 Received: from out28-220.mail.aliyun.com (out28-220.mail.aliyun.com [115.124.28.220]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4711C2AACD8; Mon, 9 May 2022 11:08:33 -0700 (PDT) X-Alimail-AntiSpam: AC=CONTINUE;BC=0.07437433|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.00800986-0.000615016-0.991375;FP=0|0|0|0|0|-1|-1|-1;HT=ay29a033018047212;MF=zhouyanjie@wanyeetech.com;NM=1;PH=DS;RN=10;RT=10;SR=0;TI=SMTPD_---.Ngpb1vc_1652119708; Received: from 192.168.30.128(mailfrom:zhouyanjie@wanyeetech.com fp:SMTPD_---.Ngpb1vc_1652119708) by smtp.aliyun-inc.com(33.37.67.126); Tue, 10 May 2022 02:08:29 +0800 From: Zhou Yanjie To: jringle@gridpoint.com, shc_work@mail.ru, Rob Herring , Paul Cercueil , Paul Boddie , "H. Nikolaus Schaller" , Jiaxun Yang , linux-serial@vger.kernel.org, linux-mips , Linux Kernel Mailing List Subject: Question about SC16IS752 device tree. Message-ID: <7c89db86-4055-90b5-6a67-611410f5759f@wanyeetech.com> Date: Tue, 10 May 2022 02:08:28 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi folks, I encountered a problem when using the SC16IS752 to expand the serial port. I connected two Bluetooth modules to the two serial ports extended by the SC16IS752. The device tree is as follows: &ssi0 {     status = "okay";     num-cs = <2>;     pinctrl-names = "default";     pinctrl-0 = <&pins_ssi0>;     sc16is752: expander@0 {         compatible = "nxp,sc16is752";         reg = <0>; /* CE0 */         spi-rx-bus-width = <1>;         spi-tx-bus-width = <1>;         spi-max-frequency = <6000000>;         clocks = <&exclk_sc16is752>;         interrupt-parent = <&gpb>;         interrupts = <18 IRQ_TYPE_EDGE_FALLING>;         gpio-controller;         #gpio-cells = <2>;         bluetooth@0 {             compatible = "brcm,bcm43438-bt";             max-speed = <1000000>;             device-wakeup-gpios = <&gpc 26 GPIO_ACTIVE_HIGH>;             reset-gpios = <&gpb 17 GPIO_ACTIVE_LOW>;         };         bluetooth@1 {             compatible = "brcm,bcm43438-bt";             device-wakeup-gpios = <&gpc 28 GPIO_ACTIVE_HIGH>;             reset-gpios = <&gpb 19 GPIO_ACTIVE_LOW>;         };     }; }; There are the following error messages after startup: [    0.548417] serial serial0-0: controller busy [    0.553572] serial serial0-0: failure adding device. status -EBUSY [    0.559764] serial serial0: tty port ttySC0 registered [    0.565545] spi0.0: ttySC1 at I/O 0x1 (irq = 18, base_baud = 3000000) is a SC16IS752 [    0.573987] serial serial1-0: controller busy [    0.578351] serial serial1-0: failure adding device. status -EBUSY [    0.585003] serial serial1: tty port ttySC1 registered And only the module connected to the first serial port (ttySC0) can work normally. If I change the device tree to: &ssi0 {     status = "okay";     num-cs = <2>;     pinctrl-names = "default";     pinctrl-0 = <&pins_ssi0>;     sc16is752: expander@0 {         compatible = "nxp,sc16is752";         reg = <0>; /* CE0 */         spi-rx-bus-width = <1>;         spi-tx-bus-width = <1>;         spi-max-frequency = <6000000>;         clocks = <&exclk_sc16is752>;         interrupt-parent = <&gpb>;         interrupts = <18 IRQ_TYPE_EDGE_FALLING>;         gpio-controller;         #gpio-cells = <2>;         bluetooth@0 {             compatible = "brcm,bcm43438-bt";             max-speed = <1000000>;             device-wakeup-gpios = <&gpc 26 GPIO_ACTIVE_HIGH>;             reset-gpios = <&gpb 17 GPIO_ACTIVE_LOW>;         };     }; }; Then there will be no error message, and the module connected to the first serial port (ttySC0) can also work normally. After tracing, the problem seems to be in "serdev_device_add()" (line 111) of "drivers/tty/serdev/core.c": int serdev_device_add(struct serdev_device *serdev) {     struct serdev_controller *ctrl = serdev->ctrl;     struct device *parent = serdev->dev.parent;     int err;     dev_set_name(&serdev->dev, "%s-%d", dev_name(parent), serdev->nr);     /* Only a single slave device is currently supported. */     if (ctrl->serdev) {         dev_err(&serdev->dev, "controller busy\n");         return -EBUSY;     }     ctrl->serdev = serdev;     err = device_add(&serdev->dev);     if (err < 0) {         dev_err(&serdev->dev, "Can't add %s, status %pe\n",             dev_name(&serdev->dev), ERR_PTR(err));         goto err_clear_serdev;     }     dev_dbg(&serdev->dev, "device %s registered\n", dev_name(&serdev->dev));     return 0; err_clear_serdev:     ctrl->serdev = NULL;     return err; } EXPORT_SYMBOL_GPL(serdev_device_add); Is there any way to correctly describe the device mounted on the second serial port (ttySC1) in the device tree? Or how do I need to modify the "drivers/tty/serdev/core.c" to make the SC16IS752 still work properly with two child nodes mounted? Thanks and beset regards!