is_pmu_based = 1; 
static int __pmac pmac_cpufreq_init_MacRISC3(struct device_node *cpunode){	struct device_node *volt_gpio_np = of_find_node_by_name(NULL,								"voltage-gpio");	struct device_node *freq_gpio_np = of_find_node_by_name(NULL,								"frequency-gpio");	struct device_node *slew_done_gpio_np = of_find_node_by_name(NULL,								     "slewing-done");	u32 *value;	/*	 * Check to see if it's GPIO driven or PMU only	 *	 * The way we extract the GPIO address is slightly hackish, but it	 * works well enough for now. We need to abstract the whole GPIO	 * stuff sooner or later anyway	 */	if (volt_gpio_np)		voltage_gpio = read_gpio(volt_gpio_np);	if (freq_gpio_np)		frequency_gpio = read_gpio(freq_gpio_np);	if (slew_done_gpio_np)		slew_done_gpio = read_gpio(slew_done_gpio_np);	/* If we use the frequency GPIOs, calculate the min/max speeds based	 * on the bus frequencies	 */	if (frequency_gpio && slew_done_gpio) {		int lenp, rc;		u32 *freqs, *ratio;		freqs = (u32 *)get_property(cpunode, "bus-frequencies", &lenp);		lenp /= sizeof(u32);		if (freqs == NULL || lenp != 2) {			printk(KERN_ERR "cpufreq: bus-frequencies incorrect or missing\n");			return 1;		}		ratio = (u32 *)get_property(cpunode, "processor-to-bus-ratio*2", NULL);		if (ratio == NULL) {			printk(KERN_ERR "cpufreq: processor-to-bus-ratio*2 missing\n");			return 1;		}		/* Get the min/max bus frequencies */		low_freq = min(freqs[0], freqs[1]);		hi_freq = max(freqs[0], freqs[1]);		/* Grrrr.. It _seems_ that the device-tree is lying on the low bus		 * frequency, it claims it to be around 84Mhz on some models while		 * it appears to be approx. 101Mhz on all. Let's hack around here...		 * fortunately, we don't need to be too precise		 */		if (low_freq < 98000000)			low_freq = 101000000;					/* Convert those to CPU core clocks */		low_freq = (low_freq * (*ratio)) / 2000;		hi_freq = (hi_freq * (*ratio)) / 2000;		/* Now we get the frequencies, we read the GPIO to see what is out current		 * speed		 */		rc = pmac_call_feature(PMAC_FTR_READ_GPIO, NULL, frequency_gpio, 0);		cur_freq = (rc & 0x01) ? hi_freq : low_freq;		set_speed_proc = gpios_set_cpu_speed;		return 1;	}	/* If we use the PMU, look for the min & max frequencies in the	 * device-tree	 */	value = (u32 *)get_property(cpunode, "min-clock-frequency", NULL);	if (!value)		return 1;	low_freq = (*value) / 1000;	/* The PowerBook G4 12" (PowerBook6,1) has an error in the device-tree	 * here */	if (low_freq < 100000)		low_freq *= 10;	value = (u32 *)get_property(cpunode, "max-clock-frequency", NULL);	if (!value)		return 1;	hi_freq = (*value) / 1000;	set_speed_proc = pmu_set_cpu_speed;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0086b5ec7834b78358dea3f713275a9ae2b229ec/pmac_cpufreq.c/buggy/arch/ppc/platforms/pmac_cpufreq.c