[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 1/2] ARM: exynos4210: CMU support
From: |
Dunrong Huang |
Subject: |
Re: [Qemu-devel] [PATCH v3 1/2] ARM: exynos4210: CMU support |
Date: |
Wed, 4 Jul 2012 22:14:54 +0800 |
>
>>> +
>>> +static void exynos4210_cmu_set_pll(void *opaque, Exynos4210ClockState
>>> *pll)
>>> +{
>>> + Exynos4210CmuState *s = opaque;
>>> + Exynos4210ClockState *source;
>>> + target_phys_addr_t offset = pll->div_reg;
>>> + ClockChangeEntry *cce;
>>> + uint32_t pdiv, mdiv, sdiv, enable;
>>> +
>>> + source = exynos4210_clock_find(pll->src_id);
>>> +
>>> + if (source == NULL) {
>>> + hw_error("We haven't find source clock %d (requested for %s)\n",
>>> + pll->src_id, pll->name);
>>> + }
>>> +
>>> + /*
>>> + * FOUT = MDIV * FIN / (PDIV * 2^(SDIV-1))
>>> + */
>>> +
>>> + enable = (s->reg[I_(offset)]& PLL_ENABLE_MASK)>> PLL_ENABLE_SHIFT;
>>> + mdiv = (s->reg[I_(offset)]& PLL_MDIV_MASK)>> PLL_MDIV_SHIFT;
>>> + pdiv = (s->reg[I_(offset)]& PLL_PDIV_MASK)>> PLL_PDIV_SHIFT;
>>> + sdiv = (s->reg[I_(offset)]& PLL_SDIV_MASK)>> PLL_SDIV_SHIFT;
>>> +
>>> + if (source) {
>>> + if (enable) {
>>> + pll->rate = mdiv * source->rate / (pdiv * (1<< (sdiv-1)));
>>> + } else {
>>> + pll->rate = 0;
>>> + }
>>> + } else {
>>> + hw_error("%s: Source undefined for %s\n", __func__, pll->name);
>>> + }
>>> +
>>> + QTAILQ_FOREACH(cce,&pll->clock_change_handler, entry) {
>>>
>>> + cce->func(cce->opaque);
>>> + }
>>> +
>>> + PRINT_DEBUG("%s rate: %llu\n", pll->name, pll->rate);
>>
>> pll->rate is of type uint64_t incompatible with "%llu"
>
>
> Type uint64_t is included from /usr/include/stdint.h as
>
> typedef unsigned long long int uint64_t;
>From /usr/include/stdint.h ,the uint64_t is defined by:
#if __WORDSIZE == 64
typedef unsigned long int uint64_t;
#else
__extension__
typedef unsigned long long int uint64_t;
#endif
On my machine(64 bit), there will be a incompatibility error.
As Peter said, you should use PRIu64 instead of llu
>
> and 'll' specifies that a following 'u' conversion specifier applies to a
> unsigned long long argument
>
> Why do you think they incompatible?
>
>
> --
> MK
--
Best Regards,
Dunrong Huang