diff -urN linux-2.4.5-rmk7-np2/arch/arm/def-configs/assabet linux-2.4.5-rmk7-np2-ssv1/arch/arm/def-configs/assabet --- linux-2.4.5-rmk7-np2/arch/arm/def-configs/assabet Sat Jul 13 19:40:17 2002 +++ linux-2.4.5-rmk7-np2-ssv1/arch/arm/def-configs/assabet Wed Oct 10 18:56:02 2001 @@ -139,7 +139,7 @@ # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_MISC is not set -CONFIG_PM=y +# CONFIG_PM is not set # CONFIG_APM is not set # CONFIG_ARTHUR is not set CONFIG_CMDLINE="" @@ -566,6 +566,7 @@ # CONFIG_NVRAM is not set # CONFIG_RTC is not set CONFIG_SA1100_RTC=y +CONFIG_SA1100_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set @@ -756,8 +757,8 @@ # Sound # CONFIG_SOUND=y -CONFIG_SOUND_ASSABET_UDA1341=y -# CONFIG_SOUND_UDA1341 is not set +CONFIG_SOUND_UDA1341=y +# CONFIG_SOUND_SA1100_SSP is not set # CONFIG_SOUND_CMPCI is not set # CONFIG_SOUND_EMU10K1 is not set # CONFIG_SOUND_FUSION is not set diff -urN linux-2.4.5-rmk7-np2/drivers/pcmcia/sa1100.h linux-2.4.5-rmk7-np2-ssv1/drivers/pcmcia/sa1100.h --- linux-2.4.5-rmk7-np2/drivers/pcmcia/sa1100.h Sat Jul 13 19:40:18 2002 +++ linux-2.4.5-rmk7-np2-ssv1/drivers/pcmcia/sa1100.h Wed Oct 10 18:56:03 2001 @@ -45,6 +45,15 @@ /* MECR: Expansion Memory Configuration Register * (SA-1100 Developers Manual, p.10-13; SA-1110 Developers Manual, p.10-24) * + * BS_xx = ( PCMCIA_CYCLE / ( 2 * 3 * CPU_CYCLE ) ) - 1 + * + * Official PCMCIA cycle times: + * + * - I/O: 255ns + * - attribute: 300ns + * - common memory (3.3V): 600, 250, 200, 150, 100ns + * - common memory (5V): 250, 200, 150, 100ns + * * MECR layout is: * * FAST1 BSM1<4:0> BSA1<4:0> BSIO1<4:0> FAST0 BSM0<4:0> BSA0<4:0> BSIO0<4:0> diff -urN linux-2.4.5-rmk7-np2/drivers/pcmcia/sa1100_generic.c linux-2.4.5-rmk7-np2-ssv1/drivers/pcmcia/sa1100_generic.c --- linux-2.4.5-rmk7-np2/drivers/pcmcia/sa1100_generic.c Sat Jul 13 19:40:18 2002 +++ linux-2.4.5-rmk7-np2-ssv1/drivers/pcmcia/sa1100_generic.c Wed Oct 10 18:56:03 2001 @@ -1062,33 +1062,6 @@ #ifdef CONFIG_CPU_FREQ -/* sa1100_pcmcia_update_mecr() - * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - * When sa1100_pcmcia_notifier() decides that a MECR adjustment (due - * to a core clock frequency change) is needed, this routine establishes - * new BS_xx values consistent with the clock speed `clock'. - */ -static void sa1100_pcmcia_update_mecr(unsigned int clock){ - unsigned int sock; - unsigned long mecr = MECR; - - for(sock = 0; sock < SA1100_PCMCIA_MAX_SOCK; ++sock){ - - MECR_BSIO_SET(mecr, sock, - sa1100_pcmcia_mecr_bs(sa1100_pcmcia_socket[sock].speed_io, - clock)); - MECR_BSA_SET(mecr, sock, - sa1100_pcmcia_mecr_bs(sa1100_pcmcia_socket[sock].speed_attr, - clock)); - MECR_BSM_SET(mecr, sock, - sa1100_pcmcia_mecr_bs(sa1100_pcmcia_socket[sock].speed_mem, - clock)); - } - - MECR = mecr; - -} - /* sa1100_pcmcia_notifier() * ^^^^^^^^^^^^^^^^^^^^^^^^ * When changing the processor core clock frequency, it is necessary @@ -1101,41 +1074,29 @@ */ static int sa1100_pcmcia_notifier(struct notifier_block *nb, unsigned long val, void *data){ + unsigned int sock, clock; + unsigned long mecr = MECR; struct cpufreq_info *ci = data; - switch(val){ - case CPUFREQ_MINMAX: - - break; - - case CPUFREQ_PRECHANGE: - - if(ci->new_freq > ci->old_freq){ - DEBUG(2, "%s(): new frequency %u.%uMHz > %u.%uMHz, pre-updating\n", - __FUNCTION__, - ci->new_freq / 1000, (ci->new_freq / 100) % 10, - ci->old_freq / 1000, (ci->old_freq / 100) % 10); - sa1100_pcmcia_update_mecr(ci->new_freq); - } - - break; + clock = ci->new_freq; + switch(val){ case CPUFREQ_POSTCHANGE: - if(ci->new_freq < ci->old_freq){ - DEBUG(2, "%s(): new frequency %u.%uMHz < %u.%uMHz, post-updating\n", - __FUNCTION__, - ci->new_freq / 1000, (ci->new_freq / 100) % 10, - ci->old_freq / 1000, (ci->old_freq / 100) % 10); - sa1100_pcmcia_update_mecr(ci->new_freq); + for(sock = 0; sock < SA1100_PCMCIA_MAX_SOCK; ++sock){ + + MECR_BSIO_SET(mecr, sock, + sa1100_pcmcia_mecr_bs(sa1100_pcmcia_socket[sock].speed_io, + clock)); + MECR_BSA_SET(mecr, sock, + sa1100_pcmcia_mecr_bs(sa1100_pcmcia_socket[sock].speed_attr, + clock)); + MECR_BSM_SET(mecr, sock, + sa1100_pcmcia_mecr_bs(sa1100_pcmcia_socket[sock].speed_mem, + clock)); } - break; - - default: - printk(KERN_ERR "%s(): unknown CPU frequency event %lx\n", __FUNCTION__, - val); - return -1; + MECR = mecr; }