04.07.2012 18:14, Dunrong Huang пишет:
+
+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.
Yes, I have understood now. I don't use neither 64 bit system nor
compiler and have not ever faced with this problem. Thanks for remarks
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