move bswap24 to math.h

This commit is contained in:
Anthony Pesch 2017-06-04 22:19:58 -04:00
parent c26e5e8c63
commit ff0ffbc8bb
3 changed files with 9 additions and 14 deletions

View File

@ -12,6 +12,10 @@
#define align_up(v, alignment) (((v) + (alignment)-1) & ~((alignment)-1))
#define align_down(v, alignment) ((v) & ~((alignment)-1))
static inline uint32_t bswap24(uint32_t v) {
return ((v & 0xff) << 16) | (v & 0x00ff00) | ((v & 0xff0000) >> 16);
}
#if PLATFORM_LINUX || PLATFORM_DARWIN
static inline int popcnt32(uint32_t v) {

View File

@ -12,9 +12,6 @@
#define LOG_GDROM(...)
#endif
#define bswap24(fad) \
(((fad & 0xff) << 16) | (fad & 0x00ff00) | ((fad & 0xff0000) >> 16))
/* internal gdrom state machine */
enum gd_event {
EVENT_ATA_CMD,
@ -283,7 +280,7 @@ static void gdrom_spi_cmd(struct gdrom *gd, int arg) {
int size = (data[3] << 8) | data[4];
uint8_t scd[SPI_SCD_SIZE];
gdrom_get_subcode(gd, format, scd);
gdrom_get_subcode(gd, format, scd, (int)sizeof(scd));
gdrom_spi_write(gd, scd, size);
} break;
@ -418,8 +415,6 @@ static void gdrom_event(struct gdrom *gd, enum gd_event ev, int arg) {
int gdrom_read_sectors(struct gdrom *gd, int fad, enum gd_secfmt fmt,
enum gd_secmask mask, int num_sectors, uint8_t *dst,
int dst_size) {
CHECK(gd->disc);
int total = 0;
char data[SECTOR_SIZE];
@ -429,7 +424,7 @@ int gdrom_read_sectors(struct gdrom *gd, int fad, enum gd_secfmt fmt,
int r = disc_read_sector(gd->disc, fad, data);
CHECK_EQ(r, 1);
if (fmt == SECTOR_M1 && mask == MASK_DATA) {
if ((fmt == SECTOR_ANY || fmt == SECTOR_M1) && mask == MASK_DATA) {
CHECK_LE(total + 2048, dst_size);
memcpy(dst, data + 16, 2048);
dst += 2048;
@ -443,8 +438,8 @@ int gdrom_read_sectors(struct gdrom *gd, int fad, enum gd_secfmt fmt,
return total;
}
void gdrom_get_subcode(struct gdrom *gd, int format, uint8_t *data) {
CHECK(gd->disc);
void gdrom_get_subcode(struct gdrom *gd, int format, uint8_t *data, int size) {
CHECK_GE(size, SPI_SCD_SIZE);
/* FIXME implement */
memset(data, 0, SPI_SCD_SIZE);
@ -456,8 +451,6 @@ void gdrom_get_subcode(struct gdrom *gd, int format, uint8_t *data) {
void gdrom_get_session(struct gdrom *gd, int session, uint8_t *data, int size) {
CHECK_GE(size, SPI_SES_SIZE);
CHECK(gd->disc);
/* session response layout:
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
@ -513,7 +506,6 @@ void gdrom_get_session(struct gdrom *gd, int session, uint8_t *data, int size) {
void gdrom_get_toc(struct gdrom *gd, enum gd_area area_type, uint8_t *data,
int size) {
CHECK_GE(size, SPI_TOC_SIZE);
CHECK(gd->disc);
/* toc response layout:

View File

@ -18,12 +18,11 @@ void gdrom_dma_end(struct gdrom *gd);
void gdrom_get_drive_mode(struct gdrom *gd, struct gd_hw_info *info);
void gdrom_set_drive_mode(struct gdrom *gd, struct gd_hw_info *info);
void gdrom_get_status(struct gdrom *gd, uint8_t *data, int size);
void gdrom_get_toc(struct gdrom *gd, enum gd_area area_type, uint8_t *data,
int size);
void gdrom_get_session(struct gdrom *gd, int session, uint8_t *data, int size);
void gdrom_get_subcode(struct gdrom *gd, int format, uint8_t *data);
void gdrom_get_subcode(struct gdrom *gd, int format, uint8_t *data, int size);
int gdrom_read_sectors(struct gdrom *gd, int fad, enum gd_secfmt fmt,
enum gd_secmask mask, int num_sectors, uint8_t *dst,
int dst_size);