From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:33421) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFUB1-0001c9-BS for qemu-devel@nongnu.org; Wed, 04 Apr 2012 13:39:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SFUAy-00058S-UE for qemu-devel@nongnu.org; Wed, 04 Apr 2012 13:39:22 -0400 Received: from smtp.ispras.ru ([83.149.198.202]:48087) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFUAy-00054d-IK for qemu-devel@nongnu.org; Wed, 04 Apr 2012 13:39:20 -0400 Message-ID: <4F7C86F1.2030500@ispras.ru> Date: Wed, 04 Apr 2012 21:37:53 +0400 From: Dmitry Zhurikhin MIME-Version: 1.0 References: <1333534133-9917-1-git-send-email-zhur@ispras.ru> <4F7C36C4.2070500@samsung.com> <4F7C401D.4000502@ispras.ru> <4F7C73E3.4000100@samsung.com> In-Reply-To: <4F7C73E3.4000100@samsung.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH] Support system reset in Exynos4210 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Maksim Kozlov Cc: Kyungmin Park , Igor Mitsyanko , qemu-devel@nongnu.org, Evgeny Voevodin , Dmitry Solodkiy On 2012-04-04 20:16, Maksim Kozlov wrote: > 04.04.2012 16:35, Dmitry Zhurikhin =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >> On 2012-04-04 15:55, Maksim Kozlov wrote: >>> 04.04.2012 14:08, Dmitry Zhurikhin =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >>>> Reset the system when 1 is written to SWRESET register >>>> >>>> Signed-off-by: Dmitry Zhurikhin >>>> --- >>>> hw/exynos4210_pmu.c | 11 +++++++++++ >>>> 1 files changed, 11 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/hw/exynos4210_pmu.c b/hw/exynos4210_pmu.c >>>> index c12d750..edf6e34 100644 >>>> --- a/hw/exynos4210_pmu.c >>>> +++ b/hw/exynos4210_pmu.c >>>> @@ -25,6 +25,7 @@ >>>> */ >>>> >>>> #include "sysbus.h" >>>> +#include "sysemu.h" >>>> >>>> #ifndef DEBUG_PMU >>>> #define DEBUG_PMU 0 >>>> @@ -422,6 +423,16 @@ static void exynos4210_pmu_write(void *opaque, >>>> target_phys_addr_t offset, >>>> if (reg_p->offset =3D=3D offset) { >>>> PRINT_DEBUG_EXTEND("%s<0x%04x> <- 0x%04x\n", >>>> reg_p->name, >>>> (uint32_t)offset, (uint32_t)val); >>>> + switch (offset) { >>>> + case SWRESET: >>>> + if (val& 1) { >>>> + qemu_system_reset_request(); >>>> + } >>>> + break; >>>> + default: >>>> + /* Nothing */ >>>> + break; >>>> + } >>>> s->reg[i] =3D val; >>>> return; >>>> } >>> It's not quite well. At first, when you do reset, appropriate status >>> must be set in RST_STAT register. At second, not all registers in PMU >>> should be set in default value after reset, so you should change PMU >>> reset function for handling different resets (see spec) So, this >>> functionality should be wrote more carefully >> Well, this is the case when there is a need to modify booting procedur= e >> depending on the values of these registers. I haven't found any such >> code in the current kernel. As I now remember saving their values was >> indeed important when we were trying to use an U-Boot bootloader. But >> as long as we are sticking with QEMU bootloader it doesn't matter. > > 3.4-rc1 and 2.6.36 kernels use INFORM5 register which should keep his > value during sw reset. And U-Boot (which can be used instead of kernel > for some purposes) uses INFORM[456] registers which should be saved as > well. > > My opinion is we should not add code which describe incorrect behavior > of the device regardless of whether kernel uses some registers or no. OK, this is a righteous position. Again, I think in this case implementing what you propose won't be neither bad nor good. But since you've asked, I'll try to do it. > >> Anyway this information is unfortunately absent in Exynos4210 public >> documentation. > Hm... Really, I've just found out that public specification doesn't > contain information about PMU I can make the changes according to Exynos3210 specification since they are pretty close. But of course I'd prefer that you send me full specifications. Dmitry, what you say? >>> >>> And use #define for registers and fields of the registers. It's more >>> clearly, as for me. >> As you say. > :) >>> >>> Regards, >>> MK >> >> Regards, >> Dmitry >> >> > Regards, Dmitry