summaryrefslogtreecommitdiff
path: root/backend/pixma
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2023-02-12 17:36:29 +0100
committerJörg Frings-Fürst <debian@jff.email>2023-02-12 17:36:29 +0100
commit882fd010527b8d8823f09e19edbed3746265fa08 (patch)
treebe5c7cace6697afc753c152d13ad5145d0884a42 /backend/pixma
parent527bedac30eb120915718eb7997e6dacd583512e (diff)
parente0d94cf4d39395df1e2c6bb4d967200298c13881 (diff)
Merge branch 'feature/upstream' into develop
Diffstat (limited to 'backend/pixma')
-rw-r--r--backend/pixma/pixma.c2
-rw-r--r--backend/pixma/pixma_bjnp.c2
-rw-r--r--backend/pixma/pixma_common.c2
-rw-r--r--backend/pixma/pixma_imageclass.c23
-rw-r--r--backend/pixma/pixma_mp150.c61
-rw-r--r--backend/pixma/pixma_mp730.c26
6 files changed, 90 insertions, 26 deletions
diff --git a/backend/pixma/pixma.c b/backend/pixma/pixma.c
index 31e71f0..72385b2 100644
--- a/backend/pixma/pixma.c
+++ b/backend/pixma/pixma.c
@@ -899,7 +899,7 @@ print_scan_param (int level, const pixma_scan_param_t * sp)
pixma_dbg (level, " dpi=%ux%u offset=(%u,%u) dimension=%ux%u\n",
sp->xdpi, sp->ydpi, sp->x, sp->y, sp->w, sp->h);
pixma_dbg (level, " gamma=%f gamma_table=%p source=%d\n", sp->gamma,
- sp->gamma_table, sp->source);
+ (void *) sp->gamma_table, sp->source);
pixma_dbg (level, " adf-wait=%d\n", sp->adf_wait);
}
#endif
diff --git a/backend/pixma/pixma_bjnp.c b/backend/pixma/pixma_bjnp.c
index 63dd56d..75ad658 100644
--- a/backend/pixma/pixma_bjnp.c
+++ b/backend/pixma/pixma_bjnp.c
@@ -994,7 +994,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
/* send broadcasts to the broadcast address of the interface */
- memcpy(dest_sa, broadcast_sa, sa_size(dest_sa) );
+ memcpy(dest_sa, broadcast_sa, sa_size(broadcast_sa) );
/* we fill port when we send the broadcast */
dest_sa -> ipv4.sin_port = htons(0);
diff --git a/backend/pixma/pixma_common.c b/backend/pixma/pixma_common.c
index 24912b8..f626db1 100644
--- a/backend/pixma/pixma_common.c
+++ b/backend/pixma/pixma_common.c
@@ -877,7 +877,7 @@ pixma_scan (pixma_t * s, pixma_scan_param_t * sp)
sp->line_size, sp->image_size, sp->channels, sp->depth);
pixma_dbg (3, " dpi=%ux%u offset=(%u,%u) dimension=%ux%u\n",
sp->xdpi, sp->ydpi, sp->x, sp->y, sp->w, sp->h);
- pixma_dbg (3, " gamma=%f gamma_table=%p source=%d\n", sp->gamma, sp->gamma_table, sp->source);
+ pixma_dbg (3, " gamma=%f gamma_table=%p source=%d\n", sp->gamma, (void *) sp->gamma_table, sp->source);
pixma_dbg (3, " threshold=%d threshold_curve=%d\n", sp->threshold, sp->threshold_curve);
pixma_dbg (3, " adf-wait=%d\n", sp->adf_wait);
pixma_dbg (3, " ADF page count: %d\n", sp->adf_pageid);
diff --git a/backend/pixma/pixma_imageclass.c b/backend/pixma/pixma_imageclass.c
index ae06180..6a485de 100644
--- a/backend/pixma/pixma_imageclass.c
+++ b/backend/pixma/pixma_imageclass.c
@@ -77,6 +77,7 @@
#define D420_PID 0x26ef
#define MF3200_PID 0x2684
#define MF6500_PID 0x2686
+#define IR1018_PID 0x269d
/* generation 2 scanners (>=0x2707) */
#define MF8300_PID 0x2708
#define MF4500_PID 0x2736
@@ -88,8 +89,6 @@
#define MF4700_PID 0x2774
#define MF8200_PID 0x2779
/* the following are all untested */
-#define MF5630_PID 0x264e
-#define MF5650_PID 0x264f
#define MF8100_PID 0x2659
#define MF5880_PID 0x26f9
#define MF6680_PID 0x26fa
@@ -243,6 +242,7 @@ activate (pixma_t * s, uint8_t x)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
return iclass_exec (s, &mf->cb, 1);
break;
default:
@@ -275,6 +275,7 @@ select_source (pixma_t * s)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
return iclass_exec (s, &mf->cb, 0);
break;
default:
@@ -310,6 +311,7 @@ send_scan_param (pixma_t * s)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
return iclass_exec (s, &mf->cb, 0);
break;
default:
@@ -336,7 +338,8 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
expected_len = (mf->generation >= 2 ||
s->cfg->pid == MF4600_PID ||
s->cfg->pid == MF6500_PID ||
- s->cfg->pid == MF8030_PID) ? 512 : hlen;
+ s->cfg->pid == MF8030_PID ||
+ s->cfg->pid == IR1018_PID) ? 512 : hlen;
mf->cb.reslen = pixma_cmd_transaction (s, mf->cb.buf, 11, mf->cb.buf, expected_len);
if (mf->cb.reslen >= hlen)
{
@@ -347,7 +350,8 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
if (mf->generation >= 2 ||
s->cfg->pid == MF4600_PID ||
s->cfg->pid == MF6500_PID ||
- s->cfg->pid == MF8030_PID)
+ s->cfg->pid == MF8030_PID ||
+ s->cfg->pid == IR1018_PID)
{ /* 32bit size */
*datalen = mf->cb.reslen - hlen;
*size = (*datalen + hlen == 512) ? pixma_get_be32 (mf->cb.buf + 4) - *datalen : *size;
@@ -372,7 +376,8 @@ read_image_block (pixma_t * s, uint8_t * data, unsigned size)
maxchunksize = MAX_CHUNK_SIZE * ((mf->generation >= 2 ||
s->cfg->pid == MF4600_PID ||
s->cfg->pid == MF6500_PID ||
- s->cfg->pid == MF8030_PID) ? 4 : 1);
+ s->cfg->pid == MF8030_PID ||
+ s->cfg->pid == IR1018_PID) ? 4 : 1);
while (size)
{
if (size >= maxchunksize)
@@ -410,6 +415,7 @@ read_error_info (pixma_t * s, void *buf, unsigned size)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
error = iclass_exec (s, &mf->cb, 0);
break;
default:
@@ -790,7 +796,8 @@ iclass_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
mf->generation == 1 &&
s->cfg->pid != MF4600_PID &&
s->cfg->pid != MF6500_PID &&
- s->cfg->pid != MF8030_PID)
+ s->cfg->pid != MF8030_PID &&
+ s->cfg->pid != IR1018_PID)
{
/* color and not MF46xx or MF65xx */
pack_rgb (mf->blkptr, n, mf->raw_width, mf->lineptr);
@@ -948,14 +955,14 @@ const pixma_config_t pixma_iclass_devices[] = {
DEV ("Canon i-SENSYS MF8200C Series", "MF8200C", MF8200_PID, 600, 300, 640, 1050, PIXMA_CAP_ADF),
DEV ("Canon i-SENSYS MF8300 Series", "MF8300", MF8300_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
DEV ("Canon imageCLASS D530", "D530", D530_PID, 600, 0, 640, 877, 0),
+ DEV ("Canon imageRUNNER 1018/1022/1023", "iR1018/1022/1023", IR1018_PID, 600, 0, 640, 877, PIXMA_CAP_ADFDUP),
/* FIXME: the following capabilities all need updating/verifying */
- DEV ("Canon imageCLASS MF5630", "MF5630", MF5630_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
- DEV ("Canon laserBase MF5650", "MF5650", MF5650_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon imageCLASS MF8170c", "MF8170c", MF8100_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon imageClass MF8030", "MF8030", MF8030_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon i-SENSYS MF5880dn", "MF5880", MF5880_PID, 600, 0, 640, 877, PIXMA_CAP_ADFDUP),
DEV ("Canon i-SENSYS MF6680dn", "MF6680", MF6680_PID, 600, 0, 640, 877, PIXMA_CAP_ADFDUP),
DEV ("Canon imageRUNNER 1133", "iR1133", IR1133_PID, 600, 0, 637, 877, PIXMA_CAP_ADFDUP), /* max. w = 216mm */
+ DEV ("Canon imageRUNNER 1133A", "imageRUNNER1133", IR1133_PID, 600, 0, 637, 877, PIXMA_CAP_ADFDUP), /* max. w = 216mm */
DEV ("Canon i-SENSYS MF5900 Series", "MF5900", MF5900_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
DEV ("Canon i-SENSYS MF8500C Series", "MF8500C", MF8500_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
DEV ("Canon i-SENSYS MF6100 Series", "MF6100", MF6100_PID, 600, 300, 640, 1050, PIXMA_CAP_ADFDUP),
diff --git a/backend/pixma/pixma_mp150.c b/backend/pixma/pixma_mp150.c
index f3d5934..171eccf 100644
--- a/backend/pixma/pixma_mp150.c
+++ b/backend/pixma/pixma_mp150.c
@@ -230,7 +230,7 @@
#define G3000_PID 0x1794
#define G2000_PID 0x1795
#define TS9000_PID 0x179f
-#define TS8000_PID 0x1800
+#define TS8000_PID 0x1800 /* tested: TS8030 */
#define TS6000_PID 0x1801
#define TS5000_PID 0x1802
#define MG3000_PID 0x180b
@@ -308,7 +308,7 @@
#define G2060_PID 0x18C1
#define G3020_PID 0x18BF
#define TS7430_PID 0x18B2
-#define XK90_PID 0x18B6
+#define XK90_PID 0x18B6 /* tested */
#define TS8430_PID 0x18B5
#define TR7600_PID 0x18AA
#define TR8600_PID 0x18AD
@@ -316,6 +316,27 @@
#define TS6400_PID 0x18D3
#define TS7400_PID 0x18D7
+/* 2021 new device (untested) */
+#define TS5350i_PID 0x18D9
+#define G600_PID 0x18D5
+#define TS3500_PID 0x18D4
+#define TR4600_PID 0x18DA
+#define E4500_PID 0x18DB
+#define TR4700_PID 0x18DC
+#define XK500_PID 0x18DF
+#define TS8530_PID 0x18E0
+#define XK100_PID 0x18E2
+#define TS7530_PID 0x18E1
+#define TS7450i_PID 0x18F7
+#define GX6000_PID 0x18A6
+#define GX7000_PID 0x18A8
+#define TS5400_PID 0x18D8
+
+/* 2022 new device (untested) */
+#define TS2400_PID 0x1108
+#define TS2600_PID 0x1107
+
+
/* Generation 4 XML messages that encapsulates the Pixma protocol messages */
#define XML_START_1 \
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>\
@@ -693,7 +714,7 @@ send_scan_param (pixma_t * s)
if (mp->generation <= 2)
{
- PDBG (pixma_dbg (4, "*send_scan_param gen. 1-2 ***** Setting: xdpi=%hi ydpi=%hi x=%i y=%i wx=%i ***** \n",
+ PDBG (pixma_dbg (4, "*send_scan_param gen. 1-2 ***** Setting: xdpi=%u ydpi=%u x=%i y=%i wx=%i ***** \n",
xdpi, ydpi, x-xs, y, wx));
data = pixma_newcmd (&mp->cb, cmd_scan_param, 0x30, 0);
pixma_set_be16 (xdpi | 0x8000, data + 0x04);
@@ -715,7 +736,7 @@ send_scan_param (pixma_t * s)
}
else
{
- PDBG (pixma_dbg (4, "*send_scan_param gen. 3+ ***** Setting: xdpi=%hi ydpi=%hi x=%i xs=%i y=%i wx=%i h=%i ***** \n",
+ PDBG (pixma_dbg (4, "*send_scan_param gen. 3+ ***** Setting: xdpi=%u ydpi=%u x=%i xs=%i y=%i wx=%i h=%i ***** \n",
xdpi, ydpi, x, xs, y, wx, h));
data = pixma_newcmd (&mp->cb, cmd_scan_param_3, 0x38, 0);
data[0x00] = (is_scanning_from_adf (s)) ? 0x02 : 0x01;
@@ -929,6 +950,7 @@ handle_interrupt (pixma_t * s, int timeout)
* poll event with 'scanimage -A' */
if (s->cfg->pid == MG5300_PID
|| s->cfg->pid == MG5400_PID
+ || s->cfg->pid == MG5700_PID
|| s->cfg->pid == MG6200_PID
|| s->cfg->pid == MG6300_PID
|| s->cfg->pid == MX340_PID
@@ -1147,7 +1169,7 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib)
n = s->param->xdpi / 600;
else
n = s->param->xdpi / 2400;
- if (s->cfg->pid == MP600_PID || s->cfg->pid == MP600R_PID)
+ if (s->cfg->pid == MP600_PID || s->cfg->pid == MP600R_PID || s->cfg->pid == XK90_PID)
n = s->param->xdpi / 1200;
m = (n > 0) ? s->param->wx / n : 1;
@@ -1188,6 +1210,7 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib)
|| s->cfg->pid == MP230_PID
|| s->cfg->pid == MX470_PID
|| s->cfg->pid == MX510_PID
+ || s->cfg->pid == XK90_PID
|| s->cfg->pid == MX520_PID))
reorder_pixels (mp->linebuf, sptr, c, n, m, s->param->wx, line_size);
@@ -1641,7 +1664,7 @@ mp150_finish_scan (pixma_t * s)
else
PDBG (pixma_dbg (4, "*mp150_finish_scan***** wait for next page from ADF *****\n"));
- mp->state = state_idle;
+ mp->state = state_idle;
/* fall through */
case state_idle:
break;
@@ -1906,9 +1929,9 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA TS8330 Series", "TS8330", TS8330_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA XK60 Series", "XK60", XK60_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA TS6330 Series", "TS6330", TS6330_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA TS3300 Series", "TS3300", TS3300_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS3300 Series", "TS3300", TS3300_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E3300 Series", "E3300", E3300_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA TS3400 Series", "TS3400", TS3400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS3400 Series", "TS3400", TS3400_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E3400 Series", "E3400", E3400_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA TR7000 Series", "TR7000", TR7000_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA G2020", "G2020", G2020_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
@@ -1923,8 +1946,26 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA TR8630 Series", "TR8630", TR8630_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA TS6400 Series", "TS6400", TS6400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA TS7400 Series", "TS7400", TS7400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA G7080 Series", "G7080", G7080_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA GM4080", "GM4080", GM4080_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA G7080 Series", "G7080", G7080_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA GM4080", "GM4080", GM4080_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS5350i Series", "TS5350i", TS5350i_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA G600", "G600", G600_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS3500 Series", "TS3500", TS3500_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ /* ToDo: max. scan resolution = 600x1200dpi */
+ DEVICE ("Canon PIXMA TR4600 Series", "TR4600", TR4600_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF | PIXMA_CAP_ADF_JPEG),
+ /* ToDo: max. scan resolution = 600x1200dpi */
+ DEVICE ("Canon PIXMA TR4700 Series", "TR4700", TR4700_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF | PIXMA_CAP_ADF_JPEG),
+ DEVICE ("Canon PIXMA E4500 Series", "E4500", E4500_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXUS XK500 Series", "XK500", XK500_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS8530 Series", "TS8530", TS8530_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXUS XK100 Series", "XK100", XK100_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS7530 Series", "TS7530", TS7530_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS7450i Series", "TS7450i", TS7450i_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA GX6000 Series", "GX6000", GX6000_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA GX7000 Series", "GX7000", GX7000_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS5400 Series", "TS5400", TS5400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS2400 Series", "TS2400", TS2400_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS2600 Series", "TS2600", TS2600_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
END_OF_DEVICE_LIST
};
diff --git a/backend/pixma/pixma_mp730.c b/backend/pixma/pixma_mp730.c
index 3a436d7..1fc9a74 100644
--- a/backend/pixma/pixma_mp730.c
+++ b/backend/pixma/pixma_mp730.c
@@ -76,6 +76,8 @@
#define MP740_PID 0x264c /* Untested */
#define MP710_PID 0x264d
+#define MF5630_PID 0x264e /* Untested */
+#define MF5650_PID 0x264f
#define MF5730_PID 0x265d /* Untested */
#define MF5750_PID 0x265e /* Untested */
#define MF5770_PID 0x265f
@@ -318,6 +320,8 @@ handle_interrupt (pixma_t * s, int timeout)
case MP370_PID:
case MP375R_PID:
case MP390_PID:
+ case MF5630_PID:
+ case MF5650_PID:
case MF5730_PID:
case MF5750_PID:
case MF5770_PID:
@@ -372,6 +376,8 @@ has_ccd_sensor (pixma_t * s)
s->cfg->pid == MP370_PID ||
s->cfg->pid == MP375R_PID ||
s->cfg->pid == MP390_PID ||
+ s->cfg->pid == MF5630_PID ||
+ s->cfg->pid == MF5650_PID ||
s->cfg->pid == MF5730_PID ||
s->cfg->pid == MF5750_PID ||
s->cfg->pid == MF5770_PID);
@@ -415,6 +421,8 @@ step1 (pixma_t * s)
{
switch (s->cfg->pid)
{
+ case MF5630_PID:
+ case MF5650_PID:
case MF5730_PID:
case MF5750_PID:
case MF5770_PID:
@@ -424,10 +432,10 @@ step1 (pixma_t * s)
int tmo = 10; /* like Windows driver, 10 sec CCD calibration ? */
while (--tmo >= 0)
{
- error = handle_interrupt (s, 1000); \
- if (s->cancel) \
- return PIXMA_ECANCELED; \
- if (error != PIXMA_ECANCELED && error < 0) \
+ error = handle_interrupt (s, 1000);
+ if (s->cancel)
+ return PIXMA_ECANCELED;
+ if (error != PIXMA_ECANCELED && error < 0)
return error;
PDBG (pixma_dbg (2, "CCD Calibration ends in %d sec.\n", tmo));
}
@@ -443,6 +451,8 @@ step1 (pixma_t * s)
switch (s->cfg->pid)
{
+ case MF5630_PID:
+ case MF5650_PID:
case MF5730_PID:
case MF5750_PID:
case MF5770_PID:
@@ -696,6 +706,8 @@ mp730_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
if (n != 0)
{
if (s->param->channels != 1 &&
+ s->cfg->pid != MF5630_PID &&
+ s->cfg->pid != MF5650_PID &&
s->cfg->pid != MF5730_PID &&
s->cfg->pid != MF5750_PID &&
s->cfg->pid != MF5770_PID &&
@@ -751,7 +763,9 @@ mp730_finish_scan (pixma_t * s)
(s->param->source == PIXMA_SOURCE_ADF ||
s->param->source == PIXMA_SOURCE_ADFDUP) &&
has_paper (s) &&
- (s->cfg->pid == MF5730_PID ||
+ (s->cfg->pid == MF5630_PID ||
+ s->cfg->pid == MF5650_PID ||
+ s->cfg->pid == MF5730_PID ||
s->cfg->pid == MF5750_PID ||
s->cfg->pid == MF5770_PID ||
s->cfg->pid == IR1020_PID))
@@ -833,6 +847,8 @@ const pixma_config_t pixma_mp730_devices[] = {
DEVICE ("PIXMA MP730", "MP730", MP730_PID, 1200, 637, 868, PIXMA_CAP_ADF | PIXMA_CAP_LINEART),
DEVICE ("PIXMA MP740", "MP740", MP740_PID, 1200, 637, 868, PIXMA_CAP_ADF | PIXMA_CAP_LINEART),
+ DEVICE ("Canon imageCLASS MF5630", "MF5630", MF5630_PID, 1200, 636, 868, PIXMA_CAP_ADF),
+ DEVICE ("Canon laserBase MF5650", "MF5650", MF5650_PID, 1200, 636, 868, PIXMA_CAP_ADF),
DEVICE ("Canon imageCLASS MF5730", "MF5730", MF5730_PID, 1200, 636, 868, PIXMA_CAP_ADF),
DEVICE ("Canon imageCLASS MF5750", "MF5750", MF5750_PID, 1200, 636, 868, PIXMA_CAP_ADF),
DEVICE ("Canon imageCLASS MF5770", "MF5770", MF5770_PID, 1200, 636, 868, PIXMA_CAP_ADF),