int scc_offset;
        struct renesas_sdhi_scc *taps;
        int taps_num;
+       unsigned int max_blk_count;
+       unsigned short max_segs;
 };
 
 int renesas_sdhi_probe(struct platform_device *pdev,
 
                mmc_data->capabilities |= of_data->capabilities;
                mmc_data->capabilities2 |= of_data->capabilities2;
                mmc_data->dma_rx_offset = of_data->dma_rx_offset;
+               mmc_data->max_blk_count = of_data->max_blk_count;
+               mmc_data->max_segs = of_data->max_segs;
                dma_priv->dma_buswidth = of_data->dma_buswidth;
                host->bus_shift = of_data->bus_shift;
        }
 
 
        mmc->caps |= MMC_CAP_4_BIT_DATA | pdata->capabilities;
        mmc->caps2 |= pdata->capabilities2;
-       mmc->max_segs = 32;
+       mmc->max_segs = pdata->max_segs ? : 32;
        mmc->max_blk_size = 512;
-       mmc->max_blk_count = (PAGE_SIZE / mmc->max_blk_size) *
-               mmc->max_segs;
+       mmc->max_blk_count = pdata->max_blk_count ? :
+               (PAGE_SIZE / mmc->max_blk_size) * mmc->max_segs;
        mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
        mmc->max_seg_size = mmc->max_req_size;
 
 
        unsigned int                    cd_gpio;
        int                             alignment_shift;
        dma_addr_t                      dma_rx_offset;
+       unsigned int                    max_blk_count;
+       unsigned short                  max_segs;
        void (*set_pwr)(struct platform_device *host, int state);
        void (*set_clk_div)(struct platform_device *host, int state);
 };