From owner-freebsd-arm@freebsd.org Thu Aug 30 15:38:15 2018 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CEFC410A1B36 for ; Thu, 30 Aug 2018 15:38:15 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound1b.ore.mailhop.org (outbound1b.ore.mailhop.org [54.200.247.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0F112863AC for ; Thu, 30 Aug 2018 15:38:14 +0000 (UTC) (envelope-from ian@freebsd.org) X-MHO-RoutePath: aGlwcGll X-MHO-User: b247bcae-ac6a-11e8-ac8d-0b43254c4a2d X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Originating-IP: 67.177.211.60 X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (unknown [67.177.211.60]) by outbound1.ore.mailhop.org (Halon) with ESMTPSA id b247bcae-ac6a-11e8-ac8d-0b43254c4a2d; Thu, 30 Aug 2018 15:38:09 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id w7UFc8EG017785; Thu, 30 Aug 2018 09:38:09 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <1535643488.33841.74.camel@freebsd.org> Subject: Re: utility for pin in BBB: PX.Y --> pin_mode, pin_name From: Ian Lepore To: Nicola Mingotti , Russell Haley Cc: freebsd-arm Date: Thu, 30 Aug 2018 09:38:08 -0600 In-Reply-To: References: <4661fc41-935a-56d5-2cc2-125085daf30a@gmail.com> <1535568374.33841.47.camel@freebsd.org> <1535576856.33841.58.camel@freebsd.org> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.18.5.1 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Aug 2018 15:38:16 -0000 On Wed, 2018-08-29 at 23:40 +0200, Nicola Mingotti wrote: > > On 08/29/18 23:07, Ian Lepore wrote: > > > > On Wed, 2018-08-29 at 22:26 +0200, Nicola Mingotti wrote: > > > > > > On 08/29/18 20:46, Ian Lepore wrote: > > > > > > > > On Wed, 2018-08-29 at 20:01 +0200, Nicola Mingotti wrote: > > > > > > > > > > Thank you for suggestion Russel, > > > > > > > > > > but unfortunately, at best of my knowldege, > > > > > $> man 3 gpio_open > > > > > and its shell command brother > > > > > $> man 8 gpioctl > > > > > > > > > > are not appropriate, they are useful only if a pin > > > > > has been configured as GPIO pin. > > > > > > > > > > The program i look for would be useful instead to esablish > > > > > which physical pin has been configured as GPIO pin or > > > > > PWM, PRU, I2C etc. > > > > > > > > > > I asked also in the Forum, but the only one aswering > > > > > (@Phishry) has given me your same suggestion. > > > > > > > > > > If nobody knows of such a program i will start the > > > > > implementation, > > > > > maybe > > > > > tomorrow. > > > > > > > > > > bye > > > > > Nicola > > > > > > > > > Please bottom-post when replying to freebsd mailing lists. > > > ok ! > > > > > > > > There is no interface defined for getting an fdt_pinctrl driver > > > > to > > > > return info about the current configuration. Even if such an > > > > interface > > > > existed, there would also need to be a new driver providing a > > > > cdev > > > > so > > > > that userland can access the information. > > > ok, no interface. > > > > > > > > There is also nothing in freebsd equivelent to the linux > > > > devmem2 > > > > program. A driver would have to be written to provide access to > > > > device- > > > > mapped memory before such a program could be written. You can't > > > > access > > > > arm hardware registers via /dev/mem or /dev/kmem. > > > > > > > > -- Ian > > > I just compiled devmem2 and it seems to work. I did silly > > > modifications. > > > The code is here: http://euriscom.it/data/dm2.c > > > (forget the first comment lines, they are poor, I did not intend > > > to > > > share this, it is my working copy) > > > > > > if i run it: > > > --------------------------------- > > > #> ./dm2 0x44e10998 b > > > /dev/mem opened. > > > Memory mapped at address 0x20221000. > > > Value at address 0x44E10998 (0x20221998): 0x5 > > > --------------------------------- > > > > > > Whic corresponds to what i wrote in the DTO. > > > ----- > > >              pru_pru_pins: pinmux_pru_pru_pins { > > >                         pinctrl-single,pins = < > > >                             // 0x1a4 0x05   /* P9.27 > > > pr1_pru0_pru_r30_5, > > > Mode 5 output pull-down   */ > > >                             0x19c 0x26   /* P9.28 > > > pr1_pru0_pru_r31_3, > > > Mode 6 input pull-down    */ > > >                             0x198 0x05    /* PRU0-2 -- P9.30 -- > > > pr1_pru0_pru_r30_2 ... se in MODE-5  */ > > >                             >; > > >                     }; > > > ----- > > > > > > This is the only test i made but it seems improbable I got the > > > same > > > value by chance;) > > > > > > It goes without saying that I don't understand all what i wrote, > > > so, i could be boldly wrong ;) > > > > > > If it turns out it works let me know, i can make the port. > > > > > > bye > > > n. > > You might accidentally get /dev/mem access to work, but it's not by > > design. The rules of the arm memory model forbid mapping the same > > physical memory to different virtual addresses using different > > attributes (normal cacheable memory versus Device memory), and I > > don't > > see anything in the arm devmem code that handles memory attributes. > > > > -- Ian > I would like to discuss more this thing but really, i am too ignorant > on  > this subject. > > What i can say is this, I learnt to use devmem2 from D.Molloy book  > "Exploring BeagleBone", > see pg. 218. The author says this way "bypasses the Linux OS". I > used  > the thing > in Linux, it works, as it seems to do in FreeBSD-12-APLHA. > > If can tell you also I remember i used it one day in FreeBSD-11.1, > it  > was working. > > I don't have the background to go deeper. > > If you can understand why it works and establish that it is realiable > (even only for reading) let me (us) know ! ;) > > bye > n. > I think it should be possible to do a bit of kernel work to change it from "works by accident" to "does the right thing", except I'm not sure it'll be possible to automatically detect when Device memory is being accessed/mapped. It may be necessary to use the mem(4) ioctls to set the region to MDF_UNCACHEABLE, or even better, define a new MDF_MMIO for mapping ranges of device registers that arm systems have to treat as memory type Device. I'll look into it when I have some time. -- Ian