From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_MUTT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B0A5C10F00 for ; Thu, 28 Feb 2019 21:39:10 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 33BFA218AE for ; Thu, 28 Feb 2019 21:39:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Ylx0uUaa" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 33BFA218AE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ravnborg.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mqTQlOPtPHlMUWD0pSWf7b47+apHdZKuEBkjw7FS6y0=; b=Ylx0uUaapm2ihe yl6dh3BOhVSFLjz8nQd27QFBhwpommlc/8vmIYQhVMWjvitmdRjLTw4NmReDUbYUv+yEHz3YZbA+2 gVzCc+Z8mUp+g+41XxBLJZ5Yc7iBvKiV2HwCiqEoawzdz0B+Qk/pOx6Vl7i4UCXXNxdw2E8LHmw+b iZKn1zUVKnA34ItlwLGhhP74fWiv6NLRbkfGV3uNa/HoEFNY9SXVOI5RdWEPuF3iCmYXoUiP/19dZ V59Q/7W43u52ZFqEhffQqVgIsZdottxD+F/0ckXiq/fVtNF+5yITal7zYVGFxcbv/CIzL4R1edQkP yO8dZ3T0PhRRhskqwrFw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gzTOW-00030U-VR; Thu, 28 Feb 2019 21:39:08 +0000 Received: from asavdk3.altibox.net ([109.247.116.14]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gzTOT-0002zi-GY for linux-arm-kernel@lists.infradead.org; Thu, 28 Feb 2019 21:39:07 +0000 Received: from ravnborg.org (unknown [158.248.194.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by asavdk3.altibox.net (Postfix) with ESMTPS id E9F6520053; Thu, 28 Feb 2019 22:39:00 +0100 (CET) Date: Thu, 28 Feb 2019 22:38:58 +0100 From: Sam Ravnborg To: Claudiu.Beznea@microchip.com Subject: Re: [PATCH 1/7] drm: atmel-hlcdc: add config option for clock selection Message-ID: <20190228213858.GC30188@ravnborg.org> References: <1551284609-14594-1-git-send-email-claudiu.beznea@microchip.com> <1551284609-14594-2-git-send-email-claudiu.beznea@microchip.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1551284609-14594-2-git-send-email-claudiu.beznea@microchip.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=dqr19Wo4 c=1 sm=1 tr=0 a=UWs3HLbX/2nnQ3s7vZ42gw==:117 a=UWs3HLbX/2nnQ3s7vZ42gw==:17 a=kj9zAlcOel0A:10 a=XYAwZIGsAAAA:8 a=E3GQLJsnf6gl6KnigtoA:9 a=CjuIK1q_8ugA:10 a=E8ToXWR_bxluHZ7gmE-Z:22 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190228_133905_899474_05388BFA X-CRM114-Status: GOOD ( 24.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, alexandre.belloni@bootlin.com, bbrezillon@kernel.org, airlied@linux.ie, linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Ludovic.Desroches@microchip.com, robh+dt@kernel.org, thierry.reding@gmail.com, dri-devel@lists.freedesktop.org, daniel@ffwll.ch, lee.jones@linaro.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Claudiu One more reply to this patch... On Wed, Feb 27, 2019 at 04:24:16PM +0000, Claudiu.Beznea@microchip.com wrote: > From: Claudiu Beznea > > SAM9x60 LCD Controller has no option to select clock source as previous > controllers have. To be able to use the same driver even for this LCD > controller add a config option to know if controller supports this. > > Signed-off-by: Claudiu Beznea > --- > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 12 +++++++----- > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h | 2 ++ > 2 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > index 8070a558d7b1..17a7a18f6a07 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > @@ -78,7 +78,8 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c) > unsigned long mode_rate; > struct videomode vm; > unsigned long prate; > - unsigned int cfg; > + unsigned int mask = ATMEL_HLCDC_CLKDIV_MASK | ATMEL_HLCDC_CLKPOL; > + unsigned int cfg = 0; > int div; > > vm.vfront_porch = adj->crtc_vsync_start - adj->crtc_vdisplay; > @@ -101,7 +102,10 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c) > (adj->crtc_hdisplay - 1) | > ((adj->crtc_vdisplay - 1) << 16)); > > - cfg = ATMEL_HLCDC_CLKSEL; > + if (!crtc->dc->desc->fixed_clksrc) { > + cfg = ATMEL_HLCDC_CLKSEL; > + mask |= ATMEL_HLCDC_CLKSEL; > + } Maybe this is just too late to look at code, but I do not get this. If the sam9x60 do not support selecting the clk rate then I assume it is either fixed to used system clock or 2 x system clock. And we have in the driver code to adjust the "div" value. The value of div depends on the CLKSEL configuration, so there must be one part of this that is not valid when fixed_clksrc is true. > > prate = 2 * clk_get_rate(crtc->dc->hlcdc->sys_clk); > mode_rate = adj->crtc_clock * 1000; > @@ -132,9 +136,7 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c) > > cfg |= ATMEL_HLCDC_CLKDIV(div); It is the following code (not visible in this patch I talk about: if (div < 2) { div = 2; } else if (ATMEL_HLCDC_CLKDIV(div) & ~ATMEL_HLCDC_CLKDIV_MASK) { /* The divider ended up too big, try a lower base rate. */ cfg &= ~ATMEL_HLCDC_CLKSEL; prate /= 2; div = DIV_ROUND_UP(prate, mode_rate); if (ATMEL_HLCDC_CLKDIV(div) & ~ATMEL_HLCDC_CLKDIV_MASK) div = ATMEL_HLCDC_CLKDIV_MASK; } else { int div_low = prate / mode_rate; if (div_low >= 2 && ((prate / div_low - mode_rate) < 10 * (mode_rate - prate / div))) /* * At least 10 times better when using a higher * frequency than requested, instead of a lower. * So, go with that. */ div = div_low; } Am I missing something obvious? > - regmap_update_bits(regmap, ATMEL_HLCDC_CFG(0), > - ATMEL_HLCDC_CLKSEL | ATMEL_HLCDC_CLKDIV_MASK | > - ATMEL_HLCDC_CLKPOL, cfg); > + regmap_update_bits(regmap, ATMEL_HLCDC_CFG(0), mask, cfg); > > cfg = 0; > > diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > index 70bd540d644e..0155efb9c443 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.h > @@ -328,6 +328,7 @@ atmel_hlcdc_layer_to_plane(struct atmel_hlcdc_layer *layer) > * @max_hpw: maximum horizontal back/front porch width > * @conflicting_output_formats: true if RGBXXX output formats conflict with > * each other. > + * @fixed_clksrc: true if clock source is fixed Be specific here. Tell if "fixed_clksrc == true" equals system clock or 2 x system clock. Sam _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel