From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Yan Subject: Re: set rockchip-specific uboot bootmode flags on reboot Date: Thu, 17 Sep 2015 19:07:06 +0800 Message-ID: <55FA9EDA.8010308@rock-chips.com> References: <1441716187-29446-1-git-send-email-andy.yan@rock-chips.com> <9364768.6AeuYh3EEP@diego> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Simon Glass , =?UTF-8?Q?Heiko_St=c3=bcbner?= Cc: khilman-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, Russell King - ARM Linux , Arnd Bergmann , lk , linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Olof Johansson , lak List-Id: linux-rockchip.vger.kernel.org SGkgSGVpa286CgoKT24gMjAxNeW5tDA55pyIMTDml6UgMDI6MDUsIFNpbW9uIEdsYXNzIHdyb3Rl Ogo+IEhpLAo+Cj4gT24gOCBTZXB0ZW1iZXIgMjAxNSBhdCAxNjo0NiwgSGVpa28gU3TDvGJuZXIg PGhlaWtvQHNudGVjaC5kZT4gd3JvdGU6Cj4+IEhpIEFuZHksCj4+Cj4+IEFtIERpZW5zdGFnLCA4 LiBTZXB0ZW1iZXIgMjAxNSwgMjA6NDM6MDcgc2NocmllYiBBbmR5IFlhbjoKPj4+IHJvY2tjaGlw IHBsYXRmb3JtIGhhdmUgYSBwcm90b2NvbCB0byBwYXNzIHRoZSB0aGUga2VybmVsCj4+PiByZWJv b3QgbW9kZSB0byBib290bG9hZGVyIGJ5IHNvbWUgc3BlY2lhbCByZWdpc3RlcnMgd2hlbgo+Pj4g c3lzdGVtIHJlYm9vdC5CeSB0aGlzIHdheSB0aGUgYm9vdGxvYWRlciBjYW4gdGFrZSBkaWZmZXJl bnQKPj4+IGFjdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGRpZmZlcmVudCBrZXJuZWwgcmVib290IG1v ZGUsIGZvcgo+Pj4gZXhhbXBsZSwgY29tbWFuZCAicmVib290IGxvYWRlciIgd2lsbCByZWJvb3Qg dGhlIGJvYXJkIHRvCj4+PiByb2NrdXNiIG1vZGUsIHRoaXMgaXMgYSB2ZXJ5IGNvbnZlbmllbnQg d2F5IHRvIGdldCB0aGUgYm9hcmQKPj4+IHRvIGRvd25sb2FkIG1vZGUuCj4+Pgo+Pj4gU2lnbmVk LW9mZi1ieTogQW5keSBZYW4gPGFuZHkueWFuQHJvY2stY2hpcHMuY29tPgo+PiBbLi4uXQo+Pgo+ Pj4gQEAgLTAsMCArMSwyMiBAQAo+Pj4gKyNpZm5kZWYgX19NQUNIX1JPQ0tDSElQX0xPQURFUl9I Cj4+PiArI2RlZmluZSBfX01BQ0hfUk9DS0NISVBfTE9BREVSX0gKPj4+ICsKPj4+ICsvKmhpZ2gg MjQgYml0cyBpcyB0YWcsIGxvdyA4IGJpdHMgaXMgdHlwZSovCj4+PiArI2RlZmluZSBTWVNfTE9B REVSX1JFQk9PVF9GTEFHICAgMHg1MjQyQzMwMAo+Pj4gKwo+Pj4gK2VudW0gewo+Pj4gKyAgICAg Qk9PVF9OT1JNQUwgPSAwLCAvKiBub3JtYWwgYm9vdCAqLwo+Pj4gKyAgICAgQk9PVF9MT0FERVIs ICAgICAvKiBlbnRlciBsb2FkZXIgcm9ja3VzYiBtb2RlICovCj4+PiArICAgICBCT09UX01BU0tS T00sICAgIC8qIGVudGVyIG1hc2tyb20gcm9ja3VzYiBtb2RlIChub3Qgc3VwcG9ydCBub3cpICov Cj4+PiArICAgICBCT09UX1JFQ09WRVIsICAgIC8qIGVudGVyIHJlY292ZXIgKi8KPj4+ICsgICAg IEJPT1RfTk9SRUNPVkVSLCAgLyogZG8gbm90IGVudGVyIHJlY292ZXIgKi8KPj4+ICsgICAgIEJP T1RfU0VDT05ET1MsICAgLyogYm9vdCBzZWNvbmQgT1MgKG5vdCBzdXBwb3J0IG5vdykqLwo+Pj4g KyAgICAgQk9PVF9XSVBFREFUQSwgICAvKiBlbnRlciByZWNvdmVyIGFuZCB3aXBlIGRhdGEuICov Cj4+PiArICAgICBCT09UX1dJUEVBTEwsICAgIC8qIGVudGVyIHJlY292ZXIgYW5kIHdpcGUgYWxs IGRhdGEuICovCj4+PiArICAgICBCT09UX0NIRUNLSU1HLCAgIC8qIGNoZWNrIGZpcm13YXJlIGlt ZyB3aXRoIGJhY2t1cCBwYXJ0Ki8KPj4+ICsgICAgIEJPT1RfRkFTVEJPT1QsICAgLyogZW50ZXIg ZmFzdCBib290IG1vZGUgKi8KPj4+ICsgICAgIEJPT1RfU0VDVVJFQk9PVF9ESVNBQkxFLAo+Pj4g KyAgICAgQk9PVF9DSEFSR0lORywgICAvKiBlbnRlciBjaGFyZ2UgbW9kZSAqLwo+Pj4gKyAgICAg Qk9PVF9NQVggICAgICAgICAvKiBNQVggVkFMSUQgQk9PVCBUWVBFLiovCj4+PiArfTsKPj4+ICsj ZW5kaWYKPj4gVGhlc2UgZmxhZ3MgcmVseSBvbiBjb2RlIGluIHRoZSBib290bG9hZGVyIHRvIGFj dHVhbGx5IGhhbmRsZSB0aGUgdGFyZ2V0Cj4+IGFjdGlvbi4gTm93YWRheXMgdGhpcyBpcyB1Ym9v dCwgYnV0IHN0aWxsIGEgcm9ja2NoaXAtc3BlY2lmaWMgZm9yay4gQW5kIHdlJ3JlCj4+IGFjdGl2 ZWx5IG1vdmluZyBhd2F5IGZyb20gdGhhdCwgd2l0aCB0aGUgcmVjZW50IHJrMzI4OCBhZGRpdGlv biB0byBtYWlubGluZQo+PiB1Ym9vdC4KPj4KPj4gU28gdW5sZXNzIHlvdSBjb252aW5jZSB1Ym9v dCBwZW9wbGUgdGhhdCB0aGUgX3VuZGVybHlpbmcgc3BlY2lhbAo+PiBmdW5jdGlvbmFsaXR5XyBi ZWhpbmQgdGhlc2UgZmxhZ3Mgc2hvdWxkIGJlIHBhcnQgb2YgdWJvb3QsIEkgZG9uJ3QgdGhpbmsg dGhpcwo+PiBpcyBnb2luZyB0byBmbHkuCj4+Cj4+Cj4+IEluIGEgd2F5IHRoaXMgaXMgc2ltaWxh ciB0byBncHUga2VybmVsIGNvZGUgdGFsa2luZyB0byBwcm9wcmlldGFyeSB1c2Vyc3BhY2UKPj4g bGlicyAtIHRoZXNlIGFyZSBhbHNvIG5vdCBlbGlnaWJsZSBmb3IgdGhlIGtlcm5lbC4gKG1lYW5p bmcgc3R1ZmYgbGlrZSB0aGUKPj4gbWFsaSBrZXJuZWwgZHJpdmVyIG5vdCBiZWluZyBhbGxvd2Vk KS4KPiBJIGRvbid0IHdhbnQgdG8gY29tbWVudCBvbiB3aGF0IExpbnV4IGRvZXMgb3IgZG9lcyBu b3Qgd2FudC4gQnV0IEkgY2FuCj4gc2VlIHRoaXMgc29ydCBvZiBmZWF0dXJlIGJlaW5nIHVzZWZ1 bCBmb3IgZGV2cyBhdCBsZWFzdC4gU28gbG9uZyBhcyBpdAo+IGlzIGRlZmluZWQgaW4gYSB3YXkg dGhhdCBpcyBub3QgUm9ja2NoaXAtc3BlY2lmaWMgKGFuZCB0aGUgYWJvdmUgZW51bQo+IGxvb2tz IHByZXR0eSByZWFzb25hYmxlIG9uIHRoYXQgZnJvbnQsIEkgdGhpbmsgaXQgbWFrZXMgc2Vuc2Uu Cj4KPiBPZiBjb3Vyc2UgaXQncyBhIGJpdCBvZGQgdG8gdGFyZ2V0IGEgZG93bnN0cmVhbSBVLUJv b3Qgd2l0aCBhIExpbnV4Cj4gZmVhdHVyZS4gQnV0IGhvcGVmdWxseSBSb2NrY2hpcCdzIFUtQm9v dCBzdXBwb3J0IGFuZCBkZXZlbG9wbWVudCB3aWxsCj4gbW92ZSB0byBtYWlubGluZSB3aXRoIHRp bWUuCiAgICBJcyB0aGVyZSBhbnkgY2hhbmNlIGZvciB0aGlzIHBhdGNoIHRvIGJlIGxhbmRlZD8K ICAgIEFzIFNpbW9uIHNheXMsIGl0IGlzIHVzZWZ1bCBmb3IgZGV2ZWxvcG1lbnQuIEFuZAogICAg aGUgaXMgdXBzdHJlYW1pbmcgUm9ja2NoaXAgVS1ib290Lgo+PiBbLi4uXQo+Pgo+Pj4gK3N0YXRp YyBpbnQgcm9ja2NoaXBfcmVib290X25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMs Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbW9kZSwg dm9pZCAqY21kKQo+Pj4gK3sKPj4+ICsgICAgIHUzMiBmbGFnOwo+Pj4gKwo+Pj4gKyAgICAgcm9j a2NoaXBfZ2V0X3JlYm9vdF9mbGFnKGNtZCwgJmZsYWcpOwo+Pj4gKyAgICAgcmVnbWFwX3dyaXRl KHJlZ21hcCwgZmxhZ19yZWcsIGZsYWcpOwo+Pj4gKwo+Pj4gKyAgICAgcmV0dXJuIE5PVElGWV9E T05FOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHJvY2tj aGlwX3JlYm9vdF9oYW5kbGVyID0gewo+Pj4gKyAgICAgLm5vdGlmaWVyX2NhbGwgPSByb2NrY2hp cF9yZWJvb3Rfbm90aWZ5LAo+Pj4gKyAgICAgLnByaW9yaXR5ID0gMTUwLAo+Pj4gK307Cj4+IHRo ZSByZXN0YXJ0IGhhbmRsZXJzIGFyZSBtZWFudCB0byByZWFsbHkgb25seSByZXN0YXJ0IHRoZSBz eXN0ZW0sIG5vdCB0bwo+PiBleGVjdXRlIHNvbWUgYWN0aW9ucyBiZWZvcmUgdGhlIHJlc3RhcnQg aGFwcGVucy4KPj4KPj4gU2VlIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE1LzYvMy83MDcgZm9y IGEgc2ltaWxhciBjYXNlLgo+Pgo+Pgo+PiBIZWlrbwo+IFJlZ2FyZHMsCj4gU2ltb24KPgo+Cj4K CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgt cm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hp cAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: andy.yan@rock-chips.com (Andy Yan) Date: Thu, 17 Sep 2015 19:07:06 +0800 Subject: set rockchip-specific uboot bootmode flags on reboot In-Reply-To: References: <1441716187-29446-1-git-send-email-andy.yan@rock-chips.com> <9364768.6AeuYh3EEP@diego> Message-ID: <55FA9EDA.8010308@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Heiko: On 2015?09?10? 02:05, Simon Glass wrote: > Hi, > > On 8 September 2015 at 16:46, Heiko St?bner wrote: >> Hi Andy, >> >> Am Dienstag, 8. September 2015, 20:43:07 schrieb Andy Yan: >>> rockchip platform have a protocol to pass the the kernel >>> reboot mode to bootloader by some special registers when >>> system reboot.By this way the bootloader can take different >>> action according to the different kernel reboot mode, for >>> example, command "reboot loader" will reboot the board to >>> rockusb mode, this is a very convenient way to get the board >>> to download mode. >>> >>> Signed-off-by: Andy Yan >> [...] >> >>> @@ -0,0 +1,22 @@ >>> +#ifndef __MACH_ROCKCHIP_LOADER_H >>> +#define __MACH_ROCKCHIP_LOADER_H >>> + >>> +/*high 24 bits is tag, low 8 bits is type*/ >>> +#define SYS_LOADER_REBOOT_FLAG 0x5242C300 >>> + >>> +enum { >>> + BOOT_NORMAL = 0, /* normal boot */ >>> + BOOT_LOADER, /* enter loader rockusb mode */ >>> + BOOT_MASKROM, /* enter maskrom rockusb mode (not support now) */ >>> + BOOT_RECOVER, /* enter recover */ >>> + BOOT_NORECOVER, /* do not enter recover */ >>> + BOOT_SECONDOS, /* boot second OS (not support now)*/ >>> + BOOT_WIPEDATA, /* enter recover and wipe data. */ >>> + BOOT_WIPEALL, /* enter recover and wipe all data. */ >>> + BOOT_CHECKIMG, /* check firmware img with backup part*/ >>> + BOOT_FASTBOOT, /* enter fast boot mode */ >>> + BOOT_SECUREBOOT_DISABLE, >>> + BOOT_CHARGING, /* enter charge mode */ >>> + BOOT_MAX /* MAX VALID BOOT TYPE.*/ >>> +}; >>> +#endif >> These flags rely on code in the bootloader to actually handle the target >> action. Nowadays this is uboot, but still a rockchip-specific fork. And we're >> actively moving away from that, with the recent rk3288 addition to mainline >> uboot. >> >> So unless you convince uboot people that the _underlying special >> functionality_ behind these flags should be part of uboot, I don't think this >> is going to fly. >> >> >> In a way this is similar to gpu kernel code talking to proprietary userspace >> libs - these are also not eligible for the kernel. (meaning stuff like the >> mali kernel driver not being allowed). > I don't want to comment on what Linux does or does not want. But I can > see this sort of feature being useful for devs at least. So long as it > is defined in a way that is not Rockchip-specific (and the above enum > looks pretty reasonable on that front, I think it makes sense. > > Of course it's a bit odd to target a downstream U-Boot with a Linux > feature. But hopefully Rockchip's U-Boot support and development will > move to mainline with time. Is there any chance for this patch to be landed? As Simon says, it is useful for development. And he is upstreaming Rockchip U-boot. >> [...] >> >>> +static int rockchip_reboot_notify(struct notifier_block *this, >>> + unsigned long mode, void *cmd) >>> +{ >>> + u32 flag; >>> + >>> + rockchip_get_reboot_flag(cmd, &flag); >>> + regmap_write(regmap, flag_reg, flag); >>> + >>> + return NOTIFY_DONE; >>> +} >>> + >>> +static struct notifier_block rockchip_reboot_handler = { >>> + .notifier_call = rockchip_reboot_notify, >>> + .priority = 150, >>> +}; >> the restart handlers are meant to really only restart the system, not to >> execute some actions before the restart happens. >> >> See https://lkml.org/lkml/2015/6/3/707 for a similar case. >> >> >> Heiko > Regards, > Simon > > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752032AbbIQLIg (ORCPT ); Thu, 17 Sep 2015 07:08:36 -0400 Received: from regular1.263xmail.com ([211.150.99.134]:43264 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751471AbbIQLIf (ORCPT ); Thu, 17 Sep 2015 07:08:35 -0400 X-263anti-spam: KSV:0;BIG:0;ABS:1;DNS:0;ATT:0;SPF:S; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ADDR-CHECKED: 0 X-RL-SENDER: andy.yan@rock-chips.com X-FST-TO: arnd@arndb.de X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: andy.yan@rock-chips.com X-UNIQUE-TAG: <2225d3fe0b0bf0d193e6d333cb4f0ed2> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: set rockchip-specific uboot bootmode flags on reboot To: Simon Glass , =?UTF-8?Q?Heiko_St=c3=bcbner?= References: <1441716187-29446-1-git-send-email-andy.yan@rock-chips.com> <9364768.6AeuYh3EEP@diego> Cc: linux-rockchip@lists.infradead.org, lk , lak , Russell King - ARM Linux , Olof Johansson , khilman@linaro.org, Arnd Bergmann From: Andy Yan Message-ID: <55FA9EDA.8010308@rock-chips.com> Date: Thu, 17 Sep 2015 19:07:06 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Heiko: On 2015年09月10日 02:05, Simon Glass wrote: > Hi, > > On 8 September 2015 at 16:46, Heiko Stübner wrote: >> Hi Andy, >> >> Am Dienstag, 8. September 2015, 20:43:07 schrieb Andy Yan: >>> rockchip platform have a protocol to pass the the kernel >>> reboot mode to bootloader by some special registers when >>> system reboot.By this way the bootloader can take different >>> action according to the different kernel reboot mode, for >>> example, command "reboot loader" will reboot the board to >>> rockusb mode, this is a very convenient way to get the board >>> to download mode. >>> >>> Signed-off-by: Andy Yan >> [...] >> >>> @@ -0,0 +1,22 @@ >>> +#ifndef __MACH_ROCKCHIP_LOADER_H >>> +#define __MACH_ROCKCHIP_LOADER_H >>> + >>> +/*high 24 bits is tag, low 8 bits is type*/ >>> +#define SYS_LOADER_REBOOT_FLAG 0x5242C300 >>> + >>> +enum { >>> + BOOT_NORMAL = 0, /* normal boot */ >>> + BOOT_LOADER, /* enter loader rockusb mode */ >>> + BOOT_MASKROM, /* enter maskrom rockusb mode (not support now) */ >>> + BOOT_RECOVER, /* enter recover */ >>> + BOOT_NORECOVER, /* do not enter recover */ >>> + BOOT_SECONDOS, /* boot second OS (not support now)*/ >>> + BOOT_WIPEDATA, /* enter recover and wipe data. */ >>> + BOOT_WIPEALL, /* enter recover and wipe all data. */ >>> + BOOT_CHECKIMG, /* check firmware img with backup part*/ >>> + BOOT_FASTBOOT, /* enter fast boot mode */ >>> + BOOT_SECUREBOOT_DISABLE, >>> + BOOT_CHARGING, /* enter charge mode */ >>> + BOOT_MAX /* MAX VALID BOOT TYPE.*/ >>> +}; >>> +#endif >> These flags rely on code in the bootloader to actually handle the target >> action. Nowadays this is uboot, but still a rockchip-specific fork. And we're >> actively moving away from that, with the recent rk3288 addition to mainline >> uboot. >> >> So unless you convince uboot people that the _underlying special >> functionality_ behind these flags should be part of uboot, I don't think this >> is going to fly. >> >> >> In a way this is similar to gpu kernel code talking to proprietary userspace >> libs - these are also not eligible for the kernel. (meaning stuff like the >> mali kernel driver not being allowed). > I don't want to comment on what Linux does or does not want. But I can > see this sort of feature being useful for devs at least. So long as it > is defined in a way that is not Rockchip-specific (and the above enum > looks pretty reasonable on that front, I think it makes sense. > > Of course it's a bit odd to target a downstream U-Boot with a Linux > feature. But hopefully Rockchip's U-Boot support and development will > move to mainline with time. Is there any chance for this patch to be landed? As Simon says, it is useful for development. And he is upstreaming Rockchip U-boot. >> [...] >> >>> +static int rockchip_reboot_notify(struct notifier_block *this, >>> + unsigned long mode, void *cmd) >>> +{ >>> + u32 flag; >>> + >>> + rockchip_get_reboot_flag(cmd, &flag); >>> + regmap_write(regmap, flag_reg, flag); >>> + >>> + return NOTIFY_DONE; >>> +} >>> + >>> +static struct notifier_block rockchip_reboot_handler = { >>> + .notifier_call = rockchip_reboot_notify, >>> + .priority = 150, >>> +}; >> the restart handlers are meant to really only restart the system, not to >> execute some actions before the restart happens. >> >> See https://lkml.org/lkml/2015/6/3/707 for a similar case. >> >> >> Heiko > Regards, > Simon > > >