Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp310711pxb; Wed, 23 Mar 2022 19:06:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyMtLJ2E3pwDDEbrdccsRfKGQPc9LMyVK6VcYTlKl1OTf3Dm9L9tPhVJdBdNPX18eUtsz/O X-Received: by 2002:a65:55cd:0:b0:386:861:8a3c with SMTP id k13-20020a6555cd000000b0038608618a3cmr2230023pgs.278.1648087563390; Wed, 23 Mar 2022 19:06:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648087563; cv=none; d=google.com; s=arc-20160816; b=yaaSerBiSg5rmtZ/pXlZRdN+MPwVAX84QACjdmC9YlHsw4BeKgAr4vVrc0/vvy7p7M tAp5Ln4kqcThE0XO5qWapVenwG3b3xsJk8WmWo4m/eGWgYhDNxm8vWwqRXepOnVASpuQ xfpATTMHhCGj1irBELveW4TfEp50pbWvxMfiygopoYvvFaGa4K7WiNmVPQ1AF/xbsAcs R4TGmbwpNxMDF8PmJhFuFX8oZYObXw0ZmzCSZaCfIRsVf/iRAdGLuEtwUt7QcJzMV4jG IoClYZGkcqfBGXTZ9MP/7xUefismfu6hyd6ONIJz6KRfq658xs+KC1jNDmKHyT7sOUVP g8Sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=eMGYAyeqTOLUvo+HITT+io1Cw3+qfR6fs+F/KsEiXsU=; b=NScVlMTYhV1YvOtW8Gfl6ayvLURHJzNhtOkX+e2LKbr7qD3sLqST0a0SQjkhs7z52P cmXBrrAKP1bkF5oOrNqzCgGsUD+asqjYUo3X97lEguR8ymYX1OG7u8BhkwBb4DnPTBKO 7pBZcXIdtv4lGxWOaA75AKVIgGoBhf3yHY70p9TdPFJdDeDHAvCHlNq9Q/2Fmm+iMA5L kaRyzZ/ChBfsPZl9KggGBhCExyaliGiR5xpSWWyu+5BSphbgY7lj4EMdGsc74R5Kk4Id +fU61xScj0NWfFy0WL8hc7o5gbxdpxg4zXL4oM9cHy23I+qsGu3wSUHYUeq3l5lYtlSb JJ5Q== 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:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kk9-20020a17090b4a0900b001c6fb9a0ff6si7592995pjb.161.2022.03.23.19.05.49; Wed, 23 Mar 2022 19:06:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243298AbiCWNFA (ORCPT + 99 others); Wed, 23 Mar 2022 09:05:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236412AbiCWNE6 (ORCPT ); Wed, 23 Mar 2022 09:04:58 -0400 Received: from mail-oi1-f178.google.com (mail-oi1-f178.google.com [209.85.167.178]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1433B6D4D9; Wed, 23 Mar 2022 06:03:25 -0700 (PDT) Received: by mail-oi1-f178.google.com with SMTP id e189so1534119oia.8; Wed, 23 Mar 2022 06:03:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=eMGYAyeqTOLUvo+HITT+io1Cw3+qfR6fs+F/KsEiXsU=; b=2nFcMJeCmVmQwj7yMEz2BG0DcEjKisyQBYQ/Irnjf4O43mIhOmm/r92o1tNhBpPEJs 6zTaObjo1lQVlSxhPi6kUM9Zq9pLD1UT3VwkHZN3mgYIPbma7QXH7fZ23sOOWVmX+DTU j1+d0aXTO/6zn9BnrMki3DVKpVPUahjey1wu3GQqAbWHFAnKlvsJRGzxnQzFKHLKpLur Vx2k9AKg6vicIp9BiODM5wIvrzgwWEgz0GMHRulcuHfL+BT4ursyc1RM0l4IABqCqfFU e9+KWEpwYIAJ8rq1S4Dij0lQOB2Jqa1ZAg1qVxerDwS+VrXM+hREYQFD8HuSMKPsTvUh daRA== X-Gm-Message-State: AOAM532l/GWp+JY66lZRJtOIXXPiO5k3o3MtR0jbdO6Ym1haXjPwOZag p0AL20/LH/VmmG1GQsR1Jg== X-Received: by 2002:a05:6808:18a0:b0:2d9:bde3:5776 with SMTP id bi32-20020a05680818a000b002d9bde35776mr4692906oib.29.1648040604819; Wed, 23 Mar 2022 06:03:24 -0700 (PDT) Received: from robh.at.kernel.org (66-90-144-107.dyn.grandenetworks.net. [66.90.144.107]) by smtp.gmail.com with ESMTPSA id l18-20020a4a3512000000b00324add481b1sm834374ooa.9.2022.03.23.06.03.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Mar 2022 06:03:23 -0700 (PDT) Received: (nullmailer pid 3922634 invoked by uid 1000); Wed, 23 Mar 2022 13:03:22 -0000 Date: Wed, 23 Mar 2022 08:03:22 -0500 From: Rob Herring To: Sui Jingfeng <15330273260@189.cn> Cc: Maxime Ripard , Thomas Zimmermann , Roland Scheidegger , Zack Rusin , Christian Gmeiner , David Airlie , Daniel Vetter , Thomas Bogendoerfer , Dan Carpenter , Krzysztof Kozlowski , Andrey Zhizhikin , Sam Ravnborg , "David S . Miller" , Jiaxun Yang , Lucas Stach , Maarten Lankhorst , Ilia Mirkin , Qing Zhang , suijingfeng , linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: Re: [PATCH v11 5/7] dt-bindings: display: Add Loongson display controller Message-ID: References: <20220321162916.1116541-1-15330273260@189.cn> <20220321162916.1116541-6-15330273260@189.cn> <199a2869-cd83-d24e-0ad0-25d15d76fc13@189.cn> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <199a2869-cd83-d24e-0ad0-25d15d76fc13@189.cn> X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 On Wed, Mar 23, 2022 at 11:38:55AM +0800, Sui Jingfeng wrote: > > On 2022/3/23 04:55, Rob Herring wrote: > > On Tue, Mar 22, 2022 at 10:33:45AM +0800, Sui Jingfeng wrote: > > > On 2022/3/22 07:20, Rob Herring wrote: > > > > On Tue, Mar 22, 2022 at 12:29:14AM +0800, Sui Jingfeng wrote: > > > > > From: suijingfeng > > > > > > > > > Needs a commit message. > > > > > > > > > Signed-off-by: suijingfeng > > > > > Signed-off-by: Sui Jingfeng <15330273260@189.cn> > > > > Same person? Don't need both emails. > > > Yes,? suijingfeng@loongson.cn is my company's email. But it can not be used > > > to send patches to dri-devel, > > > > > > when send patches with this email, the patch will not be shown on patch > > > works. > > > > > > Emails? are either blocked or got? rejected? by loongson's mail server.? It > > > can only receive emails > > > > > > from you and other people, but not dri-devel. so have to use my personal > > > email(15330273260@189.cn) to send patches. > > > > > > > > --- > > > > > .../loongson/loongson,display-controller.yaml | 230 ++++++++++++++++++ > > > > > 1 file changed, 230 insertions(+) > > > > > create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml > > > > > > > > > > diff --git a/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml > > > > > new file mode 100644 > > > > > index 000000000000..7be63346289e > > > > > --- /dev/null > > > > > +++ b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml > > > > > @@ -0,0 +1,230 @@ > > > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > > > > +%YAML 1.2 > > > > > +--- > > > > > +$id: http://devicetree.org/schemas/display/loongson/loongson,display-controller.yaml# > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > > + > > > > > +title: Loongson LS7A1000/LS2K1000/LS2K0500 Display Controller Device Tree Bindings > > > > > + > > > > > +maintainers: > > > > > + - Sui Jingfeng > > > > > + > > > > > +description: |+ > > > > > + > > > > > + Loongson display controllers are simple which require scanout buffers > > > > > + to be physically contiguous. LS2K1000/LS2K0500 is a SOC, only system > > > > > + memory is available. LS7A1000/LS7A2000 is bridge chip which is equipped > > > > > + with a dedicated video RAM which is 64MB or more, precise size can be > > > > > + read from the PCI BAR 2 of the GPU device(0x0014:0x7A15) in the bridge > > > > > + chip. > > > > > + > > > > > + LSDC has two display pipes, each way has a DVO interface which provide > > > > > + RGB888 signals, vertical & horizontal synchronisations, data enable and > > > > > + the pixel clock. LSDC has two CRTC, each CRTC is able to scanout from > > > > > + 1920x1080 resolution at 60Hz. Each CRTC has two FB address registers. > > > > > + > > > > > + For LS7A1000, there are 4 dedicated GPIOs whose control register is > > > > > + located at the DC register space. They are used to emulate two way i2c, > > > > > + One for DVO0, another for DVO1. > > > > > + > > > > > + LS2K1000 and LS2K0500 SoC grab i2c adapter from other module, either > > > > > + general purpose GPIO emulated i2c or hardware i2c in the SoC. > > > > > + > > > > > + LSDC's display pipeline have several components as below description, > > > > > + > > > > > + The display controller in LS7A1000: > > > > > + ___________________ _________ > > > > > + | -------| | | > > > > > + | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monitor | > > > > > + | _ _ -------| ^ ^ |_________| > > > > > + | | | | | -------| | | > > > > > + | |_| |_| | i2c0 <--------+-------------+ > > > > > + | -------| > > > > > + | DC IN LS7A1000 | > > > > > + | _ _ -------| > > > > > + | | | | | | i2c1 <--------+-------------+ > > > > > + | |_| |_| -------| | | _________ > > > > > + | -------| | | | | > > > > > + | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel | > > > > > + | -------| |_________| > > > > > + |___________________| > > > > > + > > > > > + Simple usage of LS7A1000 with LS3A4000 CPU: > > > > > + > > > > > + +------+ +-----------------------------------+ > > > > > + | DDR4 | | +-------------------+ | > > > > > + +------+ | | PCIe Root complex | LS7A1000 | > > > > > + || MC0 | +--++---------++----+ | > > > > > + +----------+ HT 3.0 | || || | > > > > > + | LS3A4000 |<-------->| +---++---+ +--++--+ +---------+ +------+ > > > > > + | CPU |<-------->| | GC1000 | | LSDC |<-->| DDR3 MC |<->| VRAM | > > > > > + +----------+ | +--------+ +-+--+-+ +---------+ +------+ > > > > > + || MC1 +---------------|--|----------------+ > > > > > + +------+ | | > > > > > + | DDR4 | +-------+ DVO0 | | DVO1 +------+ > > > > > + +------+ VGA <--|ADV7125|<--------+ +-------->|TFP410|--> DVI/HDMI > > > > > + +-------+ +------+ > > > > > + > > > > > + The display controller in LS2K1000/LS2K0500: > > > > > + ___________________ _________ > > > > > + | -------| | | > > > > > + | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monitor | > > > > > + | _ _ -------| ^ ^ |_________| > > > > > + | | | | | | | | > > > > > + | |_| |_| | +------+ | > > > > > + | <---->| i2c0 |<---------+ > > > > > + | DC IN LS2K1000 | +------+ > > > > > + | _ _ | +------+ > > > > > + | | | | | <---->| i2c1 |----------+ > > > > > + | |_| |_| | +------+ | _________ > > > > > + | -------| | | | | > > > > > + | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel | > > > > > + | -------| |_________| > > > > > + |___________________| > > > > > + > > > > > +properties: > > > > > + $nodename: > > > > > + pattern: "^display-controller@[0-9a-f],[0-9a-f]$" > > > > > + > > > > > + compatible: > > > > > + oneOf: > > > > > + - items: > > > > > + - enum: > > > > > + - loongson,ls7a1000-dc > > > > > + - loongson,ls2k1000-dc > > > > > + - loongson,ls2k0500-dc > > > > > + > > > > > + reg: > > > > > + maxItems: 1 > > > > > + > > > > > + interrupts: > > > > > + maxItems: 1 > > > > > + > > > > > + '#address-cells': > > > > > + const: 1 > > > > > + > > > > > + '#size-cells': > > > > > + const: 0 > > > > > + > > > > > + i2c-gpio@0: > > > > > + description: | > > > > > + Built-in GPIO emulate i2c exported for external display bridge > > > > If you have i2c-gpio, that belongs at the DT top-level, not here. > > > > > > > > > + configuration, onitor detection and edid read back etc, for ls7a1000 > > > > > + only. Its compatible must be lsdc,i2c-gpio-0. The reg property can be > > > > No, there's a defined i2c-gpio compatible already. > > > This is different from the i2c-gpio already defined under drivers/i2c/busses/i2c-gpio.c, > > > By design, my i2c-gpio is vendor specific properties, lsdc device driver create the i2c > > > adapter at runtime. These are 4 dedicated GPIOs whose control register is located at the > > > LSDC register space, not general purpose GPIOs with separate control register resource. > > > So i think it is the child node of?display-controller@6,1,?it belongs to LSDC. > > > It seems that put it at the DT top-level break the hierarchy and relationship. > > Okay, I see. Then just 'i2c' for the node names. You need a reference to > > i2c-controller.yaml for these nodes too. > > > > The compatible should not have an index in it. > OK, i will fix this at the next version. thanks. > > > > > + used to specify a I2c adapter bus number, if you don't specify one > > > > > + i2c driver core will dynamically assign a bus number. Please specify > > > > Bus numbers are a linux detail not relevant to DT binding. > > > > > > > > > + it only when its bus number matters. Bus number greater than 6 is safe > > > > > + because ls7a1000 bridge have 6 hardware I2C controller integrated. > > > > > + > > > > > + i2c-gpio@1: > > > > > + description: | > > > > > + Built-in GPIO emulate i2c exported for external display bridge > > > > > + configuration, onitor detection and edid read back etc, for ls7a1000 > > > > > + only. Its compatible must be lsdc,i2c-gpio-1. > > > > > + > > > > > + ports: > > > > > + $ref: /schemas/graph.yaml#/properties/ports > > > > > + > > > > > + properties: > > > > > + port@0: > > > > > + $ref: /schemas/graph.yaml#/properties/port > > > > > + description: output port node connected with DPI panels or external encoders, with only one endpoint. > > > > > + > > > > > + port@1: > > > > > + $ref: /schemas/graph.yaml#/properties/port > > > > > + description: output port node connected with DPI panels or external encoders, with only one endpoint. > > > > > + > > > > > + required: > > > > > + - port@0 > > > > > + - port@1 > > > > > + > > > > > +required: > > > > > + - compatible > > > > > + - reg > > > > > + - interrupts > > > > > + - ports > > > > > + > > > > > +additionalProperties: false > > > > > + > > > > > +examples: > > > > > + - | > > > > > + #include > > > > > + bus { > > > > > + > > > > > + #address-cells = <3>; > > > > > + #size-cells = <2>; > > > > > + #interrupt-cells = <2>; > > > > > + > > > > > + display-controller@6,1 { > > > > > + compatible = "loongson,ls7a1000-dc"; > > > > > + reg = <0x3100 0x0 0x0 0x0 0x0>; > > > > > + interrupts = <28 IRQ_TYPE_LEVEL_HIGH>; > > > > > + > > > > > + #address-cells = <1>; > > > > > + #size-cells = <0>; > > > > > + > > > > > + i2c-gpio@0 { > > > > > + compatible = "lsdc,i2c-gpio-0"; > > > > > + reg = <6>; > > 'reg' needs to be documented with some description of what 6 and 7 > > represent. If they are the control register offset, then make the > > address translatable (use 'ranges' and define the size). > > By design, the reg property is used to specify a I2c adapter bus number, > if we don't specify one, i2c driver core will dynamically assign a bus number. > then the nr of the i2c adapter will started from 0. I want is start from 6 > to avoid potential conflict feature hardware I2C driver. > > Because LS7A1000 bridge chip have 6 hardware I2C controller integrated, > but its driver is not up-streamed yet. By default these hardware I2C controller's > nr is started from 0. Linux's numbering doesn't belong in DT. So no, you can't use 'reg' in that way. > Even through i2c driver core can dynamically generate a number, i still want it > to be fixed and keep consistent and explicit. That is, i2c6 is for display pipe 0, > i2c7 is for display pipe 1. This follow the convention and flexible enough. You may want that, but that is not how the kernel works. Specific numbers are not guaranteed. I'm sure you've seen this for disks, network interfaces, etc. Rob