mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 13:36:48 +07:00
c42deffd5b
Add support for non-blocking request, pre_req() runs dma_map_sg() and post_req() runs dma_unmap_sg(). This patch can increase card read/write speed, especially for high speed card and slow CPU(for some embedded platform). Users can get a great benefit from this patch. if CPU frequency is 800MHz, SDR104 or DDR50 card read/write speed may increase more than 15%. test results: intel i3(800MHz - 2.3GHz), SD card clock 208MHz performance mode(2.3GHz): Before: dd if=/dev/mmcblk0p1 of=/dev/null bs=64k count=1024 67108864 bytes (67 MB) copied, 1.18191 s, 56.8 MB/s After: dd if=/dev/mmcblk0p1 of=/dev/null bs=64k count=1024 67108864 bytes (67 MB) copied, 1.09276 s, 61.4 MB/s powersave mode(800MHz): Before: dd if=/dev/mmcblk0p1 of=/dev/null bs=64k count=1024 67108864 bytes (67 MB) copied, 1.29569 s, 51.8 MB/s After: dd if=/dev/mmcblk0p1 of=/dev/null bs=64k count=1024 67108864 bytes (67 MB) copied, 1.11218 s, 60.3 MB/s Signed-off-by: Micky Ching <micky_ching@realsil.com.cn> Signed-off-by: Chris Ball <chris@printf.net>
52 lines
1.5 KiB
C
52 lines
1.5 KiB
C
/* Driver for Realtek driver-based card reader
|
|
*
|
|
* Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2, or (at your option) any
|
|
* later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Author:
|
|
* Wei WANG <wei_wang@realsil.com.cn>
|
|
*/
|
|
|
|
#ifndef __RTSX_COMMON_H
|
|
#define __RTSX_COMMON_H
|
|
|
|
#define DRV_NAME_RTSX_PCI "rtsx_pci"
|
|
#define DRV_NAME_RTSX_PCI_SDMMC "rtsx_pci_sdmmc"
|
|
#define DRV_NAME_RTSX_PCI_MS "rtsx_pci_ms"
|
|
|
|
#define RTSX_REG_PAIR(addr, val) (((u32)(addr) << 16) | (u8)(val))
|
|
|
|
#define RTSX_SSC_DEPTH_4M 0x01
|
|
#define RTSX_SSC_DEPTH_2M 0x02
|
|
#define RTSX_SSC_DEPTH_1M 0x03
|
|
#define RTSX_SSC_DEPTH_500K 0x04
|
|
#define RTSX_SSC_DEPTH_250K 0x05
|
|
|
|
#define RTSX_SD_CARD 0
|
|
#define RTSX_MS_CARD 1
|
|
|
|
#define CLK_TO_DIV_N 0
|
|
#define DIV_N_TO_CLK 1
|
|
|
|
struct platform_device;
|
|
|
|
struct rtsx_slot {
|
|
struct platform_device *p_dev;
|
|
void (*card_event)(struct platform_device *p_dev);
|
|
void (*done_transfer)(struct platform_device *p_dev);
|
|
};
|
|
|
|
#endif
|