#include "pvrusb2-encoder.h"
 #include "pvrusb2-hdw-internal.h"
 #include "pvrusb2-debug.h"
+#include "pvrusb2-fx2-cmd.h"
 
 
 
                chunkCnt = 8;
                if (chunkCnt > dlen) chunkCnt = dlen;
                memset(hdw->cmd_buffer,0,sizeof(hdw->cmd_buffer));
-               hdw->cmd_buffer[0] = 0x01;
+               hdw->cmd_buffer[0] = FX2CMD_MEM_WRITE_DWORD;
                for (idx = 0; idx < chunkCnt; idx++) {
                        hdw->cmd_buffer[1+(idx*7)+6] = 0x44 + idx + offs;
                        PVR2_DECOMPOSE_LE(hdw->cmd_buffer, 1+(idx*7),
                chunkCnt = 16;
                if (chunkCnt > dlen) chunkCnt = dlen;
                memset(hdw->cmd_buffer,0,sizeof(hdw->cmd_buffer));
-               hdw->cmd_buffer[0] = statusFl ? 0x02 : 0x28;
+               hdw->cmd_buffer[0] =
+                       (statusFl ? FX2CMD_MEM_READ_DWORD : FX2CMD_MEM_READ_64BYTES);
                hdw->cmd_buffer[7] = 0x44 + offs;
                ret = pvr2_send_request(hdw,
                                        hdw->cmd_buffer,8,
 
--- /dev/null
+#ifndef _PVRUSB2_FX2_CMD_H_
+#define _PVRUSB2_FX2_CMD_H_
+
+#define FX2CMD_MEM_WRITE_DWORD  0x01
+#define FX2CMD_MEM_READ_DWORD   0x02
+
+#define FX2CMD_MEM_READ_64BYTES 0x28
+
+#define FX2CMD_REG_WRITE        0x04
+#define FX2CMD_REG_READ         0x05
+
+#define FX2CMD_I2C_WRITE        0x08
+#define FX2CMD_I2C_READ         0x09
+
+#define FX2CMD_GET_USB_SPEED    0x0b
+
+#define FX2CMD_STREAMING_ON     0x36
+#define FX2CMD_STREAMING_OFF    0x37
+
+#define FX2CMD_POWER_OFF        0xdc
+#define FX2CMD_POWER_ON         0xde
+
+#define FX2CMD_DEEP_RESET       0xdd
+
+#define FX2CMD_GET_EEPROM_ADDR  0xeb
+#define FX2CMD_GET_IR_CODE      0xec
+
+#endif /* _PVRUSB2_FX2_CMD_H_ */
 
 #include "pvrusb2-hdw-internal.h"
 #include "pvrusb2-encoder.h"
 #include "pvrusb2-debug.h"
+#include "pvrusb2-fx2-cmd.h"
 
 #define TV_MIN_FREQ     55250000L
 #define TV_MAX_FREQ    850000000L
           firmware needs be loaded. */
        int result;
        LOCK_TAKE(hdw->ctl_lock); do {
-               hdw->cmd_buffer[0] = 0xeb;
+               hdw->cmd_buffer[0] = FX2CMD_GET_EEPROM_ADDR;
                result = pvr2_send_request_ex(hdw,HZ*1,!0,
                                           hdw->cmd_buffer,1,
                                           hdw->cmd_buffer,1);
 {
        int result;
        LOCK_TAKE(hdw->ctl_lock); do {
-               hdw->cmd_buffer[0] = 0x0b;
+               hdw->cmd_buffer[0] = FX2CMD_GET_USB_SPEED;
                result = pvr2_send_request(hdw,
                                           hdw->cmd_buffer,1,
                                           hdw->cmd_buffer,1);
 
        LOCK_TAKE(hdw->ctl_lock);
 
-       hdw->cmd_buffer[0] = 0x04;  /* write register prefix */
+       hdw->cmd_buffer[0] = FX2CMD_REG_WRITE;  /* write register prefix */
        PVR2_DECOMPOSE_LE(hdw->cmd_buffer,1,data);
        hdw->cmd_buffer[5] = 0;
        hdw->cmd_buffer[6] = (reg >> 8) & 0xff;
 
        LOCK_TAKE(hdw->ctl_lock);
 
-       hdw->cmd_buffer[0] = 0x05;  /* read register prefix */
+       hdw->cmd_buffer[0] = FX2CMD_REG_READ;  /* read register prefix */
        hdw->cmd_buffer[1] = 0;
        hdw->cmd_buffer[2] = 0;
        hdw->cmd_buffer[3] = 0;
        LOCK_TAKE(hdw->ctl_lock); do {
                pvr2_trace(PVR2_TRACE_INIT,"Requesting uproc hard reset");
                hdw->flag_ok = !0;
-               hdw->cmd_buffer[0] = 0xdd;
+               hdw->cmd_buffer[0] = FX2CMD_DEEP_RESET;
                status = pvr2_send_request(hdw,hdw->cmd_buffer,1,NULL,0);
        } while (0); LOCK_GIVE(hdw->ctl_lock);
        return status;
        int status;
        LOCK_TAKE(hdw->ctl_lock); do {
                pvr2_trace(PVR2_TRACE_INIT,"Requesting powerup");
-               hdw->cmd_buffer[0] = 0xde;
+               hdw->cmd_buffer[0] = FX2CMD_POWER_ON;
                status = pvr2_send_request(hdw,hdw->cmd_buffer,1,NULL,0);
        } while (0); LOCK_GIVE(hdw->ctl_lock);
        return status;
 {
        int status;
        LOCK_TAKE(hdw->ctl_lock); do {
-               hdw->cmd_buffer[0] = (runFl ? 0x36 : 0x37);
+               hdw->cmd_buffer[0] =
+                       (runFl ? FX2CMD_STREAMING_ON : FX2CMD_STREAMING_OFF);
                status = pvr2_send_request(hdw,hdw->cmd_buffer,1,NULL,0);
        } while (0); LOCK_GIVE(hdw->ctl_lock);
        if (!status) {
 {
        int result;
        LOCK_TAKE(hdw->ctl_lock); do {
-               hdw->cmd_buffer[0] = 0xeb;
+               hdw->cmd_buffer[0] = FX2CMD_GET_EEPROM_ADDR;
                result = pvr2_send_request(hdw,
                                           hdw->cmd_buffer,1,
                                           hdw->cmd_buffer,1);
 
 #include "pvrusb2-i2c-core.h"
 #include "pvrusb2-hdw-internal.h"
 #include "pvrusb2-debug.h"
+#include "pvrusb2-fx2-cmd.h"
 
 #define trace_i2c(...) pvr2_trace(PVR2_TRACE_I2C,__VA_ARGS__)
 
        memset(hdw->cmd_buffer, 0, sizeof(hdw->cmd_buffer));
 
        /* Set up command buffer for an I2C write */
-       hdw->cmd_buffer[0] = 0x08;      /* write prefix */
+       hdw->cmd_buffer[0] = FX2CMD_I2C_WRITE;      /* write prefix */
        hdw->cmd_buffer[1] = i2c_addr;  /* i2c addr of chip */
        hdw->cmd_buffer[2] = length;    /* length of what follows */
        if (length) memcpy(hdw->cmd_buffer + 3, data, length);
        memset(hdw->cmd_buffer, 0, sizeof(hdw->cmd_buffer));
 
        /* Set up command buffer for an I2C write followed by a read */
-       hdw->cmd_buffer[0] = 0x09;  /* read prefix */
+       hdw->cmd_buffer[0] = FX2CMD_I2C_READ;  /* read prefix */
        hdw->cmd_buffer[1] = dlen;  /* arg length */
        hdw->cmd_buffer[2] = rlen;  /* answer length. Device will send one
                                       more byte (status). */
 
        /* Issue a command to the FX2 to read the IR receiver. */
        LOCK_TAKE(hdw->ctl_lock); do {
-               hdw->cmd_buffer[0] = 0xec;
+               hdw->cmd_buffer[0] = FX2CMD_GET_IR_CODE;
                stat = pvr2_send_request(hdw,
                                         hdw->cmd_buffer,1,
                                         hdw->cmd_buffer,4);
 
        {
                struct v4l2_tuner *vt = (struct v4l2_tuner *)arg;
 
-               if (vt->index != 0)
-                       break;
+               if (vt->index != 0) break; /* Only answer for the 1st tuner */
 
                pvr2_hdw_execute_tuner_poll(hdw);
                ret = pvr2_hdw_get_tuner_status(hdw,vt);