Marc,

On Monday 07 May 2007 21:37, Marc Jones wrote:
> This looks like a good example of scratchpad setup. The only part I
> thought missing is the size setting of the GCR register.

To be complete, here comes the missed function.

/*
 * set_scratch_pad_size - configure a new size
 * @info: hardware info
 * @size: new size in bytes
 *
 * Note: Call this function with the lock held!
 * Note: Called with size = 0 will disable the scratch pad ram
 */
static void set_scratch_pad_size(struct geode_gx1_info * info,u32 size)
{
        u8 ccr3,new_size;

        ccr3 = getCx86(CX86_CCR3);
        setCx86(CX86_CCR3, (ccr3 & 0x0F) | 0x10); /* enable MAPEN */
        new_size=getCx86(CX86_GCR) & 0x03;
        switch (size) {
                case 0:
                        break;
                case 2048:
                        new_size |= 0x04;
                        break;
                case 3072:
                        new_size |= 0x08;
                        break;
                default:
                        new_size |= 0x0C;
                        break;
        }
        setCx86(CX86_GCR,new_size);     /* setup the new size */
        setCx86(CX86_CCR3, ccr3);
}

Juergen

-- 
linuxbios mailing list
linuxbios@linuxbios.org
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to