On Sun 7 Jun 2009 18:21, Mike Frysinger pondered:
> On Sun, Jun 7, 2009 at 18:08, Robin Getz wrote:
> > On Sun 7 Jun 2009 17:21, [email protected] pondered:
> >> --- trunk/arch/blackfin/kernel/process.c      2009-06-07 19:11:50 UTC (rev 
> >> 6602)
> >> +++ trunk/arch/blackfin/kernel/process.c      2009-06-07 21:21:31 UTC (rev 
> >> 6603)
> >> +int bfin_mem_access_type(unsigned long addr, unsigned long size)
> >> +{
> >> +     /* Check that things do not wrap around */
> >> +     if (addr > ULONG_MAX - size)
> >> +             return -EFAULT;
> >> +
> >> +     if (addr >= FIXED_CODE_START && (addr + size) <= physical_mem_end)
> >> +             return 0;
> >> +
> >> +     if (IN_MEM(addr, size, get_l1_code_start(), L1_CODE_LENGTH))
> >> +             return 1;
> >> +
> >> +     if (IN_MEM(addr, size, get_l1_scratch_start(), L1_SCRATCH_LENGTH))
> >> +             return 0;
> >> +     if (IN_MEM(addr, size, get_l1_data_a_start(), L1_DATA_A_LENGTH))
> >> +             return 0;
> >> +     if (IN_MEM(addr, size, get_l1_data_b_start(), L1_DATA_B_LENGTH))
> >> +             return 0;
> >> +     if (IN_MEM(addr, size, L2_START, L2_LENGTH))
> >> +             return 0;
> >> +
> >> +     if (addr >= SYSMMR_BASE)
> >> +             return 0;
> >> +
> >> +     /* We can't read EBIU banks that aren't enabled or we end up hanging
> >> +      * on the access to the async space.
> >> +      */
> >> +     if (IN_MEM(addr, size, ASYNC_BANK0_BASE, ASYNC_BANK0_SIZE))
> >> +             return IN_ASYNC(0, 0);
> >> +     if (IN_MEM(addr, size, ASYNC_BANK1_BASE, ASYNC_BANK1_SIZE))
> >> +             return IN_ASYNC(1, 0);
> >> +     if (IN_MEM(addr, size, ASYNC_BANK2_BASE, ASYNC_BANK2_SIZE))
> >> +             return IN_ASYNC(2, 1);
> >> +     if (IN_MEM(addr, size, ASYNC_BANK3_BASE, ASYNC_BANK3_SIZE))
> >> +             return IN_ASYNC(3, 1);
> >> +
> >> +     return -EFAULT;
> >> +}
> >
> > Rather than returning magic numbers (0, 1 or 2) - can we define some 
> > constants in the .h file, and use those?
> 
> the header file defines the return values in the kernel documentation,
> but using an enum or defines doesnt matter to me

I just thought it would make the calling functions easier to 
understand than 0/1/2 (could remove the comment)...

> +     switch (bfin_mem_access_type(addr, 2)) {
> +             case 0:  /* core access */
> +                     *val = *address;
> +                     return true;
> +             case 1:  /* L1 inst (dma access) */
> +                     isram_memcpy(val, address, 2);
> +                     return true;
> +             default: /* invalid access */
> +

_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to